codeigniter - 销毁 Code Igniter 中的特定 session

标签 codeigniter session destroy

锁定。对这个问题的评论已被禁用,但它仍然接受新的答案和其他互动。 Learn more .








我希望能够让用户退出我在 Code Igniter 中构建的应用程序。

我知道如何结束事件的本地 session :

$this->session->sess_destroy();

但是如何销毁在另一台计算机上启动的 session ,从而使用户退出 session ?

我在 session 数据中存储了一个与他们的帐户关联的唯一 ID,因此我可以在数据库的 session 表中看到它,但它与其他 session 数据一起存储在名为 user_data 的列中,其内容看起来像这个:
a:4:
{s:9:"user_data";s:0:"";s:6:"userid";s:6:"189034";s:9:"logged_in";b:1;s:5:"token";i:1767727789;}

哪里189034是用户的id。

那么,有没有办法根据用户的 id 以某种方式选择 session 表中的行,然后删除该行并销毁 session 。还是有另一种方法可以完全做到这一点?

最佳答案

在 ci_session 表中创建一个新列。

ALTER TABLE `yourdatabase`.`ci_sessions` 
ADD COLUMN `userid` VARCHAR(45) NULL  AFTER `user_data` ;

然后在您的登录功能中从您的登录过程中获取 id,并在将用户数据信息添加到 session 之前执行以下操作:
/* 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是你的用户名。这会清除任何先前的 session ,并且意味着一次只存在一个 session 。

关于codeigniter - 销毁 Code Igniter 中的特定 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9563675/

相关文章:

php - 在 codeigniter 中进行多个查询,结果基于第一个查询

codeigniter - 使用codeigniter删除目录

java - session 终止后无法将 JDBC 与 Oracle 重新连接

Javascript 对象数组 - 自杀式破坏

ruby-on-rails - 销毁 rails 4 中的嵌套字段

android - 模拟清理 Activity android

php - 如何使用 CodeIgniter 在 View 中显示原始计数

session - 从远程 session 获取完整的堆栈跟踪

c# - 将 List<CartItem> 保存到 ASP.NET 中的 session

javascript - jQuery 在 codeigniter 中查找 URI