2011-10-05 75 views
1

我有基本登錄系統的迷你內容管理系統。我想知道如何防止會話過期,如果用戶活躍於前。輸入內容或其他東西?有什麼辦法可以做到嗎? 每次交互發生時,我如何重新安裝會話?如果用戶活動,防止會話過期

+0

您可能希望在頁面上添加某種事件偵聽器。當發生某些交互事件(例如焦點更改,頁面滾動,鍵入字符等)時,您可以向服務器上的「ping」類型頁面發送ajax請求。在php頁面中,您可以「重新設置」會話。 –

+0

我有自動提交功能,每隔30秒發佈一次表單數據給php。如何重置/延長每個會話時間,例如數據庫查詢(在PHP中)? –

+0

如果你已經每隔一段時間就聯繫服務器,那麼在你的PHP中調用'session_start()'應該就足夠了。只要調用之間的時間間隔小於php.ini中的'session.gc_maxlifetime'設置,您將會很好。 –

回答

1

您需要將某個事件處理程序附加到某些用戶交互事件,例如鼠標移動,鍵控或類似的事件。在事件中,你可以使用ajax從服務器請求一些東西。這會使會話保持活動狀態。

+0

我有自動提交功能,每隔30秒將表單數據發佈到php中。如何重置/延長每個會話時間,例如數據庫查詢(在PHP中)? –

+0

你的表單提交的哪個php頁面只有session_start()在它的頂部,並且應該更新會話超時。如果看起來不是,那麼也許別的東西是錯的? –

1

讓一個事件監聽器監聽任何用戶交互事件並讓它通過一個會話活動調用一個簡單的PHP頁面[例如:session_start()]。

但在收聽mousemove事件時要格外謹慎,因爲它可能會通過提供大量隨之而來的AJAX請求而窒息您的服務器。您可以附加一個計時器並控制所做的呼叫頻率。