【问题标题】:How to use two sessions for one user in codeigniter?如何在codeigniter中为一个用户使用两个会话?
【发布时间】:2010-06-03 16:47:39
【问题描述】:

我将 cart 类 用于购物车。

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

如何解决?

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

或者也许在同一个会话中合并所有?

【问题讨论】:

    标签: php session codeigniter


    【解决方案1】:

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

    但我通常对我在会话中所做的所有事情使用子数组,因此没有任何变量有被覆盖的危险。所以如果我有一个登录脚本,它只会保存到 $_SESSION['login'] (例如 $_SESSION['login']['password_hash'])

    如果代码点火器无法做到这一点,或者该库总是删除会话(什么样的库会做这样的事情???),您必须将数据保存在其他地方。在登录表单的隐藏表单字段中(不要忘记先序列化数据)或在 Cookie 中。

    【讨论】:

    • 谢谢,我刚刚意识到当我登录时会话被删除,并创建了一个新会话。我只是评论了两行。
    【解决方案2】:

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

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

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

    因此,在您的登录控制器中,您调用 simplelogin->login($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); 
    }
    

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-09
      • 1970-01-01
      • 2020-05-07
      • 1970-01-01
      • 2016-06-25
      • 1970-01-01
      相关资源
      最近更新 更多