使用codeigniter注销页面


log out page with codeigniter

我正在学习代码点火器。用户登录后,当他点击注销按钮时,他会返回登录页面,但如果他点击浏览器返回按钮,他会再次返回连接页面。因此会话保留在浏览器中。如何重定向到登录页面。

代码

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class User extends CI_Controller{
public function __construct()
{
    parent::__construct();
    $this->load->model('user_model');
}
 public function index()
{
    if($this->session->userdata('logged_in'))
    {
        $session_data = $this->session->userdata('logged_in');
        $data['nom'] = $session_data['nom'];
       redirect('user/connection_Ok');
    }
    else
    {
        //If no session, redirect to login page
        $this->login;
    }
}
public function logout()
{
    $this->session->unset_userdata('logged_in');
   // session_destroy();
    $this->session->sess_destroy();
 redirect('login');
}

当他点击注销按钮时,他会返回登录页面,但如果他点击浏览器返回按钮,他会再次返回连接页面。因此会话保留在浏览器中。

我觉得这里有些混乱。。。如果他单击"注销",则logout控制器会破坏会话,周期为。使用浏览器的"后退"按钮无法撤消此操作或恢复会话。

换句话说,仅仅因为缓存的页面"看起来"他仍然登录,并不意味着他仍然登录。一旦他试图访问受限制的内容,他将不会被授权,因为他的上一个会话已经被破坏。

如何重定向到登录页面。

你无法阻止用户点击浏览器的"后退"按钮,也无法轻松控制他们点击时会发生什么。浏览器只需加载上一页的缓存版本,而无需重新加载……这就是浏览器的工作方式。

JavaScript可以让你访问浏览器历史记录,但没有完全可靠的方法来拦截"返回"按钮。无论解决方案多么全面或复杂,用户都可以简单地禁用JavaScript并击败它

然而,如果您编程了一个强大的授权系统,用户在未登录的情况下尝试访问受限内容时,将自动进入登录页面。


仅供参考-对于CodeIgniter,我建议您使用经过验证的授权系统,这样您就不必重新发明轮子或担心安全性。我喜欢Ben Edmund的Ion Auth,但CodeIgniter还有其他一些解决方案。。。只要做你的研究。

  1. 禁用浏览器缓存:将HTTP标头添加到受保护的页面
  2. 始终为要保护的页面启用安全http协议(https);否则,某些浏览器(Safari)可能不会禁用缓存

标题为:

Cache-Control: no-cache, no-store, must-revalidate, max-stale=0, post-check=0, pre-check=0

PS:HTML页面中不需要任何<meta cache-control>标签;http标头优先。