3

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

4

4 回答 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 回答