0

このようなjsonアイテムを含むCookie配列があります

//set my cookie

setcookie("my_Cookie", $cookie_content, time()+3600);

//this is the content of my cookie for example with 2 items
[{"item_id":"9","item_tag":"AS","session_id":"554obe5dogsbm6l4o9rmfif4o5"},{"item_id":"6","item_tag":"TE","session_id":"554obe5dogsbm6l4o9rmfif4o5"}]

ワークフローはショッピング カートのようなもので、アイテムを追加および削除できます。私のウェブサイトの 1 つの「製品」には、item_id、item_tag、および session_id が含まれています。

アイテムを追加するために、cookie は item_id":"X","item_tag":"X","session_id":"X で拡張されます

今、削除をクリックすると、Cookie の現在の 3 つの値を削除したい

で試してみます

unset($_COOKIE["my_Cookie", 'item_id'=> $item_id, 'item_tag'=> $item_tag, 'session_id'=> $session_id]); しかし、これは機能しません

Cookie の特定の値を削除することはできますか?

4

3 に答える 3

3

このような:

setcookie('cookie_name'); // Deletes the cookie named 'cookie_name'.

これが機能するのは、値を指定せずにCookieを設定することは、Cookieを削除することと同じだからです。

于 2012-11-16T15:58:49.707 に答える
1

私が間違っていなければ、Cookieの値を直接変更することはできません。値を読み取り、変更を加えてから、同じ名前を使用してCookieを置き換える必要があります。

したがって、この場合、ユーザーが削除リンクをクリックすると、スクリプトは削除するアイテムのIDを保存し、Cookie値を読み取り、配列を書き換えてから、Cookieを更新された値に置き換える必要があります。

おそらく、このデモが役立つでしょう:

// Should be the user submitted value to delete.
// Perhaps a $_GET or $_POST value check.
$value_to_delete = 9;  

// Should be the cookie value from $_COOKIE['myCookie'] or whatever the name is.
// Decode from JSON values if needed with json_decode().
$cookie_items = array( 
    array("item_id" => 9, "item_tag" => "RN"), 
    array("item_id" => 6, "item_tag" => "RN"), 
    array("item_id" => 4, "item_tag" => "RN")
);

// Run through each item in the cart 
foreach($cookie_items as $index => $value)
{
    $key = array_search($value_to_delete, $value);

    if($key == "item_id")
    {
        unset($cookie_items[$index]);
    }
}

// Reset the index
$cookie_items = array_values($cookie_items);

// Set the cookie
setcookie($cookie_items);

// Debug to view the set values in the cookie
print_r($cookie_items);
于 2012-11-16T15:59:41.077 に答える
0

Cookieは単に文字列として保存されると思うので、上書きするのが最善かもしれません...

于 2012-11-16T16:00:22.183 に答える