【问题标题】:CodeIgniter: unset all userdata, but not destroy the sessionCodeIgniter:取消设置所有用户数据,但不破坏会话
【发布时间】:2012-05-17 13:13:40
【问题描述】:

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

【问题讨论】:

  • 为什么你不想使用$this->session->sess_destroy();,因为它正是你想要做的?
  • 我修改了答案以更好地回答您的问题。

标签: codeigniter codeigniter-2


【解决方案1】:

你可以试试这个。 在最新版本中,上面的代码不起作用。

$unset_array_items = array('token_id', 'last_id');
$this->session->unset_userdata($unset_array_items);

【讨论】:

    【解决方案2】:

    我做到了,请尝试一下。

    $this->load->library('session');
    

    // 写入参数你的会话数据

    $this->session->unset_userdata('sessiondata');
    

    //如果你想会话未设置组然后尝试它

    $array_items = array('username' => '', 'email' => '');
    
    $this->session->unset_userdata($array_items);
    

    【讨论】:

      【解决方案3】:

      从codeigniter论坛复制:

      它所做的只是杀死用户 cookie,但用户数据会 保持在会话类中,直到当前请求结束。 会话将在下一次请求时重新初始化,并且将 没有可用的用户数据。基本上,它所做的只是切断链接 在用户和服务器会话之间,但数据仍然存在 直到请求结束。

      如果问题太大,您可以这样做:

      $this->session->userdata = array();

      【讨论】:

        【解决方案4】:

        这很简单!

         $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 会话设置。

        【讨论】:

        • 我不想不小心在用户数据中留下不应该存在的东西。我认为您的解决方案可能有效。也许这会很好地覆盖unset_userdata,以便它与未传递的密钥一起使用(它只会删除所有)。想法?
        猜你喜欢
        • 2014-12-31
        • 2015-07-02
        • 2011-12-13
        • 1970-01-01
        • 2014-04-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多