2010-11-15 34 views
1

我創建了a session以跟蹤特定頁面上的某些用戶操作。如何在用戶離開頁面時重置會話?

當用戶導航離開特定頁面(但仍在同一站點上)時,我需要重置會話。

我可以爲會話過期時設置定時器,但這不是我想要的。

如何重置頁面導航上的會話?

回答

4

只需在重新加載新頁面時重新設置會話即可。

+0

mm - 除非頁面被重新編碼。但我可以檢查一下。謝謝。 – Steven 2010-11-15 16:09:48

0

您是否有單個頁面,所有流量都是通過路由?如果是這樣,你可以做一個簡單的檢查

if ($current_page != $session_page) { 
    $_SESSION = array(); 
} 

如果您還沒有一個單一頁面中的所有流量都經過這樣做,那麼你將需要會話在其他每一頁的開頭重置。

$_SESSION = array(); 
0

或者您可以使用

unset($_SESSION); 

session_destroy(); 

雖然注意到略有不同,這些處理上述建議。請注意,第二個(session_destroy)將需要您重新啓動會話,如果您需要它再次。

0

你永遠無法確定會話是否真的被破壞。

但是在例如聊天應用程序中使用了一箇舊技巧,其中「...正在離開」消息將被打印:在卸載時只需打開一個帶有window.open()的彈出窗口,該窗口調用您的註銷頁面,然後關閉自身。

+0

哦,現在我看到你對導航到*的頁面有影響,那麼你不需要這個技巧。 – AndreKR 2010-11-15 14:08:18

0

我在過去所做的就是將一個快速的ajax調用卸載到未設置的頁面,就像本頁面上的其他答案一樣。

<script> 
function myAjaxCall(){ 
    //if using jquery 
    $.ajax('unset.php'); 
} 
</script> 

<body onunload="myAjaxCall()"> 
相關問題