login  Naam:   Wachtwoord: 
Registreer je!
 Nota's op tutorial:

Tutorials > PHP > Simpel inlog script met sessies
Pagina:

Reacties op de tutorial Simpel inlog script met sessies


Offline  Wim
Gepost op: 16 februari 2009 - 20:25
Crew algemeen

Citaat:
e session_start MOET VOOR ELKE OUTPUT


Correcter is eigenlijk om te zeggen dat session_start aangeroepen moet worden voordat er headers verzonden worden.

Headers kunnen op meerdere manieren verzonden worden; via de welbekende functie PHP.net: header, maar ook dmv een cookie te setten verstuur je een header! Als je output verzend worden er ook headers verstuurd!

Offline  nick5556
Gepost op: 17 februari 2009 - 10:24
PHP beginner

De code opzich is goed, alleen gebruik de volgende keer spaties.. Dan word je code een stuk netter, ook met het if statement doe jij dit:
  1. if($blabla == $blablabla){echo"bla";}

Als je dit doet, is opzich niks mis mee, maar het is netter als je dit doet:
  1. if($blabla == $blablabla)
  2. {
  3. echo "bla";
  4. }


Dit was mijn aanmerking 

Nick 

Offline  Martijn
Gepost op: 18 februari 2009 - 12:29
Crew PHP

persoonlijk geef ik de voorkeur aan manier 1 uit je stukje, voor korte statements. Ik vind bij code 2 dat regel 2 en 4 nutteloos zijn omdat er maar 1 dingetje staat.

Maar ik snap wat je bedoeld, zal kijken of ik er een paar wat 'netter' kan maken

Offline  kilian
Gepost op: 24 mei 2009 - 19:04
Lid

