在CI中重定向后会话数据消失

时间:2011-12-06 06:20:33

标签: codeigniter session

我需要你的帮助。 我使用会话在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已更改。 谢谢你的帮助。

3 个答案:

答案 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');