CodeIgniter:取消设置所有userdata,但不销毁会话

时间:2012-05-09 02:15:56

标签: codeigniter codeigniter-2

有没有办法在会话中取消设置所有userdata而不必使用session destroy?我正在尝试将用户注销,并且需要一次取消设置所有userdata。跟踪会话中设置的所有可能的用户数据变得冗长乏味。我只想取消设置userdata中可能设置的所有内容。

4 个答案:

答案 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);