5.0 PDO en Sessies In deze les wordt een demo gegeven van hoe je met PDO en sessie variabelen een login kunt maken.Je leert gebruik maken van PDO en van PHP sessies. De wachtwoorden worden in deze les niet-encypted opgeslagen. Op deze manier kan je goed zien wat er gebeurt. Sessions Een sessie is wordt gestart met het php commando session_start(). Hiermee krijgt jouw browser sessie een stukje geheugen op de web server waar sessie variabelen worden opgeslagen. Elke keer als je session_start() aanroept wordt er eerst gekeken of er al een sessie bestaat, als die bestaat dan worden alle sessie variabelen door de server naar de browser gestuurd. Bestaat de sessie nog niet, dan wordt er een sessie opgestart en wordt er een stukje geheugen op de server voor jou gereserveerd. Binnen een sessie kan je met $_SESSION['naam']='xyz' de sessie variabele naam de waarde 'xyz' geven. Met session_destroy() kun je de sessie beëindigen. Alles sessie variabele worden dan weg gegooid. Als je een keer bent aangelogd dan zet je in een sessie variabele een indicator dat je bent aangelogd. Je kunt bijvoorbeeld jouw userid in een sessie variabele zetten. Dit userid wordt dan elke keer door de server nar jouw browser gestuurd, Login Je maakt dus een form waarin je een gebruikersnaam en wachtwoord aan de gebruiker opvraagt. Met PDO voer je een query uit en controleer je of de combinatie gebruikersnaam en wachtwoord klopt. Als dat zo is dan start je een sessie en zet je (bijvoorbeeld) het userid in een sessie variabele. Je hoeft dan geen wachtwoord te onthouden en telkens opnieuw aanloggen. De sessie variabele is een betrouwbare indicator dat je bent aangelogd. Database Maak een database test en draai het volgende SQL script: CREATE TABLE `users` ( `id` int(11) NOT NULL, `naam` varchar(100) NOT NULL, `wachtwoord` varchar(100) NOT NULL, `rol` int(11) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; INSERT INTO `users` (`id`, `naam`, `wachtwoord`, `rol`) VALUES (1, 'max', 'max', 1), (2, 'piet', 'piet', 1); ALTER TABLE `users` ADD PRIMARY KEY (`id`); ALTER TABLE `users` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3; COMMIT; De database heeft de tabel users waarin het id, naam, wachtwoord en rol (id) van de gebruiker staan. DB De verbinding van de database wordt in db.php gedefinieerd. getMessage(), "\n"; } ?> Landing page De index.html is alleen maar een landing page die een zeer eenvoudig menu laat zien.
Landing page - Login - Log out - Just another page"; var_dump($result); echo ""; session_start([ 'cookie_lifetime' => 86400,]); $_SESSION['id'] = $result['id']; $_SESSION['naam'] = $result['naam']; echo "