我有一個簡單的問題。我已經編寫了授權系統,並且我想將任何會話保存在數據庫中,因爲我想編寫有關上次登錄用戶的聊天和信息。保存會話非常簡單,當用戶點擊註銷更新記錄時,結束時間也很簡單,但有時用戶不會點擊註銷,但關閉選項卡或關閉瀏覽器,我會考慮腳本檢查用戶是否活躍,但我該如何做到這一點很容易?我想檢查用戶是否在PHP的其他PC上登錄
我不知道如何檢查一些用戶的會話是否處於活動狀態,或者用戶現在正在運行我的網站。
我有一個簡單的問題。我已經編寫了授權系統,並且我想將任何會話保存在數據庫中,因爲我想編寫有關上次登錄用戶的聊天和信息。保存會話非常簡單,當用戶點擊註銷更新記錄時,結束時間也很簡單,但有時用戶不會點擊註銷,但關閉選項卡或關閉瀏覽器,我會考慮腳本檢查用戶是否活躍,但我該如何做到這一點很容易?我想檢查用戶是否在PHP的其他PC上登錄
我不知道如何檢查一些用戶的會話是否處於活動狀態,或者用戶現在正在運行我的網站。
除了必須單擊的明顯註銷按鈕外。 您無法真正使用PHP以100%的準確率檢測您所描述的任何其他事件。 你可以在每次用戶執行你的網站動作時在db上寫一個值,例如last_activity_datetime和x time之後如果沒有活動假設登出(將很好地匹配你的會話最長生存時間)
跟蹤用戶離開頁面的唯一方法是保持與客戶端的連接。如果您確實需要通過socket.io獲取登錄/註銷的確切時間,請查看node.js - 您可以保持與客戶端的連接,直到他們離開頁面。這對你正在嘗試做的事情可能有點過分,但如果你打算在將來添加類似聊天的內容,node.js將是一個非常有用的選項。它可以與主Web服務器一起運行,並且它們可以相互通信以共享信息。我在我的網站上使用它來將事件和通知傳播給其他用戶。
在發佈之前使用搜索。那麼每秒循環一些ajax代碼將會更新最後的用戶活動,並且如果數據庫中的最後一個活動超過5秒,例如系統會認爲用戶處於脫機狀態。 –
是的,如果用戶正確註銷會更好,但不能強制它 - 如果他們的網絡連接斷開或他們的計算機崩潰怎麼辦?簡單的解決方案就是允許會話過期。 PHP的默認會話過期是30分鐘;當時沒有任何活動,會議將自行到期;不需要註銷。 – Spudley