Als er maar 1 dingetje staat kan je in PHP ook de { weglaten.
  1. <?php
  2. if (1=1) //voorwaarde
  3. echo 'juist';
  4. else
  5. echo 'fout';
  6. echo 'wordt altijd uitgevoerd, of 1 nu 1 is, of niet.';

Offline  Martijn
Gepost op: 25 mei 2009 - 10:35
Crew PHP

correct,maar als ik nu een tweede dingetje zou willen toevoegen moet ik er weer wqel gaan neerzetten, en om het simpel te houden laat ik het liever zo 

Offline  Bart
Gepost op: 16 juni 2009 - 14:10
PHP expert

kilian schreef:
Als er maar 1 dingetje staat kan je in PHP ook de { weglaten.
[..code..]
Is het niet zo dat wanneer je meer dan 1 uitvoerende regel hebt, wel gebruik moet maken van accolades?
(Zie else-lus van je statement 2x echo)

Offline  Martijn
Gepost op: 16 juni 2009 - 17:53
Crew PHP

het is in theorie sneller om altijd { te gebruiken, al zal het niet veel helpen. Verder vind ik de code die je als voorbeeld gaf verschrikkelijk onduidelijk, zeker als je een beginner bent snap je niet wat wel en wat niet word gedaan.

en ja, met meerdere regels moet je idd wel accolades doen 

Offline  Elvendertig
Gepost op: 13 juli 2009 - 19:23
Nieuw lid

Ik kamp met het volgende probleem:

Citaat:
Oneindige lus

Firefox heeft vastgesteld dat de server het verzoek voor dit adres doorverwijst op een manier die nooit zal eindigen.

De browser is gestopt met pogen het opgevraagde item op te halen. De website verwijst het verzoek door op een manier die nooit zal worden voltooid.

* Hebt u cookies die nodig zijn voor deze website uitgeschakeld of geblokkeerd?
* NOOT: als het accepteren van cookies van deze website het probleem niet oplost is het waarschijnlijk een serverconfiguratieprobleem en niet uw computer.


[crew- dit stukje verwijderd, zie volgende reactie]

Weet iemand wat er hier scheelt? Ik zit er al een hele dag op te zoeken en ik zou niet weten wat ..
alvast bedankt !

Offline  Martijn
Gepost op: 13 juli 2009 - 19:50
Crew PHP

Zo'n loop komt omdat de header()'s naar elkaar blijven verwijzen.

Dan word er ergens een stukje verkeerd gedaan. Dit kan zijn bij de pagina waar je inlogd, maar ook bij de pagina waar het word weergegeven

Offline  Waflix
Gepost op: 03 augustus 2011 - 21:16
Lid

1. Informatie over het verbinden met de database.
2. Incorrecte code: index.php
  1. // Deze code kun je vinden in gedeelte 4 (PHP), in de laatste codebox.
  2. WHERE naam='".$_POST['loginNaam']."' AND password='".md5($_POST['loginPass'])."'
  3. // Maar dit klopt niet, en hoort dit te zijn:
  4. WHERE naam='".$_POST['loginNaam']."' AND wachtwoord='".md5($_POST['loginPass'])."'
  5. // Aan het begin van de tutorial wordt vertelt dat je in de database een kolom moet aanmaken met de naam 'wachtwoord', en niet 'password.'

3. Incorrecte code: index.php
  1. // Deze code kun je vinden in gedeelte 4 (PHP), in de laatste codebox.
  2. $sLid = mysql_query("SELECT id,naam FROM leden
  3. // Maar dit klopt niet, en hoort dit te zijn:
  4. $sLid = mysql_query("SELECT id,naam FROM members
  5. // Aan het begin van de tutorial wordt vertelt dat je in de database een tabel moet aanmaken met de naam 'members', en niet 'leden'.

Offline  phpfreak
Gepost op: 16 oktober 2013 - 23:34
PHP beginner

15 minuten lijkt mij toch ook wel een heel korte sessie om ingelogged te blijven, en ik zou ook cookies gebruiken om het lid de optie te geven ingelogged te blijven.

Offline  Martijn
Gepost op: 08 november 2013 - 13:44
Crew PHP

15 minuten is inderdaad niet zo lang, maar dit is een demo. 15 minuten is een periode waar je redelijkerwijs op kan wachten om te kijken of het verloopt. Het is volledig aan de gebruiker uiteraard om dit aan te passen naar de wensen.

Dat opslaan in een cookie is een leuke optie, maar niet voor deze tutorial. Het gaat me hier alleen om een basis inlogscript, niet allemaal toeters en bellen eromheen. Deze tutorial is om te demonstreren hoe de kern werkt, niet om te copy/pasten en een leuk inlogsysteempje te hebben 

Offline  Thomas
Gepost op: 22 augustus 2014 - 19:42
Moderator

TL;DR - deze scriptfragmenten zijn NIET veilig. Je kunt inloggen met een willekeurige bestaande <username> en een willekeurig niet-leeg wachtwoord door het volgende in te vullen als username (aanname: magic_quotes_gpc uit):
<username>' OR '1

Je query wordt dan:
SELECT id,naam
FROM members
WHERE naam='<username>' OR '1'
AND wachtwoord='<willekeurig>'
LIMIT 1

Daarnaast is het formulier gevoelig voor CSRF (Cross Site Request Forgeries).

Deze tutorial is inmiddels al enigszins gedateerd (februari 2009) en ook niet zo best, als ik eerlijk mag zijn. Het legt de essentie van dingen, waar tutorials toch eigenlijk voor bedoeld zijn, niet (goed) uit. Daarnaast bevat deze nog steeds fouten (waar Waflix - zie de eerste comment-pagina - al in 2011 op wees).

Dit is toch het minste wat je in een script of tutorial zou verwachten, dat zaken zodanig "kloppen" dat ze in ieder geval werken. Nog even los van of ze veilig zijn of niet.

Martijn schreef:
Deze tutorial is om te demonstreren hoe de kern werkt, niet om te copy/pasten en een leuk inlogsysteempje te hebben


Mja, maar dat is wellicht een beetje naïef. De code-passages zullen ongetwijfeld gecopypaste worden. Je hebt het de copypasters wel lastig gemaakt door het uiteindelijke script in stukjes te knippen en deze in willekeurige volgorde te behandelen.

Offline  Martijn
Gepost op: 26 augustus 2014 - 16:39
Crew PHP

Ben ik ook wel met je eens ja, een beetje updaten zou geen kwaad kunnen. Maar dit kan niet, of in ieder geval de vorige keer dat ik dit probeerde.

Ik heb een keuze moeten maken tussen veilig en duidelijk, heb gekozen voor duidelijk. Het doel van de tutorial was het principe snappen, niet dom code kopieren. Ik ben het met je eens dat het even een opfrisje nodig heeft, maar again, dat lukte dus niet (de vorige keer).

--- Edit: ----------------------
Mja, ik dacht even goodwill te tonen en een stukje aan te passen. Ik heb ALLEEN MAAR action="<?PHP_SELF?>" weggehaald, hele opmaak van dat blok weg. Heb het netaan weer terug gekregen. Zo ga ik heir niet aan werken. Zonde want gezien het aantal hits, een goed tutorialletje.

Offline  Thomas
Gepost op: 02 september 2014 - 15:24
Moderator

En daar heb jij weer gelijk in, er zitten een paar zeer vervelende bugs in het beheer.

Nu kun je hier wel enigszins omheen werken, maar dit is niet bepaald handig / gebruiksvriendelijk. Ik zal eens zien of ik hier op korte termijn iets aan kan doen, want ik vind dit zelf ook knetter irritant.

Toch / Alvast bedankt voor de moeite.

Offline  Thomas
Gepost op: 30 mei 2015 - 13:52
Moderator

De tutorial-functionaliteit is al enige tijd aangepast btw (dec 2014). Je kunt nu (als het goed is ) deze ongestraft aanpassen. Ik heb dit ook aangedurfd met mijn MySQLi tut, so you should be safe .

Pagina:

Enkel aanvullende informatie is welkom. Geen prijzende of afkeurende reacties.
 
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.057s