如何在codeigniter中为一个用户使用两个会话?

时间:2010-06-03 16:47:40

标签: php session codeigniter

我使用购物车类作为购物车。

现在我想使用 Simplelogin库,但登录时会删除购物车会话。

如何解决这个问题?

一个用户可以使用两个会话吗?

或者可能在同一个会话中合并所有内容?

2 个答案:

答案 0 :(得分:1)

我不知道这是否会对你有所帮助,因为我不使用Code Igniter,也不知道那里的东西是如何处理的。

但是我通常在会话中使用一切的子阵列,所以没有vars有被覆盖的危险。所以如果我有一个登录脚本,它只会保存到$ _SESSION ['login'](例如$ _SESSION ['login'] ['password_hash'])

如果使用代码点火器无法实现,或者该库总是删除会话(哪种类型的库会执行类似的操作?),则必须将数据保存在其他位置。在登录表单中的隐藏表单字段中(不要忘记首先序列化数据)或在Cookie中。

答案 1 :(得分:0)

简单登录遵循一个非常常见的过程,在登录后重新创建一个新会话,因此必须在用户登录之前保存购物车数据。

你可以在Simplelogin的函数登录代码中看到:

     //Destroy old session
    $this->CI->session->sess_destroy();

    //Create a fresh, brand new session
    $this->CI->session->sess_create();

因此,在登录控制器中,您调用simplelogin->登录($ user,$ password),您必须在登录前保存并稍后恢复购物车,如下所示:

$savedCart = $this->cart->contents();
if ( $this->simplelogin->login($user, $password) ){
   // at this point the session has been regenerated, so 
   $this->cart->insert($savedCart); 
}

希望这会有所帮助