§ 8 Sessies in PHP
8.1 Wat is een sessie?
Sessies maken het mogelijk om variabelen te gebruiken binnen een hele website. Op het moment dat een bezoeker een website bezoekt wordt een sessie id aangemaakt. Een dergelijk id is een uniek nummer. Het unieke nummer komt te vervallen op het moment dat de bezoeker uitlogt, de browser zal afsluiten of een op de server van te voren ingestelde tijd geen actie meer heeft ondernomen op de website. Je kunt met sessions werken via cookies of via de session_id in de URL.
8.2 Werking van sessies
Een sessie wordt gestart door gebruik te maken van de functie session_start(). Dan wordt er voor iedere bezoeker een uniek sessie_ID aangemaakt dat gedurende het verblijf op de website wordt meegenomen. Doordat je nu zo'n uniek ID hebt is het mogelijk gegevens op te slaan in de vorm van sessievariabelen. Hiervoor wordt de PHP-variabele $_SESSION[] gebruikt. Je kunt sessievariabelen ook wissen door de functie unset(). Tot slot is het mogelijk om de sessie te vernietigen waarbij alle sessievariabelen, inclusief het sessie_ID worden verwijderd. Daarvoor gebruik je de functie session_destroy().
8.3 Het nut van sessies
Veiligheid
Pagina's kunnen alleen maar ingezien worden indien er ingelogd is en er een bekende gebruikersnaam als sessionvariabele op de server en cliënt aanwezig is.
Behouden van (ingevulde) informatieHandig als er meerdere pagina's op een webserver moeten worden bekeken. Eerder ingevulde gegevens raken dan niet verloren maar zijn opgeslagen in sessionvariabelen. Erg handig, o.a. bij online Webshops:
- eerst verschillende pagina's bekijken,
- artikelen in winkelmandje stoppen,
- tussentijdse berekeningen uitvoeren,
- gegevens in formulieren invullen,
- eventuele wijzigingen doorvoeren,
- en tot slot afrekenen.
8.4 Functies die een rol spelen bij sessies
Een aantal functies die van belang zijn bij sessies zijn de volgende:
functie | betekenis |
session_start() | Opent nieuwe sessie of stelt gegevens bestaande sessie beschikbaar |
session_id() | Geeft huidige session ID terug of je kunt zelf een ID meegeven als String voor een sessie |
session_register() | Registreert een variabele als sessionvariabele. Let op! Geen $-teken gebruiken. Resultaat is een array |
session_is_registered() | Controleert of een sessionvariabele reeds bestaat. Boolean (True of False) als resultaat |
session_unregister() | Verwijdert een variabele uit de bestaande session-array. De sessie blijft gewoon bestaan |
session_unset() | Alle geregistreerde variabelen komen vrij, de sessie blijft bestaan, alleen de waarden van de variabelen zijn weg |
session_destroy() | Verwijdert alle data voor een sessie. De sessie is daarmee ten einde |
8.5 Een eenvoudig voorbeeld
<?php //dit is het bestand sessie_1.php session_start(); $gebruikersnaam = "Piet" ; //sessievariabele registreren session_register("gebruikersnaam"); ?> <html> <head> <title>Sessievariable tijdelijk opslaan</title> </head> <body> <h2>Uw gebruikersnaam voor deze sessie is: <?php print ($_SESSION["gebruikersnaam"]. "<br>"); $session_id = session_id(); print ("Het session_id = $session_id"); </h2> </body> </html>
Het resultaat ziet er zo uit:

Er kunnen foutmeldingen optreden. Deze kun je voorkomen door:
- In php.ini register_globals = Off vervangen door On. Let er dan wel op dat er veiligheidsproblemen kunnen optreden zoals SQL-injection!
- De browser een keer te verversen met F5.