2009-07-20 42 views
1

我知道這個方法回答了問題「當前會話是否有效?」,但我不明白爲什麼它會是無效。我已經閱讀了這個方法的源代碼,但我仍然不明白。從我能收集到的信息來看,它與會話數據是否過期有關,但我不確定。在Cakephp中,什麼是Session-> valid()?

這可能與舊版本的Cake有關,因爲我沒有在最新的文檔中看到它,但它在我正在使用的版本中。

回答

3

如果你銷燬它,那將是無效的。例如,您想在登出後清除登錄用戶的所有會話數據。客戶端可能會嘗試在服務器的下一篇文章中使用它們在內存Cookie中的會話ID,但服務器已經銷燬了該會話。

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

另一個辦法是,如果會話超時服務器和/或客戶端嘗試用壞/假會話ID服務器同步。

+0

但是,如果你銷燬會話,服務器不應該告訴瀏覽器從它的cookie中清除會話密鑰嗎?如果瀏覽器發回一個銷燬的會話密鑰,那隻會是因爲競爭條件,不是? – allyourcode 2009-07-20 22:34:07

0

如果useragent在請求之間更改(如果啓用了檢查)或會話過期,則可能無效。

相關問題