有没有办法在会话中取消设置所有userdata而不必使用session destroy?我正在尝试将用户注销,并且需要一次取消设置所有userdata。跟踪会话中设置的所有可能的用户数据变得冗长乏味。我只想取消设置userdata中可能设置的所有内容。
答案 0 :(得分:16)
这很简单!
$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会话设置。
答案 1 :(得分:2)
从codeigniter论坛复制:
所有这一切都会杀死用户cookie,但是用户数据会 保持在会话类中,直到当前请求结束。 会议将在下一次请求时重新初始化,并且会有 没有用户数据可用。基本上,它所做的只是切断链接 在用户和服务器会话之间,但数据仍然存在 直到请求结束。
如果这是一个很大的问题,你可以这样做:
$ this-> session-> userdata = array();
答案 2 :(得分:1)
我管理它,请尝试。
$this->load->library('session');
//为会话数据写参数
$this->session->unset_userdata('sessiondata');
//如果您想要会话未设置组,请尝试
$array_items = array('username' => '', 'email' => '');
$this->session->unset_userdata($array_items);
答案 3 :(得分:0)
您可以尝试这个。 在最新版本中,以上代码无法正常工作。
$unset_array_items = array('token_id', 'last_id');
$this->session->unset_userdata($unset_array_items);