Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Salut,
Je suis en train de découvrir le Zend Framework, et je me heurte à un problème avec Zend_Session.
j'ai une page de login où on s'authentifie, et on garde le pseudo dans une variable de session. Je fais en sorte que la session expire au bout d'une heure (3600 secondes).
$session = new Zend_Session_Namespace('toto'); $session->setExpirationSeconds(3600); $session->pseudo= $pseudo;
Question toute bête : comment on fait pour savoir si la session a expiré ? Y'a pas de méthode Zend_Session::isExpired(), à la manière de Zend_Http_Cookie::isExpired()...
Merci pour vos réponses.
Hors ligne
Si quand tu restaures ta session toutes tes données ont disparu, c'est qu'elle a expirée (il y a peut-être plus malin, mais ça, ça marche en tout cas !)
A+, Philippe
Hors ligne
J'ai essayé plusieurs solutions comme tester les variables :
if (! isset($session->pseudo)) { echo 'a expiré'; }
Ne marche pas (la clé 'pseudo' existe toujours dans $_SESSION).
if ($session->pseudo == '') { echo 'a expiré'; }
Ca a l'air de marcher mais c'est pas très propre. Il suffit de vider la variable 'pseudo' (lors d'un traitement PHP)pour se déconnecter de la session...
if (time() - $_SESSION['__ZF']['toto']['ENT'] < 0) { echo 'a expiré'; }
En utilisant la méthode setExpirationSeconds(), un tableau associatif $_SESSION['__ZF']['nom du namespace']['ENT'] est crée avec le timestamp limite de la session. En récupérant ce timestamp qu'il reste à la session avant qu'elle soit expirée, ca pourrait marcher mais ça fait vraiment bidouillage...
Dernière modification par ALkyD (11-07-2007 15:50:30)
Hors ligne