2013-07-06 68 views
3

我有$config['sess_expiration'] = 7200;我的config.php文件,這意味着最後在2小時內該會話。程度笨會話過期

默認情況下,會話創建了用戶登錄。現在我想要基於用戶IDLE狀態的最後一個會話。

因此,當用戶在網頁上的活躍,我需要更新會話。

Ex。

通過Ajax甲POLL到服務器每隔2分鐘與當前用戶狀態,IDLEACTIVE

如果狀態是ACTIVE然後我想程度/更新/更新會話超時,用於從AJAX另外2小時呼叫。

逸岸如果狀態IDLE我會在網頁上運行一個計時器,它達到其超時(2小時)之前,我需要顯示一個警告用戶==>

「您當前的會話需要到期,你想續約嗎?「

如果用戶點擊YES的話,我想某種程度上會話2小時,否則我將發送註銷命令。

所以現在的問題是:如何續簽/更新/程度的會話超時programically?

還有其他更好的解決方案。

我使用PHP 5,笨2.x中,Bitauth(用戶認證)。

感謝

回答

5

只要您可以使用$config['sess_time_to_update'] = 30; //seconds如果用戶處於閒置狀態,並session expiration時間結束,即$config['sess_expiration'] = 7200;然後用戶點擊它會自動退出,因爲CI檢查每個會話的任何鏈接,將更新會話超時要求session expiration時間結束是否超過過期時間,然後你的會話被破壞。如果用戶在一小時後遇到任何請求,那麼您的sess_expiration更新sess_expiration可以說從現在到兩個小時。 默認情況下,CI創造了一個新的會話ID定義的時間間隔$config['sess_time_to_update'] = 30;即每30秒鐘新的會話ID將被創建

對於深後仔細觀察,你可以看到在圖書館sess_update()Session.php是更新會話功能因此,如果您沒有使用database會話,則您有一個好主意,然後CI將信息存儲在cookie中,否則它會將數據存儲在ci_sessions表中