2011-10-14 87 views
1

我有一個網頁,當用戶關閉標籤或瀏覽器時,我正在銷燬會話。這是我的腳本當刷新時防止onbeforeunload()被調用

window.onbeforeunload = function() { 
document.write("<?php session_destroy(); 
?>"); 
} 

我的問題是我想只在瀏覽器關閉時銷燬會話。我應該使用哪個事件?這是可能的所有瀏覽器。?請幫忙。

+6

這不能正常工作,您的會話將在頁面加載時被破壞。你不能只是混合JavaScript和PHP,它不會工作,因爲Javascript是客戶端和PHP是服務器端。 – TJHeuvel

+0

如何在關閉瀏覽器時銷燬會話? – ravi404

回答

0

瀏覽器在默認情況下關閉時會話被破壞。這實際上由PHP配置選項session.cookie_lifetime控制。 From the PHP manual

session.cookie_lifetime指定發送給瀏覽器的cookie的生命週期(以秒爲單位)。值0意味着「在瀏覽器關閉之前」。默認爲0。

你正在嘗試做的,明確地在服務器端刪除會話數據時,在瀏覽器關閉,無法做到。無法告訴(至少從Javascript)頁面是重新加載還是瀏覽器正在關閉 - 兩個事件都以相同的方式觸發onunload()onbeforeunload()

關於這一點的另一點是,它會涉及到在瀏覽器關閉時向服務器發送請求,這是不太可能被允許和不可信賴的 - 畢竟,如果服務器未能響應呢?這可能會導致瀏覽器一直在等待響應,這會破壞用戶體驗,瀏覽器開發人員永遠不會允許。

相關問題