我正在使用codeigniter编码的网站。目前,我在登录系统中遇到问题。当注册用户成功登录并点击浏览器后退按钮时,他再次重定向用户登录页面。
在登录视图加载的登录控制器中,我提出了一个条件,即如果用户已经登录,则将其重定向到仪表板。但是在成功登录后,如果我单击浏览器后退按钮,它会再次重定向到登录页面
我的控制器功能,其中登录视图加载为:
if($this->session->userdata('logged_in') && $this->session->userdata('logged_in') !=''){
header('location:'. base_url().'message/inbox');
}
else
{
$this->template->load('template', 'login');
}
我是codeigniter的新手,对此并不了解。任何人都请帮助我,并指出我的代码中有什么问题。
感谢。
答案 0 :(得分:1)
后退按钮通常会加载上一页的缓存版本。你的问题与CodeIgniter无关。
阅读this有关解决问题的方法。虽然它不适用于PHP,但它会向您展示如何正确设置标头并在打开登录页面时删除logged_in会话变量。
修改
所以标题必须采用以下格式:
header('Expires: -1');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Pragma: no-cache');
如果您知道如何在普通PHP中修复问题,那么CodeIgniter中的方法是相同的。只需清除会话或强制重定向(根据您的喜好),同时确保缓存设置为正常工作。
答案 1 :(得分:0)
您是否在控制器构造函数中加载了会话?
$这 - >负载>库( '会话');
答案 2 :(得分:0)
在每个控制器类
的每个构造中使用以下内容if(!$this->authentication->try_session_login()){
redirect('manage/login');
}
此行$this->authentication->try_session_login
的详细信息: -
authentication = create an libyrary function named authentication.
In that library define try_session_login() function.
使用此身份验证库进行登录。
我个人在我的申请中使用这个过程。
答案 3 :(得分:0)
如果你单击浏览器后退按钮,它将从浏览器历史记录中加载页面。它将始终显示登录页面。虽然你已经进行了一些检查,但它从历史记录加载页面。为此你需要禁用浏览器后退按钮
现在,如果您将代码放在每个函数的开头,如
if(!$this->session->userdata('logged_in'))
{
redirect('controller_name/function_name','refresh');
}
它将检查会话并相应地工作。