【问题标题】:destroyed the session and userdata but still shows shows the content after logout销毁了会话和用户数据,但在注销后仍显示显示内容
【发布时间】:2014-12-12 00:38:38
【问题描述】:

当我单击注销按钮并重定向到登录页面时,我已经破坏了会话和用户数据。它工作得很好,但是当我点击浏览器上的后退按钮并显示我退出的页面时我发现了这个问题,该页面不应该显示但重定向主页不是吗?我真的有麻烦了。

public function logout(){
     $this->session->unset_userdata('user_email');
     $this->session->unset_userdata('user_type');    

     $this->session->sess_destroy();


        redirect(site_url(),'refresh');
}

现在我还在我设置了注销按钮的那个页面的控制器中设置了构造函数的重定向。

public function __construct() {



    parent::__construct();

     if(!$this->session->userdata('user_type')|| !$this->session->userdata('user_email')){
         redirect(site_url(),"refresh"); 
     }



    $this->load->model('health_model');
}

感谢任何帮助。谢谢你

【问题讨论】:

  • 尝试将unset($this->session->userdata); $this->session->userdata = array(); 放在$this->session->sess_destroy(); 之后

标签: php codeigniter session


【解决方案1】:

检查sess_destroy() 在做什么。从逻辑上讲,它只是破坏(给定名称),因此不会删除您要删除的用户数据,如下所示:

http://php.net/manual/en/function.session-destroy.php

session_destroy() 销毁与当前关联的所有数据 会议。它不会取消设置与 会话,或取消设置会话 cookie。

为了完全终止会话,比如注销用户, 会话 ID 也必须取消设置。

也在这里: https://ellislab.com/codeigniter/user-guide/libraries/sessions.html

上面写着:

unset_userdata() 可用于从会话中删除数据,通过 传递会话密钥。例如,如果您想删除 会话信息中的“some_name”:

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

This function can also be passed an associative array of items to unset.

$array_items = array('username' => '', 'email' => '');

$this->session->unset_userdata($array_items);

只需确保您取消设置所需的数据,即 Codeigniter 用于确定用户是否登录的任何数据。
目前您只是取消设置user_emailuser_type,所以试试user_id

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多