如何防止codeigniter使用缓存

时间:2015-09-03 10:34:13

标签: php codeigniter

当我从我的帐户注销时,页面会将我重定向到登录页面。但是,如果我按下按钮,那么它会显示我之前访问的所有页面。

我不知道在哪里设置或重置它。

请检查我的退出功能

/**
 * Logout user
 */
public function logout()
{
    $this->session->sess_destroy();
    logout_user();
    redirect('login');
}

我甚至设置了一个函数来获取用户详细信息

 parent::__construct();
    // redirect to Login page if user not logged in
    $this->mUser = get_user();
    if ( empty($this->mUser) )
    {
        redirect('login');
        exit;
    }

2 个答案:

答案 0 :(得分:0)

  • 您无法控制浏览器后退按钮。为此,您可以检查每个控制器/方法是否设置了session
  • 如果设置允许用户查看页面
  • 如果没有将页面重定向到登录

    public function login()
    {
            $session = array(
            'username'  => $name,
            'logged_in' => TRUE
        );
    
        $this->session->set_userdata($session);
    }
    
    
    public function home()
    {
        $user = $this->session->userdata('username');//check session is set
        if(empty($user))
        {
            $this->session->set_flashdata('error', 'Session has Expired');
            redirect('controller/method');//loging page
        }
        else
        {
            $this->load->view("my_view");
        }
    }
    
  

注意:我已经运行此错误。我找到了很多可能的答案,但这只有效果。

答案 1 :(得分:0)

我认为这是浏览器缓存问题,因此请尝试将以下内容添加到需要用户登录的页面中:

//Prevent browsers from using history to browse in the user system.
$this->CI->output->set_header("Cache-Control: no-store, no-cache, must-revalidate");
$this->CI->output->set_header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
$this->CI->output->set_header("Pragma: no-cache");

请查看以下主题,希望您能从那里获得更多帮助:

Browser Cache issue in codeigniter

logout issue in code igniter (PHP)