我在我的网站上有一个几乎可以正常工作的注册系统,唯一缺少的部分是注销功能。它会启动会话,但似乎不会破坏它,因此,前一个会话始终处于活动状态。我是正确地销毁了会话,还是做了一些完全错误的事情?
起初,我只是尝试设置用户数据,然后在销毁会话之前逐个取消设置,这是不起作用的。所以现在我用普通字符串设置用户数据,然后再销毁它们,再一次,似乎不起作用。
注销链接如下所示:
<a href="http://localhost/dir/dir1/dir2/index.php/Controller/logout">logout</a>
在我的控制器中,我有这个:
public function logout() {
$this->load->helper('url');
$this->load->library('session');
$session_data = array(
'data' => 'data',
'data' => 'data',
'data' => 'data',
'data' => 'data',
'data' => 'data',
'data' => 'data',
'data' => 'data',
'data' => 'data',
'data' => 'data',
'data' => 'data',
'data' => 'data',
'data' => 'data',
'data' => 'data',
'data' => 'data'
);
$this->session->set_userdata($session_data);
$this->session->unset_userdata('data');
$this->session->unset_userdata('data');
$this->session->unset_userdata('data');
$this->session->unset_userdata('data');
$this->session->unset_userdata('data');
$this->session->unset_userdata('data');
$this->session->unset_userdata('data');
$this->session->unset_userdata('data');
$this->session->unset_userdata('data');
$this->session->unset_userdata('data');
$this->session->unset_userdata('data');
$this->session->unset_userdata('data');
$this->session->unset_userdata('data');
$this->session->unset_userdata('data');
$this->session->sess_destroy();
redirect('http://localhost/dir/dir1/dir2/index.php/Controller/loginview', 'refresh');
}
我希望会话在重定向之前被销毁(它确实是这样做的),但是当我输入新的登录凭据时,它仍然显示前一个会话的登录凭据,而应该显示新的登录凭据。
发布于 2019-06-06 06:15:08
我只是忘了指定会话参数,总之问题解决了!
发布于 2019-05-26 22:05:13
您可能需要按照Session is not being destroy in codeigniter的建议实现ob_start()
和ob_clean()
。因此,这可能是同一件事的副本。
https://stackoverflow.com/questions/56314143
复制相似问题