我在我的數據庫上有一個「在線」字段的用戶表,它在用戶登錄時獲得值「1」,並在用戶註銷時變爲0。問題是,如果用戶關閉標籤並且不點擊「註銷」按鈕,他將永遠在線。如何在codeigniter會話過期時執行一個函數
所以我想掛鉤某種功能,所以當會話過期時,它將這個「在線」字段的值 - 在數據庫上 - 更改爲「0」。
我很樂於接受建議,因爲我不知道這是什麼方法。
我在我的數據庫上有一個「在線」字段的用戶表,它在用戶登錄時獲得值「1」,並在用戶註銷時變爲0。問題是,如果用戶關閉標籤並且不點擊「註銷」按鈕,他將永遠在線。如何在codeigniter會話過期時執行一個函數
所以我想掛鉤某種功能,所以當會話過期時,它將這個「在線」字段的值 - 在數據庫上 - 更改爲「0」。
我很樂於接受建議,因爲我不知道這是什麼方法。
更改在線場到日期時間字段,
更新使用你的延伸,或使用鉤中央控制器來觸發每有一個請求時間字段的更新領域(你可以把會話驗證功能中的代碼,用於在觸發操作之前確保用戶已登錄)。
然後,您可以使用timediff SQL函數來查看用戶是否處於活動狀態。
您有特定的問題。但我對此有一個想法。
你可以去
系統/庫/ session.php文件
和更新功能function sess_destroy()
- 線398
在此功能中,你可以改變數據庫的狀態,並以這種方式你總是會改變會話銷燬時的狀態。
如果使用unset_userdata()
,則需要在同一文件上更改函數function unset_userdata($newdata = array()
第481行。
您可以通過擴展CI_Session
創建內部應用程序/核心PHP文件做到這一點/ MY_Session.php
class MY_Session extends CI_Session
{
public function __construct() {
parent::__construct();
}
function sess_destroy() {
//update the Online filed as required
$this->CI->db->update('YOUR_TABLE', array('YOUR_DATA'), array('YOUR_CONDITION'));
//call the parent
parent::sess_destroy();
}
}
檢查我的答案,如果你需要更多的幫助,請告訴我。 –
這有助於:http://stackoverflow.com/questions/4073311/detect-online-users –