我有一個會話創建,當從Safari上的ajax調用時調用它爲null。當在Safari瀏覽器的其他頁面中調用PHP會話時爲空
header.php
session_start();
$_SESSION['test'] = 'this is my session';
mypage.php
session_start();
echo $_SESSION['test']; <-- NOT WORKING ON SAFARI
感謝
我有一個會話創建,當從Safari上的ajax調用時調用它爲null。當在Safari瀏覽器的其他頁面中調用PHP會話時爲空
header.php
session_start();
$_SESSION['test'] = 'this is my session';
mypage.php
session_start();
echo $_SESSION['test']; <-- NOT WORKING ON SAFARI
感謝
它可以在其他瀏覽器中使用嗎? 在沒有AJAX的Safari中工作嗎? 這個腳本是從原始頁面的同一個域加載的嗎?
Safari顯然有更多conservative cookie policy than other browsers。如果PHP端的所有內容都能正常工作,並且其他瀏覽器可以正常工作,那麼我認爲Safari不會將會話cookie發送回服務器。
是null
還是""
?
當你if(isset($_SESSION['test']))
它是否返回true?
這是唯一的野生動物園?如果是的話,那麼你的瀏覽器設置
您的會話cookie是否保存成功,您可以在header.php頁面的其餘部分閱讀$ _session ['test']?
您是否在頁面的最開始處調用session_start()?
你有什麼錯誤嗎?如果沒有 - 你有沒有讓他們打開?
在兩個文件中的session_start()
之後加上這一行,並告訴我會話ID是否相同(即表示您在同一會話中)。
echo session_id();
我面臨同樣的問題,session_id()不斷更改每次刷新,所以safari沒有將會話ID存儲在cookie中。通過手動添加:
setcookie('PHPSESSID', session_id(), 0, '/');
我得到它的工作。
實際上有一個更精確的函數,它可以設置會話cookie參數 - [session_set_cookie_params](http://php.net/manual/en/function.session-set-cookie-params.php) – SteveB 2014-11-20 11:21:25
您是否檢查過啓用了cookies? :) – 2010-04-28 23:40:51