2013-03-06 4 views
0

Ma session PHP par défaut dure 30 minutes.8 heures renommées sessions php perdues après 30 minutes

J'ai eu ce premier code:

<?php 
session_set_cookie_params(28800); 
session_name('TEST'); 
session_start(); 
session_regenerate_id(true); 

$_SESSION['test'] = 'jam'; 
?> 

Et ce second:

<?php 
session_set_cookie_params(28800); 
session_name('TEST'); 
session_start(); 
session_regenerate_id(true); 

echo $_SESSION['test']; 
?> 

Le fait est, ma session est perdu au bout de 30 minutes sans activité.

exemple Timed:

00:00 : run first script 
00:10 : run seconde script : i got "jam" 
00:20 : run seconde script : i got "jam" 
00:40 : run seconde script : i got "jam" 
01:11 : run seconde script : session is lost 

espère que vous pouvez me donner une idée de résoudre ce problème.

Répondre

3

Jetez un oeil à this answer à session_set_cookie_params() page dans le manuel PHP, et voir si cela vous aide!

0

La durée de vie des cookies n'est qu'une partie de l'équation. Le stockage de session côté serveur est l'autre. Assurez-vous que le session.gc_maxlifetime est suffisamment élevé.

0

Vous définissez uniquement la durée de vie du cookie, qui n'a rien à voir avec la durée de vie réelle des données de session. Si vous utilisez le gestionnaire d'enregistrement de session par défaut qui enregistre les sessions sur le système de fichiers, la durée de vie des données de session est contrôlée par la directive session.gc_maxlifetime. Vous pouvez modifier cette valeur avec ini_set comme ceci:

ini_set('session.gc_maxlifetime', 28800); 

Ne noter que si vous avez également d'autres scripts qui utilisent des sessions et ils partagent le même chemin de sauvegarde des sessions, le gc_maxlifetime minimum est utilisé pour toutes les sessions dans ce annuaire. Par conséquent, si vous voulez changer la valeur de gc_maxlifetime, cela signifie généralement que vous voulez aussi spécifier votre propre chemin d'accès où les sessions sont stockées. Vous pouvez le faire avec la fonction session_save_path:

session_save_path('/path/to/your/sessions'); 
+0

Salut, merci pour votre réponse, je besoin de 2 différentes sessions sur mon site: une session de 30 minutes pour la partie avant et une session 8 heures pour la partie admin. Si j'ai défini un chemin spécifique pour ma session en utilisant session_save_path() (au fait y a-t-il une relation avec le chemin que je peux définir en utilisant session_set_cookie_params()?), Comment puis-je préciser quelle session est concernée par mon ini_set ('session.gc_maxlifetime 28800); ? – ERO

+0

Les sessions doivent-elles être stockées entre la partie publique et la partie admin? Si la réponse est oui, alors vous devez faire durer les sessions de 8 heures pour les deux. Session.gc_maxlifetime concerne les sessions dont vous avez défini le chemin de sauvegarde dans le même script. Vous pouvez définir différents chemins de sauvegarde pour les parties publique et admin, et ainsi vous pouvez également avoir différentes durées de vie pour les sessions. –

Questions connexes