2016-08-23 225 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

我試過了,仍然沒有工作 –