gpt4 book ai didi

php - Codeigniter session 问题

转载 作者:行者123 更新时间:2023-12-02 07:43:23 25 4
gpt4 key购买 nike

我已经使用很棒的 codeigniter authentication library ion auth 创建了用户身份验证在我的 codeigniter 应用程序中,身份验证工作正常,但是当我注销并单击浏览器的后退按钮时,我可以浏览我在我的应用程序中访问过的所有页面,这引起了对用户隐私的关注,但是如果我尝试刷新页面它识别出我已注销。当用户单击浏览器的后退按钮时,如何强制浏览器重新加载?任何有关如何解决此问题的建议将不胜感激..

编辑

Controller 注销功能

function logout() {
//log the user out
$logout = $this->ion_auth->logout();

//redirect them back to the page they came from
redirect('auth', 'refresh');
}

这是来自 ion auth 的注销功能

public function logout() {
$this->ci->ion_auth_model->trigger_events('logout');

$identity = $this->ci->config->item('identity', 'ion_auth');
$this->ci->session->unset_userdata($identity);
$this->ci->session->unset_userdata('group');
$this->ci->session->unset_userdata('id');
$this->ci->session->unset_userdata('user_id');

//delete the remember me cookies if they exist
if (get_cookie('identity')) {
delete_cookie('identity');
}
if (get_cookie('remember_code')) {
delete_cookie('remember_code');
}

$this->ci->session->sess_destroy();

$this->set_message('logout_successful');
return TRUE;
}

我正在使用 codeigniter 2.0.3

提前致谢..

最佳答案

他们实际上可能已注销(如您所说,刷新会使他们看起来已注销)。浏览器可能缓存了显示的 HTML,表明他们已登录,但在他们注销后不会重新加载。

您可以通过设置Cache-Control header 将具有登录相关信息的页面设置为不缓存。

这可以用 HTML 实现

<META Http-Equiv="Cache-Control" Content="no-cache">
<META Http-Equiv="Pragma" Content="no-cache">
<META Http-Equiv="Expires" Content="0">

或者PHP

header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past

您还可以使用以下代码实现清除该特定窗口的用户历史记录的骇人听闻且不可取的做法。这将需要作为注销功能的一部分发送到浏览器,如果用户禁用了 javascript,它将无法工作。

<script language="javascript"> 
var Backlen=history.length;
history.go(-Backlen);
window.location.href=page url
</SCRIPT>

关于php - Codeigniter session 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8860953/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com