2016-08-23 231 views
0

我无法解释太多,但我目前正试图从保存在cookie中的购物车中删除产品。setcookie()无法正常工作

if(isset($_GET['remove'])) { 
    $remove = $_GET["remove"]; 
    foreach($cart_saved as $q) { 
    if($q == $remove) { 
     unset($cart_saved[$q]); 
     setcookie("shop_items", json_encode($cart_saved), time() + 36000); 
    } 
} 

值从阵列中删除,但我不能更新cookie的

+1

看一看会话似乎可以合理地打破循环。您将这些详细信息保存在那里,而不是原始饼干 – georoot

+0

不要每次通过循环调用'setcookie'。循环完成后调用一次。 – Barmar

+0

检查你的PHP错误日志,确保你没有'Headers already sent'警告。 – Barmar

回答

0
  1. 您的回路的误差。您需要使用$ q的键作为索引,而不是存储在$ q中的值。
  2. 值被发现后

foreach($cart_saved as $key => $q) { 
    if($q == $remove) { 
     unset($cart_saved[$key]); 
     setcookie("shop_items", json_encode($cart_saved), time() + 36000); 
     break; 
    } 
} 
+0

谢谢你的回答,但问题是一样的 –

+0

@DanielDimitrow这会修复你的部分代码。您必须在任何其他输出到浏览器之前设置cookie。看看http://stackoverflow.com/questions/8028957/how-to-fix-headers-already-sent-error-in-php。 – user4035

+0

谢谢,我现在明白了。它像一个魅力一样工作! –

0

你写你的cookie每次就是为什么有一个问题。所以:

if(isset($_GET['remove'])) { 
    $remove = $_GET["remove"]; 
    foreach($cart_saved as $q) { 
    if($q == $remove) { 
     unset($cart_saved[$q]); 
    } 
    setcookie("shop_items", json_encode($cart_saved), time() + 36000); 
} 
+0

尝试过它,同样的事情。 –

+0

您是否尝试向您的Cookie添加域名? –

+0

我试过了,仍然没有工作 –