大家好我正在使用CodeIgniter Framework,我在注销后出现问题,会话已经被破坏并重定向到登录表单,并且在重定向到登录表单后,浏览器后退按钮可以被备份到仪表板但是因为有错误会议已被破坏.我想要的是禁用浏览器的后退按钮或我以前无法加载的任何内容.我已经阅读了有关此问题的其他帖子,并尝试了他们的解决方案,但它不起作用.我已经根据我在构造函数中的其他帖子中读到的内容粘贴了此代码.
The code that I've seen from the post and posted in my constructor :
header("cache-Control: no-store, no-cache, must-revalidate");
header("cache-Control: post-check=0, pre-check=0", false);
// HTTP/1.0
header("Pragma: no-cache");
// Date in the past
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
// always modified
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
这是我的注销:
$sess_array = array(
'username' => ''
);
$this->session->unset_userdata('logged_in', $sess_array);
$this->session->sess_destroy();
redirect('auth', 'refresh');
这是来自我的仪表板:
解决方法:
我厌倦了实现这个选项,但它不能很好地工作.所以我在这上面实现了新的逻辑.
Simply check is session is set in every main methods. Below code help you
在注销中(在控制器中定义)
function __construct()
{
parent::__construct();
ob_start(); # add this
}
public function logout()
{
$this->load->driver('cache');
$this->session->sess_destroy();
$this->cache->clean();
ob_clean();
redirect('home'); # Login form or some other page
}
在仪表板中(功能)
public function home()
{
$logged_in = $this->session->userdata('logged_in');
if($logged_in != TRUE || empty($logged_in))
{
#user not logged in
$this->session->set_flashdata('error', 'Session has Expired');
redirect('user_logging'); # Login view
}
else
{
#user Logged in
$this->load->view("viewname",$data);
}
}
在登录(功能)
$session = array(
'username' => $name,
'logged_in' => TRUE
);
$this->session->set_userdata($session);
标签:php,codeigniter,session
来源: https://codeday.me/bug/20190927/1824580.html