销毁会话和用户数据,但仍然显示退出后显示内容

时间:2014-10-16 15:12:59

标签: php codeigniter session

我在delima中,当我点击退出按钮并重定向到登录页面时,我已经解除了会话和userdata。它工作得很完美,但是当我点击浏览器上的后退按钮并显示我已注销的页面时,我发现了这个问题,该页面不应该显示但是重定向主页不是吗?我真的遇到了麻烦。

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');
}

感谢任何帮助。谢谢

1 个答案:

答案 0 :(得分:0)

检查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之类的内容。