2009-07-20 7 views
1

Je sais que cette méthode répond à la question "Est-ce que la session en cours est valide?", Mais je ne vois pas pourquoi il serait jamais invalide. J'ai lu la source de cette méthode, mais je ne comprends toujours pas. D'après ce que je peux comprendre, il s'agit de savoir si les données de session ont expiré, mais je ne suis pas sûr.Dans Cakephp, qu'est-ce que Session-> valid()?

Cela peut concerner une ancienne version de Cake car je ne la vois pas dans les derniers documents, mais dans la version que j'utilise.

Répondre

3

Il serait invalide si vous l'avez détruit. Par exemple, vous voulez effacer toutes les données de session pour un utilisateur connecté une fois qu'il se déconnecte. Le client peut essayer d'utiliser l'ID de session qu'ils ont dans leur cookie en mémoire lors de la publication suivante sur le serveur, mais le serveur a déjà détruit cette session.

if ($this -> Session -> valid()) 
{ 
    $this -> Session -> destroy(); 
    $this -> redirect('/'); 
} 

Une autre solution serait si la session a expiré sur le serveur et/ou le client a essayé de se synchroniser avec le serveur en utilisant un mauvais/faux ID de session.

+0

Mais si vous détruisez la session, le serveur ne doit-il pas dire au navigateur d'effacer la clé de session de ses cookies? Si le navigateur renvoie une clé de session détruite, ce serait uniquement à cause d'une condition de concurrence, non? – allyourcode

0

Il peut être invalide si l'agent utilisateur a changé entre les demandes (si la vérification est activée) ou si la session a expiré.