2012-03-19 64 views
2

當用戶成功登錄網站時,該事件會創建一個名爲'loggedin'的會話並將其設置爲true。用戶登錄會話狀態爲only = true,直到他們離開網站

if (criteria satisfied){ 
    $_SESSION['loggedin'] = true;} 
else { ... } 

該會話如何在用戶退出網站時過期?

退出網站意味着直接離開網站。無論是關閉標籤頁,瀏覽器還是訪問其他網站,都意味着用戶離開網站的任何情況。

我在問這個問題之前檢查了其他問題,但沒有人似乎直接回答,似乎都處理與每個提問者相關的唯一實例。

+4

「退出網站」對您意味着什麼? – jprofitt 2012-03-19 12:32:39

+1

有很多關於這方面的問題。請檢閱他們:http://stackoverflow.com/questions/520237/how-do-i-expire-a-php-session-after-30-minutes – sikander 2012-03-19 12:34:53

+0

@ryan你的意思是跟蹤關閉標籤/窗口? – hjpotter92 2012-03-19 12:35:44

回答

3

嘗試把:

session.cookie_lifetime = 0; 
在php.ini

。如果用戶正在退出您的網站(通過關閉瀏覽器,例如關閉計算機),這將刪除會話cookie。請參閱session.cookie_lifetime

+1

+1,注意:不適用於關閉標籤頁或訪問其他網站。附加說明:無法用於關閉標籤和訪問其他網站,因爲用戶可以讓您的站點的多個選項卡打開,並且服務器永遠不會知道用戶擁有多少標籤。 (所以當最後一個標籤關閉時它不能刪除會話) – Kaii 2012-03-19 12:50:05

0

客戶端的會話只是一個會話ID號的cookie。

您可以將Cookie的過期設置爲非常小,但如果有人在頁面上空閒,那麼會話可能會過期。您可以在所有頁面(主頁/主模板)上放置一個隱藏的IFRAME,並使用META刷新來刷新會話cookie到期。

您也可以嘗試使用onUnload JavaScript事件對您的LogOut頁面進行Ajax調用,該頁面可能會放棄會話並清除cookie。

相關問題