我正在使用的PHP網站上的登錄由會話cookie進行管理,會話中存儲用戶標識。這工作正常,直到瀏覽器關閉,此時用戶信息似乎正在丟失。即使Cookie和PHPSESSID持續存在,爲什麼PHP會話信息不能通過瀏覽器重新啓動持續?
我已經設置了GC和cookie的存活時間每七天,和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的有效期爲七天,並且在瀏覽器重新啓動之間持續存在。但是,會話變量(如userid)肯定不會被保留(我可以在單獨的頁面上使用var_dump來驗證這一點)。如果正確設置了gc和cookie的生命週期,會在瀏覽器重新啓動之間刪除會話變量。
我的理解是,只要PHPSESSID保持不變並且每次從瀏覽器發送到服務器,$ _SESSION信息都應該在瀏覽器重新啓動之間持續存在? – 2010-11-04 19:20:20
瀏覽器不會自動發送PHPSESSID,因爲它在關機時會鬆動。試試$ _COOKIES。 – drew 2010-11-04 19:25:19