Codeigniter会话问题

Sam*_*son 2 php authentication codeigniter

我在我的codeigniter应用程序中使用了一个很棒的codeigniter身份验证库离子身份验证创建了用户身份验证,身份验证工作正常,但是当我退出并单击浏览器的后退按钮时,我可以浏览我在我的应用程序中访问过的所有页面引起关注用户隐私,但如果我尝试刷新页面,则会识别出我已注销.当用户单击浏览器的后退按钮时,如何强制浏览器重新加载?任何关于如何解决这个问题的建议将不胜感激..

编辑

控制器注销功能

function logout() {
    //log the user out
    $logout = $this->ion_auth->logout();

    //redirect them back to the page they came from
    redirect('auth', 'refresh');
}
Run Code Online (Sandbox Code Playgroud)

这是ion auth的注销功能

public function logout() {
    $this->ci->ion_auth_model->trigger_events('logout');

    $identity = $this->ci->config->item('identity', 'ion_auth');
    $this->ci->session->unset_userdata($identity);
    $this->ci->session->unset_userdata('group');
    $this->ci->session->unset_userdata('id');
    $this->ci->session->unset_userdata('user_id');

    //delete the remember me cookies if they exist
    if (get_cookie('identity')) {
        delete_cookie('identity');
    }
    if (get_cookie('remember_code')) {
        delete_cookie('remember_code');
    }

    $this->ci->session->sess_destroy();

    $this->set_message('logout_successful');
    return TRUE;
}
Run Code Online (Sandbox Code Playgroud)

我正在使用codeigniter 2.0.3

Thanx提前..

Ben*_*rne 6

实际上它们可能已被注销(正如您所说,刷新会导致它们显示为已注销).浏览器可能已缓存显示的HTML,表明他们已登录,但在注销后不会重新加载.

您可以通过设置Cache-Control标题将具有登录相关信息的页面设置为无缓存.

这可以通过HTML实现

<META Http-Equiv="Cache-Control" Content="no-cache">
<META Http-Equiv="Pragma" Content="no-cache">
<META Http-Equiv="Expires" Content="0">
Run Code Online (Sandbox Code Playgroud)

或PHP

header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
Run Code Online (Sandbox Code Playgroud)

您还可以使用以下代码实现hacky和不可取的清除该特定窗口的用户历史记录.这将需要作为注销功能的一部分发送到浏览器,如果用户禁用了javascript,则无法使用.

<script language="javascript"> 
     var Backlen=history.length;   
     history.go(-Backlen);   
     window.location.href=page url
</SCRIPT>
Run Code Online (Sandbox Code Playgroud)