2009-07-20 5 views
1

Ich weiß, dass diese Methode die Frage beantwortet "Ist die aktuelle Sitzung gültig?", Aber ich sehe nicht, warum es jemals ungültig sein würde. Ich habe die Quelle für diese Methode gelesen, aber ich verstehe es immer noch nicht. Soweit ich feststellen kann, hat es damit zu tun, ob die Sitzungsdaten abgelaufen sind, aber ich bin mir nicht sicher.In CakePHP, was ist Session-> gültig()?

Dies kann zu einer älteren Version von Cake gehören, weil ich es nicht in den neuesten Dokumenten sehe, aber es ist in der Version, die ich verwende.

Antwort

3

Es wäre ungültig, wenn Sie es zerstört haben. Beispielsweise möchten Sie alle Sitzungsdaten für einen angemeldeten Benutzer löschen, wenn sie sich abmelden. Der Client versucht möglicherweise, die Sitzungs-ID zu verwenden, die er im Speicher-Cookie für den nächsten Post auf dem Server hat, aber der Server hat diese Sitzung bereits zerstört.

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

Eine andere wäre, wenn die Sitzung auf dem Server abgelaufen und/oder der Client versucht, mit dem Server unter Verwendung eines schlecht/falsch Sitzungs-ID zu synchronisieren.

+0

Aber wenn Sie die Sitzung zerstören, sollte der Server dem Browser nicht mitteilen, den Sitzungsschlüssel von seinen Cookies zu löschen? Wenn der Browser einen zerstörten Sitzungsschlüssel zurücksendet, wäre das nur wegen einer Wettlaufsituation, nein? – allyourcode

0

Es ist möglicherweise ungültig, wenn useragent zwischen Anforderungen geändert wurde (wenn die Überprüfung aktiviert ist) oder wenn die Sitzung abgelaufen ist.