我的用戶在Internet Explorer中登錄我的站點時遇到問題(可能是較舊的10和11)。PHP,會話Cookie和Internet Explorer
通過一些試驗和錯誤,我發現IE設置了兩次cookie。在F12開發人員工具欄中輸入document.cookie
即可看到。
研究表明,這可能是由於有一個「www」。版本和非www版本的cookie。我不知道如何驗證這一點,但我希望我可以通過調用session_set_cookie_params
明確設置域來抵制該問題。
因此我有:
$host = $_SERVER['HTTP_HOST'];
if(substr($host, 0, 4) === 'www.') $host = substr($host, 4);
$colon = strrpos($host, ':');
if($colon !== false) $host = substr($host, 0, $colon);
session_set_cookie_params(0, '/', $host);
session_start();
我剝口太(本地主機上開發:81),因爲這是document.domain
回報。
主機現在只是localhost
(還沒有在網站上試過),我根本無法在IE中登錄。在Firefox中運行良好,不是可以在Chrome中運行。
如何讓PHP或瀏覽器在www子域和網站的子域版本之間共享會話cookie?
我想在那裏每個相關的問題拋出一個點:
$host = $_SERVER['HTTP_HOST'];
if(substr($host, 0, 4) === 'www.') $host = substr($host, 4);
$colon = strrpos($host, ':');
if($colon !== false) $host = substr($host, 0, $colon);
session_set_cookie_params(0, '/', '.'.$host);
session_start();
我甩session_get_cookie_params()
,以確認它已正確設置。這似乎也不能解決我的問題。會話不斷重置。
你對我所見過的最棒的部分 –
@NullPoiиteя:謝謝。花了幾個月的時間來繪畫。 PS:蝙蝠俠寶寶也很可愛。 – mpen