Bro*_*ke. 4 php session codeigniter tankauth
我在我的CI 1.7.3 App中使用Tank Auth进行用户管理.一切正常,但我正在尝试设置一个flash_message用户退出时显示.问题是该$this->tank_auth->logout();功能会破坏会话.我已经修改了Tank Auth库中的注销功能,如下所示:
function logout() {
$this->delete_autologin();
// See http://codeigniter.com/forums/viewreply/662369/ as the reason for the next line
$user_session_data = array('user_id' => '', 'username' => '', 'status' => '');
$this->ci->session->set_userdata($user_session_data);
$this->ci->session->unset_userdata($user_session_data);
}
Run Code Online (Sandbox Code Playgroud)
以前是这样的
function logout()
{
$this->delete_autologin();
// See http://codeigniter.com/forums/viewreply/662369/ as the reason for the next line
$this->ci->session->set_userdata(array('user_id' => '', 'username' => '', 'status' => ''));
$this->ci->session->sess_destroy();
}
Run Code Online (Sandbox Code Playgroud)
在我的控制器中我有
function logout(){
if ($this->tank_auth->is_logged_in()) { // logged in
$this->session->set_flashdata('status_message', $this->lang->line('auth_message_logged_out'));
$this->tank_auth->logout();
redirect('');
}
Run Code Online (Sandbox Code Playgroud)
}
如果我删除该$this->tank_auth->logout();功能消息显示正常.我确定这是一个简单的会话问题
如果在调用后在同一请求中使用数据库时尝试设置flashdata sess_destroy(),则无法工作(因为没有会话要将flashdata附加到).
要解决此问题,请$this->ci->session->sess_create();在调用后添加sess_destroy().这是有效的,因为您在尝试向其追加数据之前重新创建会话.sess_destroy()如果您在数据库中使用会话,这是在使用flashdata之后的唯一方法.
| 归档时间: |
|
| 查看次数: |
3259 次 |
| 最近记录: |