簡體   English   中英

Codeigniter 3-會話庫

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM