【发布时间】:2015-07-02 06:32:39
【问题描述】:
我无法弄清楚 Codeigniter 中会话的实际错误是什么。我的另一个项目使用此代码运行良好。但在这种情况下,我遇到了问题。
对于登录会话,我的代码是:
$data = array(
'username' => $this->input->post('username'),
'admin_logged_in' => true,
'logged_in' =>true
);
$this->session->set_userdata($data);
我检查会话为:
if ($this->session->userdata('admin_logged_in') == true) {
// code
}
在进入控制器之前,我正在检查上面的会话,如果会话不正确,则重定向到登录页面。
注销:
function logout() {
if ($this->session->userdata('admin_logged_in') == TRUE) {
$useremail = $this->session->userdata('username');
$data = array(
'username' => $useremail,
'admin_logged_in' => true,
'logged_in' =>true
);
$this->session->unset_userdata($data);
$this->session->sess_destroy();
redirect('login');
}
}
但上面的代码对我不起作用。当我注销时,页面成功重定向到注销页面,但会话没有被破坏,因为我可以访问所有需要会话集的页面。请帮我。
更新
我遇到了一个奇怪的问题。当我登录系统并注销时。并尝试访问需要会话的方法。如果我写了没有 index.php 的方法名,我可以访问。如果我用 index.php 编写方法名称,我将无法访问需要会话的方法。 例子: BnW 需要设置会话才能继续前进。 如果我登录并注销然后,如果我在以下 borwser URL 中写入:
example.com/index.php/bnw //it redirects to login page.
example.com/bnw //it logs in directly.
- 从 .htaccess 中删除
index.php是否会给会话带来问题?
【问题讨论】:
-
在您的
config.php文件集$config['sess_time_to_update'] = 0;中尝试 -
我看到你同时使用 unset 和 destroy 只使用一个或其他
标签: php codeigniter session