我在codeigniter中有一个注销控制器:
<?php
class Logout extends MY_Controller {
function index()
{
$this->session->sess_destroy();
redirect('index.php');
}
}
Run Code Online (Sandbox Code Playgroud)
这会让我退出,但是当我在登录后调用另一个控制器时,比如"/ site/addnewpost",这只会让我再次登录,好像之前没有销毁过sassion.为什么会这样?
Dam*_*rsy 11
按照ALex的建议,但使用CI代码:).我的意思是,尝试单独取消设置每个会话数据.我读过一次关于版本2.0.3中的问题,我想,但我现在不记得,我没有时间搜索引用.但是,它在他们的论坛中,并且建议是相同的:逐个取消设置每个会话元素.
$this->session->unset_userdata('data_one');
$this->session->unset_userdata('data_two');
$this->session->unset_userdata('data_three');
$this->session->unset_userdata('data_one');
$this->session->sess_destroy();
redirect('home','refresh'); // <!-- note that
//you should specify the controller(/method) name here
Run Code Online (Sandbox Code Playgroud)
您需要重定向,因为CI的会话只是cookie,而不是本机的php会话数组.
另一件事......确保故障不在您的登录方法中,无论您是否成功注销,都会记录您!