De bedoeling van dit forum lijkt me niet dat mensen alles vóór je gaan doen, maar dat je een leidraad in het ontwikkelproces krijgt. Een inlogsysteem met PHP maken is vrij eenvoudig, al kun je het net zo gecompliceerd maken als je zelf wilt.
Laten we uitgaan van een relatief simpel systeem, waarbij de gebruikers gegevens niet bewaard worden en je simpelweg inlogt met een sessie. We hebben een paar dingen nodig:
- Een database;
- Een registratieformulier;
- Een inlogscript;
- Een beschermde pagina.
Allereerst de database. Je site rust op de database, de site valt of staat ermee. Maak in je MySQL-database een tabel 'leden' aan, en zet er in ieder geval de volgende kolommen in:
- ID_LID;
- username [of e-mail];
- wachtwoord;
Wat je er verder nog aan informatie in wilt hebben is helemaal aan jou natuurlijk. Even geschreven vanuit dit simpele databaseontwerp heb je een heel simpel registratieformulier.
In het registratieformulier kan de gebruiker een username (of z'n e-mailadres) en een wachtwoord opgeven. Let wel: laat de gebruiker dit wachtwoord tweemaal invullen, zodat je later kunt checken of ze wel kloppen.
Vervolgens ga je de gegevens uit het formulier verwerken. Je moet maar eens googlen op 'form validation' om te kijken waarop je de velden allemaal kunt checken (of ze ingevuld zijn, of er een @ in het mailadres staat, etc.). Ga er vanuit dat alles gewoon is ingevuld en dat je met een vergelijking hebt gekeken of wachtwoord1 overeenkomt met wachtwoord2, dan is het nu zaak om alles in de database te zetten.
Echter; wachtwoorden sla je nooit op als 'hallo123' of 'pietje', maar die encrypt je. Het meest wordt daar MD5 voor gebruikt. MD5 zet een platte tekst om naar een onleesbare en onkraakbare reeks cijfers en letters, in het geval van 'hallo123' is dat '10b43971a8295f3720f38fbcdd9d6ac6'. Het omzetten naar MD5 doe je met een simpele PHP-functie.
Daarna zetten we alles écht in de database, met een simpele INSERT-query. Dat is klaar. Nu het inlogformulier, maar dat is eigenlijk het eenvoudigst uit het hele verhaal.
Maak een formulier met 2 velden: username en wachtwoord. Na de submit van de gebruiker maak je een SELECT-query waarbij je in de WHERE-clausule aangeeft het veld 'wachtwoord' bij gebruiker '$ingevoerdeusername' te willen.
Nu kan het zijn dat je niets terugkrijgt. Dat betekent dat de username niet in de database staat. Geef een melding hiervan, en stuur de gebruiker terug naar het inlogscherm.
Veronderstellend dat je wél gegevens terugkrijgt uit de database, heeft je gebruiker dus een geldig wachtwoord ingevuld. Nu moet je echter nog het wachtwoord checken.
Eerst zet je het ingevoerde wachtwoord om naar MD5, daarná vergelijk je 'm met de waarde uit de database. Als deze twee waardes hetzelfde zijn, heeft de gebruiker ingelogd met een geldige username, met het bijbehorende wachtwoord. Oftewel: jouw gebruiker mag jouw beschermde pagina bezoeken.
Om dit voor elkaar te krijgen, moet je sessievariabelen aanmaken, ofwel: variabelen die maar een bepaald aantal minuten (standaard 20) geldig blijven. Na 20 minuten is je gebruiker dus automatisch uitgelogd. Het enige dat je hoeft te doen, is de sessievariabelen aan te maken, en ze op inhoud te checken op je beveiligde pagina. Zijn de sessievariabelen er niet > doorsturen naar het inlogscherm. Zijn ze er wel > inhoud beschermde pagina laten zien.
Dat is eigenlijk een inlogsysteem in een notendop. Je kunt het natuurlijk aan alle kanten uitbreiden, met meerdere levels, een geoptimaliseerde beveiliging, etc. etc. etc.
En inderdaad, hier zit geen regel code bij. Mocht je bepaalde woorden uit dit verhaal niet begrijpen, typ dat woord dan in op Google en zet er 'php' achter. Je krijgt gegarandeerd resultaat, want hier staat het internet vol mee. Dit hele verhaal is bedoeld als steunpilaar, waarop je de code zelf kunt schrijven.
Het lijkt misschien vrij lastig, maar als je het een keer hebt gedaan is het enorm eenvoudig. Mij kost het maken van een inlogsysteem vanaf niets nu, pak 'm beet, 5 minuten.
Succes!