注销时会话不会被取消
Session is not getting unset when signing out
我已经在 codeigniter 中创建了管理面板。登录工作正常,数据也在会话中设置。问题是当我单击注销时它不会清除会话数据。
我的控制器注销功能:
public function signout()
{
$this->user_m->signout();
redirect('admin','refresh');
}
user_m
模型注销函数:
public function signout()
{
$adminsignindata = array('loginname','adminusername','userid','role_id','loggedin');
$this->session->unset_userdata($adminsignindata);
}
我不知道为什么当我在 unset_userdata
中使用数组时会话没有被取消设置。
在 localhost 中它可以工作,但在 live 中不工作。在现场我不得不使用 key wise 取消设置 userdata。
Please use the below code it will work.
Put your session in array
$session = [
'user_name' => 'msrinivas',
'name' => 'Srinivas'
];
$this->session->set_userdata('logged_console', $session);
unset session using array key
$this->session->unset_userdata(['logged_console']);
CI2.x会话库包含函数unset_userdata();它适用于字符串或关联数组:
unset_userdata() can be used to remove it (the session), by passing the session key.
This function can also be passed an associative array of items to
unset.
来源:CI 2.x manual, Removing Session Data
在会话库中的函数 unset_userdata() 下方,第 500 行附近:
function unset_userdata($newdata = array())
{
if (is_string($newdata))
{
$newdata = array($newdata => '');
}
if (count($newdata) > 0)
{
foreach ($newdata as $key => $val)
{
unset($this->userdata[$key]);
}
}
$this->sess_write();
}
所以如果您继续使用版本 2.x,您需要将 $adminsignindata
更改为关联数组:
$adminsignindata = array('loginname'=>'','adminusername'=>'','userid'=>'','role_id'=>'','loggedin'=>'');
在 CI 3.x 中,此函数已更改并接受“正常”数组,如您的代码示例
我已经在 codeigniter 中创建了管理面板。登录工作正常,数据也在会话中设置。问题是当我单击注销时它不会清除会话数据。
我的控制器注销功能:
public function signout()
{
$this->user_m->signout();
redirect('admin','refresh');
}
user_m
模型注销函数:
public function signout()
{
$adminsignindata = array('loginname','adminusername','userid','role_id','loggedin');
$this->session->unset_userdata($adminsignindata);
}
我不知道为什么当我在 unset_userdata
中使用数组时会话没有被取消设置。
在 localhost 中它可以工作,但在 live 中不工作。在现场我不得不使用 key wise 取消设置 userdata。
Please use the below code it will work.
Put your session in array
$session = [
'user_name' => 'msrinivas',
'name' => 'Srinivas'
];
$this->session->set_userdata('logged_console', $session);
unset session using array key
$this->session->unset_userdata(['logged_console']);
CI2.x会话库包含函数unset_userdata();它适用于字符串或关联数组:
unset_userdata() can be used to remove it (the session), by passing the session key.
This function can also be passed an associative array of items to unset.
来源:CI 2.x manual, Removing Session Data
在会话库中的函数 unset_userdata() 下方,第 500 行附近:
function unset_userdata($newdata = array())
{
if (is_string($newdata))
{
$newdata = array($newdata => '');
}
if (count($newdata) > 0)
{
foreach ($newdata as $key => $val)
{
unset($this->userdata[$key]);
}
}
$this->sess_write();
}
所以如果您继续使用版本 2.x,您需要将 $adminsignindata
更改为关联数组:
$adminsignindata = array('loginname'=>'','adminusername'=>'','userid'=>'','role_id'=>'','loggedin'=>'');
在 CI 3.x 中,此函数已更改并接受“正常”数组,如您的代码示例