【发布时间】:2012-10-01 08:28:11
【问题描述】:
我有这个控制器:
function Logout() {
$this->session->sess_destroy();
redirect('/');
}
非常简单。但它不起作用。就这么简单 - 会话仍然被存储。我尝试在所有会话中使用unset_userdata(目前是两个),但它也不起作用。
【问题讨论】:
-
你是否也在使用 CodeIgniter 的会话类来声明你的会话? CI 使用与原生 PHP 会话不同的系统,因此如果您声明
$_SESSION['somevar']并尝试使用 CI 的会话类将其删除,它将无法正常工作。 -
是的,我在另一个文件中使用
set_userdata。 -
是否会在调用默认控制器 (
'/') 后立即重置它们,也许?您是否尝试在重定向之前回显这些会话值之一? -
我已经这样做了:
$this->session->sess_destroy(); print_r($this->session->all_userdata());它向我显示了所有数据,就像它甚至没有被触及一样。 -
这是 CodeIgniter 的“正常”行为:由于会话保存在 cookie 中,这些值仅在下一页加载时才会有效删除。所以,使用
redirect('/')应该清除这些;它们是否仍然存在于默认控制器上?
标签: codeigniter