簡體   English   中英

為什么即使cookie和PHPSESSID仍然存在,PHP會話信息也無法通過瀏覽器重新啟動而保持不變?

[英]Why is PHP session info not persisting through browser restarts, even when the cookie and PHPSESSID persists?

我正在使用的PHP站點上的登錄由會話cookie管理,該cookie將用戶ID存儲在會話中。 在關閉瀏覽器之前,此方法可以正常工作,此時用戶標識信息似乎丟失了。

我已經將gc和cookie的keepalive時間分別設置為7天,並且php會話設置如下(通過.htaccess設置):

session.use_cookies On  On
session.cookie_lifetime 604800  0
session.gc_divisor  1000    1000
session.gc_maxlifetime  604800  1440
session.gc_probability  0   0

我可以使用Chrome和Firebug驗證PHPSESSID確實具有7天的生命周期,並且在瀏覽器重啟之間仍然存在。 但是,絕對不會保留諸如userid之類的會話變量(我可以在單獨的頁面上使用var_dump進行驗證)。 如果正確設置了gc和cookie的生存期,是什么導致會話變量在瀏覽器重啟之間被刪除?

問題最終出在托管提供商Rackspace Cloud上。 Rackspace Cloud Sites默認情況下會為每台服務器保存$ _SESSION信息,但不會嘗試在重新啟動瀏覽器之間將同一用戶定向到同一服務器。 我將不得不建立一個基於數據庫的會話系統或將會話文件存儲在其他地方。

我的問題可能還不清楚,因為“會話cookie”(僅在瀏覽器重啟之前一直存在)和$ _SESSION信息之間的沖突應該一直持續到垃圾回收。

確保您不會混淆“會話”和“ cookie”。 會話只會在瀏覽器保持打開狀態時持續存在。 Cookie會一直保留到到期,無論瀏覽器是否關閉。

請查看此頁面以獲得一些指導: http : //www.w3schools.com/php/php_cookies.asp或官方文檔位於: http : //www.php.net/manual/zh/function.setcookie.php

默認情況下,關閉瀏覽器時,會話cookie會被刪除。 您必須采取其他措施才能堅持下去-這就是為什么您將“記住我”作為選項的原因,因為這不是預期的行為。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM