php设置登出按钮,php – Codeigniter按下注销按钮并禁用后退浏览器按钮

在使用CodeIgniter框架时,作者遇到一个问题:用户注销后,虽然重定向到了登录页面,但通过浏览器后退按钮仍能访问已注销的仪表板。尝试了清除缓存和禁止后退等方法后,问题仍未解决。最终,通过在每个主要方法中检查session是否已设置来解决了这个问题。在注销时销毁session,并在仪表板中检查用户是否已登录,如果未登录则重定向到登录页面。
摘要由CSDN通过智能技术生成

大家好我正在使用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');

这是来自我的仪表板:

Logout

解决方法:

我厌倦了实现这个选项,但它不能很好地工作.所以我在这上面实现了新的逻辑.

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值