【发布时间】:2010-06-03 16:47:39
【问题描述】:
我将 cart 类 用于购物车。
现在我想使用 Simplelogin 库,但登录时购物车会话被删除。
如何解决?
一个用户可以使用两个会话吗?
或者也许在同一个会话中合并所有?
【问题讨论】:
标签: php session codeigniter
我将 cart 类 用于购物车。
现在我想使用 Simplelogin 库,但登录时购物车会话被删除。
如何解决?
一个用户可以使用两个会话吗?
或者也许在同一个会话中合并所有?
【问题讨论】:
标签: php session codeigniter
我不知道这是否会对您有所帮助,因为我不使用 Code Igniter,也不知道那里的东西是如何处理的。
但我通常对我在会话中所做的所有事情使用子数组,因此没有任何变量有被覆盖的危险。所以如果我有一个登录脚本,它只会保存到 $_SESSION['login'] (例如 $_SESSION['login']['password_hash'])
如果代码点火器无法做到这一点,或者该库总是删除会话(什么样的库会做这样的事情???),您必须将数据保存在其他地方。在登录表单的隐藏表单字段中(不要忘记先序列化数据)或在 Cookie 中。
【讨论】:
简单登录遵循一个非常常见的过程,登录后重新创建一个新会话,因此购物车数据必须在用户登录之前保存。
在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);
}
希望对你有帮助
【讨论】: