到目前为止,我的情况是用户按下登出按钮时,购物车将被销毁/取消。
unset($_SESSION[CART_COOKIE]);
setcookie(CART_COOKIE,'',1,"/",$domain,false);**
之后,如果我以同一用户身份登录,则购物车将被移除。当我销毁它时。
所以我试图删除setcookie('','','','','','')
,并且当我以相同的用户身份登录时,购物车项目仍保留在那里。
但是,如果我登录到另一个用户,则无法将购物车添加到该特定用户,而是仍将购物车添加到先前的用户。
任何提示?
答案 0 :(得分:0)
我认为您正在混合使用$_COOKIE
和$_SESSION
超全局变量。
会话是手动创建的,然后在用户注销时销毁-如果网站制作正确:您必须手动销毁该会话-或在他离开后销毁该会话(不活动超时-由服务器配置管理)。
Cookie存储在用户的浏览器中,您必须手动创建/删除它们。
从这里可以看到,您正在创建一个cookie:
setcookie(CART_COOKIE,'',1,"/",$domain,false);
然后删除会话变量:
unset($_SESSION[CART_COOKIE]);
这些不是同一个变量!
要使用Cookie来存储购物车:
setcookie(CART_COOKIE . $user_id, '', 1, "/", $domain, FALSE); //replace $user_id with some specific value for account-less carts
echo ($_COOKIE[CART_COOKIE . $user_id]);
unset($_COOKIE[CART_COOKIE . $user_id]) //if the user destroys his cart, OR if there is already an account-less cart.
要使用会话变量(推荐):
if (!$user_id) { //If the user is not logged in (account-less cart)
$_SESSION["cart"] = $value; //store the value un a session variable
echo ($_SESSION["cart"]); //retrieve the value
} else { //If the user is logged in
//store the value in a database (+bonus : you can have log data)
//OR retrieve data.
//Both need SQL requests.
}