2010-09-23 5 views
3

Ma session php est configurée pour expirer lorsque l'utilisateur ferme le navigateur mais j'ai remarqué que si je laisse mon navigateur ouvert pendant une période prolongée (24 heures et plus) par exemple) la session persiste toujours.Comment faire pour que la session PHP expire à la fermeture du navigateur OU pendant une durée prolongée

Existe-t-il un moyen pour que ces sessions expirent lorsque le navigateur est fermé ou après une longue période de temps?

+2

double possible de [Comment puis-je expire une session PHP après 30 minutes ?] (http://stackoverflow.com/questions/520237/how-do-i-expire-a-php-session-after-30-minutes) – Palantir

+0

Lorsque le navigateur est fermé: Non, ne fonctionne pas comme ça. Sinon, voir la question liée à par Palantir. – fredley

+0

@fredley: Que voulez-vous dire non ça ne marche pas comme ça? Lorsque je vois mes cookies, mon set sessid php expire lorsque le navigateur se ferme. – Chris

Répondre

6

La solution peut être de définir des données via ini_set('session.gc_maxlifetime', <lifetime in seconds>); Bien sûr, s'il est possible de modifier la configuration via PHP. Sinon, vous devrez fournir besoin de définir des valeurs appropriées dans votre php.ini:

ini_set(‘session.gc_maxlifetime’,30); 
ini_set(‘session.gc_probability’,1); 
ini_set(‘session.gc_divisor’,1); 

L'autre approche est mise validité du cookie de session par:

$expire=24*60*60; 
session_set_cookie_params($expire); 
session_start(); 
+0

Le garbage collector est la solution, car lorsque vous manipulez la durée de vie d'un cookie, le cookie ne disparaît pas à la fermeture du navigateur. Assurez-vous d'appeler 'session_regenerate_id()' sur les utilisateurs non autorisés, pour empêcher la fixation de la session. – Wrikken

+0

@Wrikken suggérez-vous d'appeler session_regenerate_id chaque fois que j'attrape un utilisateur qui n'est pas autorisé? – Chris

+0

en utilisant 1 pour le diviseur et la probabilité assurerait que nous vérifions toujours pour les ordures qui seraient cpu intensif droit? – Chris

Questions connexes