Waarom sessies?

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 tevoren 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.

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().

In de onderstaande tabel staan diverse functies die van belang zijn bij het werken met sessies.


Functie Betekenis
session_start()

Opent nieuwe sessie of stelt gegevens bestaande sessie beschikbaar

Dit commando moet altijd uitgevoerd worden voordat er output is. (Handig om dit helemaal boven aan je pagina te zetten)

session_id() Geeft huidige session ID terug of je kunt zelf een ID meegeven als String voor een sessie (zal je eigenlijk nooit gebruiken)
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

We illustreren het gebruik van sessies aan de hand van een voorbeeld:

<?php
//starten van de SESSION
session_start();

//aanmaken van array SESSION['teller'] als deze nog niet bestaat
if(!isset($_SESSION['teller'])){
    $_SESSION['teller']=0;
}

//Als er iets wordt verstuurd
if($_POST!=null){

    //Als er telop wordt verstuurd
    if(isset($_POST['telop'])){
        $_SESSION['teller']+=1;
    }
    //als er telaf wordt verstuurd
    if(isset($_POST['telaf'])){
        $_SESSION['teller']-=1;
    }
}

?>
<!-- Formulier met een op- en aftel button-->
<form method="post">
    <input type="submit" value="+" name="telop">
    <input type="submit" value="-" name="telaf">
</form>
<?php
echo "Teller: ".$_SESSION['teller'];

 

Nadat er een nieuwe sessie is gestart, wordt aan de array $_SESSION[] een variabele 'teller' toegevoegd met waarde 0 als deze nog niet bestaat.

Daarna wordt de $_POST van het formullier afgehandeld die de $_SESSION['teller'] verhoogd of verlaagd.
Na het formulier wordt de huidige waarde van de variabele $_SESSION['teller'] op het scherm getoond.
Wanneer je het tabblad in je browser sluit en daarna weer naar dezelfde url gaat. Zal de teller de voorafgaande waarde behouden hebben. Wanneer de je browser helemaal sluit zal de SESSION verloren gaan. En zal deze weer op 0 staan.