2012-04-06 93 views
3

我一直在關於會話和cookie的互聯網上做了大量的研究,而且我一直在討論的會話的參數是,如果cookie被禁用,它不會影響會話。清除cookies時,PHP會話變量消失

儘管如此,每次我的會話變量清除cookies也清楚。另外,我已經閱讀了幾個網站,實際上會話應該用cookies來清除。

有人可以向我解釋這個嗎?

回答

5

如果它的可能PHP存儲它的會話ID在cookie中。如果您的瀏覽器拒絕了它,它會攜帶會話ID以及查詢字符串。

如果你殺了你的cookies並且沒有進行查詢字符串調整,php會忘記你是誰!

但是cookie的使用可以通過禁用http://de2.php.net/manual/en/session.configuration.php#ini.session.use-cookies

+0

我試過你的解決方案仍然有同樣的問題,但當我檢查出你的鏈接,我看到session.use_only_cookies默認設置爲1,因爲PHP 5.3.0,並解釋了事情。非常感謝你! – Zizo47 2012-04-06 21:59:57

0

你錯了。會話取決於Cookie。當你請求一個頁面時,一個包含會話UID的cookie被髮送到服務器。因此清除cookie會導致會話丟失。

0

您是否可以強制GET,而不是在一個餅乾使用PHP SESS ID,默認的是餅乾

0

會話通過存儲使用的cookies一個具有近期(或有時甚至是負面)到期日期的曲奇。在PHP中,默認情況下,此cookie可以在名稱PHPSESSID中找到。在運行時需要在PHP中使用session_start函數來加載和關聯/標識用戶和關聯的會話信息。

因爲會話是cookie的特殊類型的cookie清除(即使cookie被禁用),可能會導致會話標識符丟失,導致會話重置。

這是清除了任何神祕PHP會話落後了一大篇:

http://justinmccormick.com/wp/programming/php-sessions-explained

0

PHP店默認的每一個cookie裏面的會話ID,如果你明確指出,會議已經一去不復返了。

你可以做的是啓用session.use_trans_sid。這樣PHP將會話ID附加到url。 (但我不會建議)