Codeigniter CI中重定向后的会话数据丢失

Codeigniter CI中重定向后的会话数据丢失,codeigniter,session,Codeigniter,Session,我需要你的帮助。 我使用会话在CI中记录用户选择的业务类型。例如,$this->ci->session->set_userdata('biztype','food')。当用户登录时,它工作正常。但是,一旦用户注销,将在函数logout()中销毁会话。因此,我在函数logout()中再次设置userdata。您可以查看以下代码: function logout() { $biztype = $this->ci->session->userdata('biztype');

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

这是直接来自CodeIgniter用户指南:

销毁会话

要清除当前会话,请执行以下操作:

$this->session->sess_destroy();
注意:此函数应该是最后调用的函数,甚至是flash 变量将不再可用。如果你只想要一些东西 已销毁而不是全部,请使用unset_userdata()

因此,不可以,您不能先销毁会话,然后向其中添加用户数据,您需要重新加载/重定向,然后在新会话建立后添加数据


尝试使用Cookie进行体验,或者使用前面提到的
unset_userdata()
fn.

$this->session->sess_destroy()

仅应在执行结束时调用此函数。对于未设置数据(正如您正在尝试的那样),最好使用
unset\u userdata
方法。看看您应该如何实现这一点:

$unset_items = array('user_id' => '', 'username' => '', 'status' =>  '') ;

$this->ci->session->unset_userdata( $unset_items ) ;

你的意思是当我销毁会话时,会话不再记录数据,因此我无法再添加数据。但是我可以在页面重新加载/重定向时添加数据,因为此时会建立新会话?不要忘记,您不仅仅是在CI边界内进行PHP编程。CI不允许您先破坏会话,然后再向其添加内容。他们建议你最后销毁。还有一些在后台工作的事情你可能不知道!Jakup是正确的,但是出于逻辑考虑,在注销之后,您不应该按照“取消设置”用户数据,而只是尝试使代码工作。您能否解释一下,重定向后,这个“biztype”变量将在主页上的何处使用?或者你试着使用set_闪存数据?对不起,我想说的是重点。您注销了一个用户,但在重定向到主页后保留其biztype以用于什么?
   $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');