首頁 >後端開發 >php教程 >javascript - php如何實現一段時間使用者沒有操作,系統自動自動退出

javascript - php如何實現一段時間使用者沒有操作,系統自動自動退出

WBOY
WBOY原創
2016-08-08 09:06:371735瀏覽

題主用的是thinkphp開發的,靠著它現有功能是能實現一段時間內,結束這個會話(不管用戶有無操作),但這麼一來,體驗肯定不好了

對於使用者有沒有操作的判斷業界一般是指什麼樣的情況?
1.滑鼠一段時間不移動?
2.滑鼠沒有點擊操作?
3...

我可以用js來記錄的這些操作在cookie中,並能設定cookie的過期時間,但是cookie是過期了,怎麼結束session呢?

回覆內容:

題主用的是thinkphp開發的,靠著它現有功能是能實現一段時間內,結束這個會話(不管用戶有無操作),但這麼一來,體驗肯定不好了

對於使用者有沒有操作的判斷業界一般是指什麼樣的情況?
1.滑鼠一段時間不移動?
2.滑鼠沒有點擊操作?
3...

我可以用js來記錄的這些操作在cookie中,並能設定cookie的過期時間,但是cookie是過期了,怎麼結束session呢?

方案一
服務端實作原理:使用者表設定一個一段記錄存取時間戳,當使用者登入時寫入當時時間戳記加上需要間隔不操作的時間,每次存取需要登入權限的頁面時,先偵測該欄位的時間是否大於目前時間,如果大於,那麼表示有在操作,並且把時間戳加上需要間隔不操作就退出的時間,再次更新該欄位。或用session取代資料庫記錄。
方案二
前端實作原理,使用HTML5儲存或cookie,跟方案一思路一致,只不過儲存方式換了。
方案比較
方案一的資料庫存儲,效能上不妥,HTML5不相容於低版瀏覽器,cookie停用js會失效。所以session比較適合。

我做過的都是對於用戶登入後15分鐘如果沒有操作自動退出。沒有針對滑鼠移不移動,都是對滑鼠有沒有點擊或頁面有沒有刷新之類的。你可以在設定cookie過期的時候直接把cookie刪除就可以。僅供參考

一般有沒有操作是指有沒有存取請求,有請求時後端可以刷新cookie,用cookie來控制過期。

當然更保險的也可以用session,用session記錄請求的時間,新的請求時判斷是否過期。如果前端要強制退出可以用心跳訊號(當然心跳訊號就不能記錄請求時間了)。

也可以兩者結合,總之方法是多種多樣的,就看你想怎麼用了。

在php.ini有配置session會話的失效時間的,當超出時間未有操作動作cli會自己自殺的。

一般是,前端全域的事件監聽,每次事件觸發都會AJAX呼叫一次會話,這樣就可以保持使用者會話不終斷了。反之不操作並超出php.ini中會話失效時間就會釋放掉。

別瞎折騰了,這裡有現成的:

https://github.com/thorst/jqu...

進入閒置狀態回呼和恢復啟動狀態都有回調,進入閒置狀態向伺服器發一條 xhr 結束 session 完事

一般都是後台控制,設定session超時時間。

用戶的操作時間界限是SESSION的生命週期,如果假設為session週期為24分鐘,如果用戶在12:00登入後,沒有任何操作,12:24後,那麼此時SESSION就失效了,再次操作就要求重新登入了,界線就是兩次操作的時間差不能超過24分鐘。另外:COOKIE失效了,那麼SESSION的登入一定是沒有的,使用者一定是未登入狀態,PHP的垃圾回收機制會自動清理SESSION文件,如果是redis存放的SESSION,那麼redis也有對應的銷毀session資料的方法。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn