web2 logo

Werken met sessies

Bezoekers van een website kunnen meerdere pagina's op de website bezoeken. Om deze bezoekers te volgen tijdens het bezoek van je website, kan je werken met PHP sessies. Door het starten van een PHP sessie wordt er een sessie-cookie geplaatst in de browser met een PHP sessie ID. Via deze sessie ID kan de bezoeker van de website dan gevolgd worden.
De sessie ID kan in plaats van via cookies ook worden doorgegeven via de URL van een website, dit geeft echter problemen met zoekmachines, je pagina’s hebben dan steeds een andere URL.

Het starten van een sessie

Omdat het starten van een sessie via het plaatsen van een cookie gebeurt, moet dit gedaan worden voordat er enige HTML wordt verzonden.
Eerst kunnen er parameters worden meegegeven via de session_set_cookie_params() functie, dit is niet verplicht. Als je parameters wilt meegegeven, dan moet dit gebeuren voordat de session_start() functie wordt gebruikt.
Het starten van de sessie gebeurt met de session_start functie. Deze functie kijkt of er al een sessie cookie is geplaatst, indien dit zo is, wordt verder gegaan met de reeds lopende sessie, anders wordt een nieuwe sessie gestart. Je kan de session_start() functie daarom aan het begin van iedere webpagina gebruiken.

De parameters van de session_set_cookie_params functie

$1ifetime : de levensduur van de sessie cookie in seconden vanaf het tijdstip van aanvang van de sessie, default is 0. Dit is de enige parameter die verplicht is.

$path : het pad op de server waar de sessie cookie beschikbaar is, default is de directotory van waar de sessie gestart wordt. Het is handig om deze op ‘/’ in te stellen zodat de sessie op de hele server beschikbaar is.

$domain : het domein waar de cookie beschikbaar is, default is de naam van de server waar de sessie wordt gestart.

$secure : indien TRUE, dan is de cookie alleen beschikbaar via een HTTPS verbinding, default is FALSE.

$httpon1y : indien TRUE, dan is de cookie alleen beschikbaar via het HTTP-protocol en niet via Javascript in de browser van de bezoeker.

Voorbeelden:

Een sessie starten of voortzetten
session_start(); Deze functie geeft TRUE als het gelukt is en FALSE als het niet gelukt is. De default parameters worden hier gebruikt om de sessie te starten.

Het gebruik van de session_set_cookie_params() functie
session_set_cookie_params($1ifetime, $path, $domain, $secure, $httponly)
Een sessie starten met aangepaste parameters
$lifetime = 60 * 60 * 24 * 365; // 1 dag in seconden session_set_cookie_params ($lifetime, '/'); session_start();

Werken met sessie variabelen

Na de start van een sessie kan je sessie variabelen gaan gebruiken via de global $_SESSION variabele. Dit is een associatieve array voor de gegevens van de sessie.
Je kan allerlei soorten variabelen opslaan in sessie variabelen, behalve objecten.

De isset() functie kan gebruikt worden om te testen of een element al bestaat in de $_SESSION array.

Voorbeelden

Een sessie variabele instellen
$_SESSION['artikel'] = 'iPhone';
Een sessie variabele opvragen
$product_code = $_SESSION['artikel'];
Een sessie array instellen
if(isset($_SESSION['winkelwagen'])) { $_SESSION['winkelwagen'] = array(); }
Een element aan een sessie array toevoegen
$_SESSION['winkelwagen']['sleutel1'] = 'waarde1'; $_SESSION['winkelwagen']['sleutel2'] = 'waarde2';
Een sessie array gebruiken
$winkelwagen = $_SESSION['winkelwagen']; foreach ($winkelwagen as $item) { echo '<li>' . $item . '</li>'; }
Een sessie variabele verwijderen
unset($_SESSION['winkelwagen']);
Alle sessie variabelen verwijderen
$_SESSION = array(); Hier geen unset gebruiken!

Uitloggen uit de sessie

Een sessie eindigen doe je door de $_SESSION array leeg te maken en de functie session_destroy() te gebruiken. Om ook de cookie te verwijderen, moet je deze leegmaken.
Het mag duidelijk zijn dat je de functie session_destroy() pas mag gebruiken na de session_start() functie.
Een sessie eindigt ook als de gebruiker de browser sluit, of als de levensduur van de sessie is verlopen.

Een sessie be-eindigen
$_SESSION = array(); // De sessie uit het geheugen verwijderen session_destroy(); // De sessie ID verwijderen // session_destroy() geeft TRUE bij succes en FALSE in alle andere gevallen. De sessie cookie leegmaken in de browser
$name = session_name(); // Naam van de sessie cookie, defaultnaam is PHPSESSID $expire = strtotime('-1 year'); // Verloopdatum in het verleden $params = session_get_cookie_params(); // array met alle sessie parameters $path = $params['path']; $domain = $params['domain']; $secure = $params['secure']; $httponly = $params['httponly']; setcookie($name, '', $expire, $path, $domain, $secure, $httponly);
Sessie einde vanwege een redirect
De functie session_write_close() eindigt de huidige sessie en schrift de sessie data weg.
Deze functie moet gebruikt worden voordat de session_destroy functie wordt gebruikt.

De sessie ID

De naam van de sessie kan opgevraagd worden met de functie session_name() en is default "PHPSESSID".
Voorbeeld:
$name = session_name();
De functie session_id() kan gebruikt worden om de ID op te vragen of te wijzigen. Zonder parameter vraag je de ID op, als er geen sessie bestaat, dan krijg je een lege string terug. Met een parameter krijgt de ID de waarde van de parameter.
Voorbeeld:
$id = session_id();
De functie session_regenerate_id() kan gebruikt worden om de ID te vernieuwen om het kapen van sessies te voorkomen. Bij niet versleuteld internet verkeer kan je de sessie dan vernieuwen bijvoorbeeld nadat de gebruiker heeft ingelogd. Tegenwoordig wordt meestal https gebruikt waardoor dit probleem niet meer speelt. De functie geeft TRUE bij succes en FALSE in alle andere gevallen.
Voorbeeld:
session_id('123456789');

Toegevoegd door: Kees de Keijzer
Twitter: @kdkq

~ php ~

~ Onderwerpen ~

Dit is een website zonder pop-ups

~ Links ~

Design & Development by Cyberwebdesign.nl for web2.nl © 2020.