CodeIgniter session_destroy()退出

时间:2016-03-23 11:50:47

标签: php codeigniter session redirect destroy

当用户按下注销按钮时,如何禁用?这是我的代码

MongoDB

但每次我点击回来,它都会给我一个“确认表单重新提交”页面,然后当我重新加载它时,将显示注销功能之前的页面

4 个答案:

答案 0 :(得分:1)

我会将以下内容添加到控制器中,我不希望用户在未登录的情况下访问:

在类名称扩展CI_Controller {

之后
public function __construct(){
    parent::__construct();

    if ( ! $this->session->userdata('logged_in'))
    {
        $allowed = array(
             // All allowed function names for not logged in users ( i keep it empty usually)
        );
        if ( ! in_array($this->router->fetch_method(), $allowed))
        {
            redirect(site_url('login/index'));
        }
    }
}

所以基本上这样做是在控制器中访问任何功能之前,它会检查用户是否已登录,如果他/她不是,他/她将被重定向到登录页面。 (用户数据'logged_in'部分是我在登录后设置为userdata的部分。)

答案 1 :(得分:0)

重定向已使用base_url(),因此您可以使其像

redirect('yourdefaultcontroller', 'refresh');

并检查会话库,它让您的生活更轻松

  

https://codeigniter.com/user_guide/libraries/sessions.html

答案 2 :(得分:0)

添加此项以防止缓存上一页:

$this->output->set_header('Last-Modified:'.gmdate('D, d M Y H:i:s').'GMT');
$this->output->set_header('Cache-Control: no-store, no-cache, must-revalidate');
$this->output->set_header('Cache-Control: post-check=0, pre-check=0',false);
$this->output->set_header('Pragma: no-cache');

答案 3 :(得分:0)

在控制器中

  

__construct方法添加这些

function __construct()
{
    parent::__construct();
    ob_start(); # add this
    $this->load->library('Session'); # add this
}

在您的方法中

function logout(){
    $this->load->driver('cache'); # add
    $this->session->sess_destroy(); # Change
    $this->cache->clean();  # add
    redirect('home'); # Your default controller name 
    ob_clean(); # add
}
  

redirect中,您必须设置默认控制器名称。

Destroying a Session