2010-08-05 55 views
2

PHP有什麼理由以絕對隨機的時間間隔向Safari瀏覽器提供新的會話ID?PHP會話ID不會在Safari中出現

PHPSESSID Cookie可能會在客戶端過期嗎? 或者也許別的,更復雜?

+0

我敢打賭,它與餅乾有關! – 2010-08-05 22:43:50

+1

Safari到期/不發送的cookie將是最合乎邏輯的原因。您可以啓用Safari的調試模式並檢查cookie的請求。或者將它們記錄在您的Web服務器訪問日誌中以便於檢索。 – Wrikken 2010-08-05 22:44:23

回答

0

在php.ini文件你有配置選項

session.use_only_cookies 

如果設置爲true,PHP將只使用Cookie來跟蹤會話。

否則如果瀏覽器禁用了cookie,PHP有一個使用get的回退方法。

因此,如果您將此選項設置爲false,則Sessions也可以工作,前提是您的Safari禁用了Cookie。

但是這有一個安全缺點。一些複製您的URL並將它們發送給朋友的用戶可能會將SID字符串與URL複製,並將其會話顯示給他們的朋友。如果您僅將SID存儲在Cookie中,則不會發生這種情況。

關於會話的生命有多長,有一個看看的session.gc_maxlifetime配置選項:

session.gc_maxlifetime指定的 秒數後數據 將被視爲「垃圾」並清理了 了。垃圾收集發生在 會話開始。

3

Safari的設置僅允許訪問正在訪問的網站的Cookie。如果你的數據庫或Web服務是在另一臺電腦,它會阻止cookie的,因此會議將不會被保存...

0

session_start();

反斜線做會議在Safari爲我的工作增添session_set_cookie_params(0, "/");