2016-12-16 102 views
0

我想在5分鐘後註銷非活動用戶。強制非活動用戶註銷

我使用此代碼跟蹤用戶活動

if (isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 7)) { 
    // last request was more than 30 minutes ago 
    session_unset();  // unset $_SESSION variable for the run-time 
    session_destroy(); // destroy session data in storage 
    header('Location: ../index.php'); 
    exit; 
} 
$_SESSION['LAST_ACTIVITY'] = time(); // update last activity time stamp 

但問題到時候出它不會破壞會話和開放重定向他,除非用戶或刷新頁面

我想自動登出他

我該怎麼做到這一點?

回答

1

由於除非用戶重新加載頁面,否則不會與服務器進行交互,因此您在此處執行的任何操作都需要使用Javascript。如果是我,我會定期對服務器進行AJAX調用,以查看會話是否已過期,然後在發現超時後將其重定向到另一個頁面。請注意,您必須添加標題信息才能停止正在緩存的頁面,以便用戶無法點擊後退按鈕(如果您確實想阻止他們查看舊數據)。

對於IE瀏覽器,你需要設置了不少停止緩存,..這裏是我傾向於發送的報頭在PHP

header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); 
header('Last-Modified: ' .gmdate("D, d M Y H:i:s") .' GMT'); 
header('Cache-Control: no-cache, must-revalidate'); 
header('Pragma: no-cache'); 
+0

謝謝你設定的東西。我雖然有沒有使用Ajax的方式。感謝您的提示 – jack

+0

您可以在Javascript中運行一個簡單的計時器來避免AJAX,但如果您重新引用服務器,您顯然可以實現更多的細節 –