我想創建一個頁面,我可以看到誰在我的網站上登錄。 對於登錄後的每個用戶,我創建一個會話,然後發送一個查詢,將mysql中的「記錄」行從「否」更改爲「是」。 然後,在頁面上我使用PHP來顯示每個人,他們在mysql中設置了Yes,並且它可以工作。 但是,我有一個問題,當有人關閉瀏覽器而沒有點擊註銷時發生 - 查詢不會執行,並且mysql中的值爲... 我能做些什麼來創建這樣的頁面?在PHP和Mysql中的會話
回答
而不是具有登錄或退出的布爾值,請確定該客戶的合理時間會話過期(例如1個月),然後將該時間量添加到時間戳並將其存儲在數據庫中,如session_expires
或其他。然後,您可以檢查用戶的會話是否已過期,無論您何時進行登錄檢查。
此外,要手動過期會話(例如,如果用戶註銷),只需將session_expires
字段設置爲過去的時間戳。
編輯
我沒有接觸過電腦在週末,所以我不能正確地更新我的答案。
如果您需要查看活動用戶,我過去所做的一件事就是使用一個last_seen
時間戳字段,該字段在用戶在網站上執行任何操作時進行更新。然後,在您的「用戶登錄」頁面上,查詢近期的內容,如「最近15分鐘內上次看到的內容」。
1個月可能不適合,因爲問題指出,他想知道有多少用戶登錄現在...那應該是至少15分鐘準確:) – MatthiasLaug
好點,當讀完這個問題時完全錯過了那部分。嘿。 – adamdunson
你不能對此做任何事情,但定義一個超時。這意味着在登錄之後,您的初始呼叫會將您的客戶行設置爲「YES」,以便每次請求(或每分鐘騰出資源)觸發更新該客戶行中的日期列。如果不再有更新,則將該客戶定義爲「未登錄」,並將該列更新爲「否」
我知道如何做超時,但你能告訴我怎麼做到這一點嗎? - 「如果不再有更新,則將該客戶定義爲」不再登錄「,並將該列更新爲」否「。 – user1630441
像垃圾收集器:更新客戶設置loggedIn = 0其中MINUTE(TIMEDIFF(now(),lastAction)> 5 – MatthiasLaug
用戶一直保持登錄狀態的原因是PHP SESSION TIMEOUT可能在PHP設置php.ini中配置。
查看http://php.net/manual/en/function.session-set-save-handler.php瞭解如何設置會話關閉處理程序(一旦會話無效,將會調用它)。當關閉處理程序被調用時,在數據庫中將當前會話的「logged」設置爲false。儘管如此,它可能需要長達24分鐘(在會話超時時間爲 - session.gc_maxlifetime = 1440
分鐘時,在php.ini中的默認值)。
將此值(session.gc_maxlifetime
)減小爲2-3分鐘,並在您的每個頁面上都有一個保持會話活動的ajax函數。這肯定會增加你的服務器的負載,但你一定會更好地表示當前活動的用戶。您可以在代碼中將值從php.ini
或採用ini_set(‘session.gc_maxlifetime’,30);
。
問候
- 1. PHP和MySQL會話
- 2. php會話和mysql更新
- 3. PHP MySQL會話
- 4. php mysql會話
- 5. Cookie和會話問題在php/mysql/wamp
- 6. 使用PHP和MySQL註冊和會話
- 7. 跨頁面的PHP和MySql會話
- 8. 在mysql中插入php會話變量
- 9. 緩存和會話變量(PHP,MySQL ...)
- 10. PHP會話和限制MySQL訪問
- 11. PHP/MySQL安全登錄和會話
- 12. 在php和jsp中的會話ID
- 13. php mysql +會話錯誤
- 14. 會話+ php + mysql +錯誤
- 15. PHP會話+ MySQL資源
- 16. php會話vs mysql速度
- 17. PHP + MySQL +會話事務
- 18. 會話管理:PHP + MySQL
- 19. MySQL而不是PHP會話
- 20. Excel中,PHP和會話
- 21. 在SQL查詢中繪製會話值? PHP和MySQL
- 22. 在php中的會話不加載配置文件,php + mysql
- 23. Json,PHP和會話
- 24. PHP會話和Ajax
- 25. PHP cookie和會話
- 26. PHP會話和cookie
- 27. php會話和iframe
- 28. PHP會話和iFrame
- 29. Memcached和PHP會話
- 30. jquery和PHP會話
的第一件事情應該問一個易懂的英語 – samayo
你的問題請在下面看到我更新的答案。 – adamdunson