为了防止在codeigniter中进行缓存,我正在使用
<?php
header('Expires: Sun, 01 Jan 1995 00:00:00 GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Pragma: no-cache');
?>
在注销时,我取消设置会话数据并销毁会话
$this->session->unset_userdata('logged_in');
$this->session->unset_userdata('name');
$this->session->sess_destroy();
redirect('user/login');
当我第一次按下后退按钮时,只会显示登录页面而不会显示其他访问页面。所以我认为no-cache正在运行。
但如果我一直按下后退按钮,则确认表单重新提交页面出现,当我刷新页面时,主页显示出来。会话数据“名称”用于显示用户名,并显示为空白。
我在所有控制器功能上使用以下代码来阻止访问
if(!$this->user->is_logged_in()) {
redirect('user/login');
}
定义在模型中
public function is_logged_in()
{
return $this->session->userdata('logged_in') ? TRUE : FALSE;
}
请指导我解决此问题。
答案 0 :(得分:0)
每个控制器检查SESSION都设置为TRUE。如果为TRUE,则继续将代码重定向到登录页面。
在控制器中
public function index()
{
$logged = $this->session->userdata('logged_in');
if($logged == TRUE)
{
# Your code
}
else{
# redirect login page
redirect('login');
}
}
登录功能
$newdata = array(
'username' => $value,
'logged_in' => TRUE
);
$this->session->set_userdata($newdata);
并且摧毁这样的集合。
$this->load->driver('cache');
$this->session->sess_destroy();
$this->cache->clean();
redirect('login');
ob_clean();
答案 1 :(得分:0)
我在一个项目中遇到了同样的问题,但这件事帮助了我。我在上面说的行上更改了config / config.php文件
$ config ['sess_regenerate_destroy'] =否;
我更改为TRUE,它解决了我的问题。