[英]Codeigniter 3 - session library
我使用Codeigniter 3和數據庫作為會話驅動程序。 一切正常,但不會從數據庫中刪除會話記錄。 我應該手動刪除它們還是..?
等待你的答復。
謝謝。
您的意思是當用戶注銷時要清除會話。 如果u表示您可以使用下面的代碼。 您必須手動刪除會話中的數據。如果不手動銷毀它,則數據將在您的數據庫中可用,直到達到會話過期為止。
session_destroy();
// or
$this->session->sess_destroy();
或者,如果您想清除會話中的特殊數據,可以使用以下代碼
unset($_SESSION['some_name']);
// or
$this->session->unset_userdata('some_name');
如果使用會話存儲閃存數據,則該會話僅可用於下一個請求。 示例代碼如下
$_SESSION['item'] = 'value';
$this->session->mark_as_flash('item');
從這里復制
在ci_session表中創建一個新列。
ALTER TABLE `yourdatabase`.`ci_sessions`
ADD COLUMN `userid` VARCHAR(45) NULL AFTER `user_data` ;
然后在您的登錄功能中,從您的登錄過程中獲取ID,然后再將userdata信息添加到會話中,請執行以下操作:
//delete any existing sessions with the current userid session.
// Note - a new session has already been generated but doesn't have a value
// in the userid column, so won't get deleted.
$this->db->delete('ci_sessions',array('userid' => $identity));
//get the current session and update it with the userid value.
$session_id = $this->session->userdata('session_id');
$this->db->where('session_id', $session_id);
$this->db->update('ci_sessions', array('userid' => $identity));
$ identity是您的用戶標識。 這將清除以前的所有會話,並且意味着一次僅存在一個會話。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.