有没有办法取消设置会话中的所有用户数据而不必使用会话销毁?我正在尝试注销我的用户,并且需要一次取消设置所有用户数据。跟踪会话中所有可能的用户数据集变得乏味。我只想取消设置用户数据中可能设置的所有内容。
问问题
38116 次
4 回答
18
这很简单!
$this->session->unset_userdata('some_name');
或者
$array_items = array('username' => '', 'email' => '');
$this->session->unset_userdata($array_items);
我希望这有帮助!
编辑:看起来你实际上没有在你的会话中跟踪任何东西(有点奇怪?)。你可以调用我写的这个函数:
function unset_only() {
$user_data = $this->session->all_userdata();
foreach ($user_data as $key => $value) {
if ($key != 'session_id' && $key != 'ip_address' && $key != 'user_agent' && $key != 'last_activity') {
$this->session->unset_userdata($key);
}
}
}
当然,这假设您使用默认的 CI 会话设置。
于 2012-05-09T02:37:41.993 回答
2
从codeigniter论坛复制:
它所做的只是杀死用户cookie,但用户数据将保留在会话类中,直到当前请求结束。会话将在下一次请求时重新初始化,并且没有可用的用户数据。基本上,它所做的只是切断用户和服务器会话之间的链接,但数据仍然保留到请求结束。
如果这是一个很大的问题,你可以这样做:
$this->session->userdata = array();
于 2012-09-24T07:48:26.330 回答
1
我管理它请尝试一下。
$this->load->library('session');
// 写入参数你的会话数据
$this->session->unset_userdata('sessiondata');
// 如果你想会话未设置组然后尝试它
$array_items = array('username' => '', 'email' => '');
$this->session->unset_userdata($array_items);
于 2015-05-04T10:33:15.047 回答
0
你可以试试这个。在最新版本中,上面的代码不起作用。
$unset_array_items = array('token_id', 'last_id');
$this->session->unset_userdata($unset_array_items);
于 2019-09-16T05:59:28.030 回答