锁定。对这个问题的评论已被禁用,但它仍然接受新的答案和其他互动。 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/