2013-11-21 74 views
-2

我試圖設置php會話過期與我們沒有瀏覽器活動。 我試圖閱讀論壇,這裏在stackoverflow和不能。 如果我們有瀏覽器活動,會話仍然有效。有或沒​​有活動的PHP會話超時

+0

您實質上需要一個cron作業或計劃任務來完成此任務。你也可以用javascript'setTimeout()'來發送一個AJAX請求來終止會話。 – MonkeyZeus

+0

即使用戶正在使用網頁,您是否正在引導用戶? – MonkeyZeus

回答

1

您需要手動處理。大致沿着這些線:

if(!$_SESSION['started']) { 
    // This is a new session, let's keep track of when it was started 
    $_SESSION['started'] = time(); 
} else if (time() - $_SESSION['started'] > $maxlifetime) { 
    // We've hit our max lifetime, session should be destroyed 
    session_destroy(); 
} 

請注意,用戶不會意識到他們的會話已經過期,直到下一個頁面加載。如果你希望他們立即(或接近它)被通知,即使他們只是坐在一個頁面上,那麼你需要使用某種Ajax輪詢來檢查會話。

+0

我認爲這是@Frank想要的。如果他想要用戶注意,請使用第一條評論或[此答案](http://stackoverflow.com/questions/20104231/how-do-i-alert-admin-users-when-their-account-has-timed -out/20104339#20104339) –

+0

@Frank這對你的問題有幫助嗎? – jszobody

0

您可以使用cron作業過期非活動會話,或者嘗試如下所示: 1.將時間戳存儲在會話變量中。 2.在頁面加載時檢查/更新變量。 3.如果時間戳太舊,請從您的 網站/應用強制註銷事件。