Wat extraatjes… (de FAQ)
In de tijd dat mijn artikel op PHPFreakz geplaatst werd kreeg ik veel vragen over bepaalde zaken. Een van veelvoorkomende vragen was ‘het uitloggen’, oftewel: het destroy()-en van de session.
Het eerste dat moet gebeuren als je een sessie wilt verwijderen is het unset()-en van de (globale) session variabelen. Dit kan op twee manieren gebeuren:
- via de session_unset() functie
- of, als je de (super)global $_SESSION of $HTTP_SESSION_VARS hebt gebruikt, via de unset() functie. Of gewoon door de hele global leeg te gooien:
$_SESSION = array();
$HTTP_SESSION_VARS = array();
Nadat de globale variabelen ge-unset() zijn kun je de sessiondata zelf destroy()-en. Dit kun je doen met de session_destroy() functie.
Goed, tot zover het destroy gedeelte! Een andere veelgestelde vraag was ‘hoe kan ik de naam van de session veranderen’. Het antwoord is vrij simpel: session_name(“naam”);
Toch zitten er nog wat addertjes onder het gras… php gebruikt namelijk bij ELK request de standaard opgegeven session name (in de meeste gevallen PHPSESSID). Dit betekent dat je de session_name(“naam”) functie ELKE keer moet aanroepen voordat je de session_start() functie aanroept! De naam van de sessie mag trouwens alleen alfanummerieke karakter bevatten.
Tot slot nog het antwoord op een veelvoorkomende foutmelding ‘Warning: open(/tmp\sess_54005c2826f51ea77bc91627293a3544, O_RDWR) failed: No such file or directory (2) in myfile.php on line x’.
Bovenstaande foutmelding wordt veroorzaakt door het feit dat PHP geen session kan wegschrijven naar de directory /tmp. In de meeste gevallen verschijnt deze foutmelding op lokale windows machines. De oplossing is ook voor dit probleem simpel.
Open php.ini in je apache/php directory. Zoek dan naar de regel: session.save_path = /tmp
En verander /tmp in een BESTAANDE directory, bijvoorbeeld: c:/apache/sessions
Inhoudsopgave
- Inleiding
- Hoe worden sessions doorgegeven?
- Session variabelen
- Wat extraatjes… (de FAQ)
- Functie overzicht