我需要你的帮助。 我使用会话在CI中记录用户选择的业务类型。例如,$ this-> ci-> session-> set_userdata(' biztype',' food')。用户登录时,它可以正常工作。但是,一旦用户注销,会话将在函数logout()中被销毁。所以我在函数logout()中再次设置userdata。你可以查看下面的代码:
function logout()
{
$biztype = $this->ci->session->userdata('biztype');
$this->delete_autologin();
$this->ci->session->set_userdata(array('user_id' => '', 'username' => '', 'status' => ''));
$this->ci->session->sess_destroy();
$this->ci->session->set_userdata('biztype',$biztype);
//echo $this->ci->session->userdata('biztype'); //here, i can get biztype that i want
}
但是,当我退出并重定向到主页时,我无法获取用户数据(' biztype')并且我的session_id已更改。 谢谢你的帮助。
答案 0 :(得分:1)
这可以直接来自CodeIgniter用户指南:
销毁会话
清除当前会话:
$this->session->sess_destroy();
注意:此函数应该是最后一个调用的函数,甚至是flash 变量将不再可用。如果你只想要一些物品 销毁,而不是全部,使用unset_userdata()。
所以不,你不能销毁会话然后添加user_data,你需要重新加载/重定向然后一旦建立新会话添加数据。
尝试使用Cookie作为保留,或使用提到的unset_userdata()
fn。
答案 1 :(得分:0)
$this->session->sess_destroy() ;
只应在执行结束时调用此函数。对于未设置的数据(正如您尝试的那样),最好使用unset_userdata
方法。看看你应该如何实现:
$unset_items = array('user_id' => '', 'username' => '', 'status' => '') ;
$this->ci->session->unset_userdata( $unset_items ) ;
答案 2 :(得分:0)
$email = "abc@gmail.com";
///set the session
use the set_userdata function and include the session library
$this->load->library('session');
$this->session->set_userdata('session name',Value);
i.e.
$this->session->set_userdata('email', $email);
//unset the session
$this->session->unset_userdata('session name');
i.e.
$this->session->unset_userdata('email');