【发布时间】:2015-05-29 14:20:22
【问题描述】:
所以我有这个登录方式:
public function login(){
$this->form_validation->set_rules('username','Username','trim|required|min_length[4]|xss_clean');
$this->form_validation->set_rules('password','Username','trim|required|min_length[4]|xss_clean');
if($this->form_validation->run()== FALSE) {
//Loading View
$this->load->view('admin/layouts/login');
$username = $this->input->post('username');
$password = $this->input->post('password');
//Validate Username & Password
$user_id = $this->Authenticate_model->login($username, $password);
if($user_id){
$user_data = array(
'user_id' => $user_id,
'username' => $username,
'logged_in' => true
);
//Set session userdata
$this->session->set_userdata($user_data);
} else {
//Set message
$this->session->set_flashdata('pass_login', 'You are now logged in');
redirect('admin/dashboard');
}
}
}
然后我用这个简单的方法注销:
public function logout(){
//Unset User Data
$this->session->unset_userdata('user_id');
$this->session->unset_userdata('username');
$this->session->unset_userdata('logged_in');
$this->session->sess_destroy();
redirect('admin/authenticate/login');
}
所以基本上我正在取消设置我的所有会话userdata,然后重定向回登录控制器。发生的情况是,当我重定向回登录页面时,我会自动再次登录,就像我的会话数据仍然有效并且存在一样。为什么会这样?
【问题讨论】:
-
你同时使用了 unset 和 $this->session->sess_destroy();试一试?
-
是的,我删除了
sess_destroy()并且它有效,但理论上它也应该可以使用它。奇怪。 -
其实我错了。它不工作......
-
你使用的是什么版本的codeigniter。
-
$this->form_validation->run()== FALSE应该是$this->form_validation->run()!== FALSE
标签: codeigniter session