2016-08-23 4 views
0

私は説明できませんが、現在、ショッピングカートからクッキーに保存されている商品を削除しようとしています。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); 
    } 
} 

値は、配列から削除されますが、私はあなたは問題がある理由たびは、あなたのクッキーを書くクッキー

+1

を発見された後、ループを切断するのが妥当と思われるが、セッションを見てください。これらの詳細はrawクッキーには保存されずに保存されます – 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

を更新することはできません。だから、:

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

私はまだ試してみました –

関連する問題