我正在为使用CI创建的系统进行安全登录,因为应该有系统的管理控制。
我的方法是我在名为MY_System.php的应用程序/核心目录上创建了一个文件,在那里我得到了这行代码:
class MY_System extends CI_Controller
{
function __construct()
{
parent::__construct();
}
}
然后我也有Admin_Controller.php,我得到了这段代码:
class Admin_Controller extends MY_System
{
function __construct()
{
parent::__construct();
$this->is_logged_in();
}
function is_logged_in()
{
$is_logged_in = $this->session->userdata('is_logged_in');
if(!isset($is_logged_in) || $is_logged_in != true)
{
redirect(base_url(). 'login');
}
}
}
上面的2个文件保存在框架的核心文件夹中。
在系统的控制器目录中,我有几个控制器让我们说实例,我有这个代码:
class Person extends Admin_Controller
{
function __construct()
{
parent::__construct();
}
}
我相信通过这种方式,只要系统的页面被限制,我就会使用Admin_Controller作为类的父级,这样用户就无法直接访问这些页面。
现在,我的问题是,当我点击注销时,会话将被销毁并且用户的数据被清空,因此用户必须被重定向到登录页面,但它不会那样,因为每当我点击在我点击退出后,浏览器的后退按钮,用户所在的上一页仍会显示,但当我点击这些页面上的链接时,就是用户被重定向到登录页面的时间。我想要的是,点击退出后如果他/她尝试并点击浏览器的后退按钮,他/她必须被重定向到登录页面。
有谁知道我的问题的解决方案?任何帮助表示赞赏。提前谢谢。
答案 0 :(得分:0)
尝试这样做:
redirect(site_url('login'), 'refresh');
答案 1 :(得分:0)
尝试将以下HTTP标头添加到您的网页:
Cache-Control no-cache, no-store, must-revalidate
这将强制您的浏览器重新下载页面(=重新执行您应该检查is_logged_in变量并重定向到登录页面的控制器)