Uitleg sessies
Werken met sessies in PHP
Websites werken anders dan gewone programma’s. Elke keer dat je een pagina opent, stuurt de browser een nieuw verzoek (request) naar de server.
De server onthoudt normaal niets van vorige pagina’s.
Bijvoorbeeld:
- Je opent een pagina
- Je klikt op een knop
- De pagina wordt opnieuw geladen
Voor de server zijn dit drie losse bezoeken.
Soms wil je dat een website informatie onthoudt, bijvoorbeeld:
- een ingelogde gebruiker
- een winkelwagen
- een spelstand
Daarvoor gebruiken we sessies.
Wat is een sessie?
Een sessie is een plek op de server waar je gegevens van een gebruiker tijdelijk kunt opslaan.
Elke bezoeker krijgt een unieke sessie-id. De browser bewaart deze id in een cookie.
Daarmee kan de server herkennen:
"Dit is dezelfde gebruiker als daarnet."
Een sessie starten
Voordat je een sessie kunt gebruiken, moet je deze starten.
session_start();
Dit moet bovenaan het PHP-bestand staan, voordat er HTML wordt getoond.
Bijvoorbeeld:
<?php
session_start();
?>
<h1>Mijn pagina</h1>
Gegevens opslaan in een sessie
Sessies werken met de variabele:
$_SESSION
Dit is een array.
Je kunt er gegevens in opslaan:
$_SESSION['naam'] = 'Jan';
Nu onthoudt de server deze waarde.
Gegevens uit een sessie lezen
Je kunt de opgeslagen waarde weer gebruiken:
echo $_SESSION['naam'];
Uitvoer:
Jan
Controleren of iets in de sessie staat
Soms wil je eerst controleren of een waarde bestaat.
Dat kan met isset().
if (isset($_SESSION['naam'])) {
echo "Naam gevonden";
}
Een complete sessie variabele opslaan
Je kunt ook een array opslaan in een sessie.
Dat gaan we gebruiken voor het spel.
$_SESSION['spel'] = [
'start' => [
'blauw' => 0,
'geel' => 10,
'groen' => 20,
'rood' => 30
],
'stappen' => [
'blauw' => 0,
'geel' => 0,
'groen' => 0,
'rood' => 0
]
];
Nu staat de hele spelstand in de sessie.
Sessiedata bekijken (debuggen)
Tijdens het programmeren is het handig om de sessie te bekijken.
echo "<pre>";
print_r($_SESSION);
echo "</pre>";
<pre> zorgt ervoor dat de structuur netjes zichtbaar wordt.
Een sessie verwijderen
Soms wil je de sessie leegmaken.
$_SESSION = [];
session_destroy();
Dit stopt de sessie en verwijdert alle opgeslagen gegevens.
Waarom gebruiken we sessies in dit project?
In dit project maken we een Mens erger je niet spel.
De sessie onthoudt bijvoorbeeld:
- de startposities
- de stappen van elke pion
- meldingen van het spel
Zo blijft de spelstand bewaard terwijl de pagina opnieuw wordt geladen.
Samenvatting
Belangrijke stappen bij sessies:
- Start de sessie
session_start();
- Sla gegevens op
$_SESSION['spel'] = $spel;
- Lees gegevens
$spel = $_SESSION['spel'];
- Stop de sessie
session_destroy();