2010-02-16 43 views
2

我有一個完美的期望會話,如果我關閉瀏覽器會話被破壞但是如果我關閉當前選項卡,然後返回到該網站,該會話仍然存在,我該如何使確保會話在關閉選項卡和窗口關閉的情況下被銷燬?PHP會話幫助

+1

不是會話被破壞,但瀏覽器存儲的會話ID被刪除。 – Gumbo 2010-02-16 09:33:50

+0

你不能正確地銷燬它,只有當你的瀏覽器在瀏覽器關閉時關閉cookie和歷史記錄清理,所以你認爲這種方式它的工作,但它不是,你可能有某種錯誤或某事,發佈你的代碼可以幫助您 – ant 2010-02-16 09:35:15

回答

0

你不能檢查用php關閉標籤,你應該使用JavaScript onunload事件和ajax調用的組合來請求服務器端會話的destroy方法。

2

這裏的問題是瀏覽器行爲。在瀏覽器關閉之前Cookie通常不會被銷燬,而PHP會話則通過會話ID cookie進行維護。

你最好的選擇可能是會話超時設置爲比默認短(15或30分鐘,我相信)

你可以嘗試做一些與onunload的匿名暗示,但onunload事件不保證開火,所以你不會確定會議已被破壞。

是否有特殊原因需要會話立即銷燬?如果我們知道您確切的問題,我們可能會建議一種解決方法

+0

您需要更加精確:「會話cookie通常不會被破壞,直到......」但不要混淆會話cookie *(僅在一個瀏覽器會話中有效的cookie)和* cookie會話ID *(存儲應用程序會話ID的cookie)。 – Gumbo 2010-02-16 09:57:09

+0

同意,在這種情況下,我指的是包含會話ID的cookie。通常用於默認PHP安裝的PHPSESSID。 當然,根據瀏覽器的設置,實際上並沒有保證在瀏覽器關閉時它也會被銷燬。 – 2010-02-16 10:26:31