删除cookie数组中的值

时间:2012-11-16 15:54:21

标签: php arrays cookies shopping-cart

我有一个像这样的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"}]

工作流程就像购物车,我可以添加和删除项目。我网站上的一个“产品”包含:item_id,item_tag和session_id;

对于添加项目,cookie将使用item_id扩展“:”“X”,“item_tag”:“X”,“session_id”:“X

现在,如果我点击删除,我想删除cookie中的当前三个值

我用

尝试

取消设置($ _ COOKIE [“my_Cookie”,'item_id'=> $ item_id,'item_tag'=> $ item_tag,'session_id'=> $ session_id]);但这不起作用

是否可以删除我的cookie的特定值?

3 个答案:

答案 0 :(得分:3)

像这样:

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

这是因为设置没有值的cookie与删除它是一样的。

答案 1 :(得分:1)

如果我没弄错,你不能直接修改cookie的价值;您必须阅读该值,进行任何修改,然后使用相同的名称替换cookie。

因此,在这种情况下,一旦用户点击删除链接,您的脚本应该保存他们想要删除的项目的ID,读取cookie值,重写数组然后用更新的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);

答案 2 :(得分:0)

我相信一个cookie只会被存储为一个字符串,所以你可能最好只是覆盖它......