如何删除cookies?

时间:2011-10-28 13:58:45

标签: php cookies setcookie

当我print_r($_COOKIE);时,我得到以下结果。

Array ( [filters] => Array ( [input1] => 1 [input2] => 20000 [input3] => none ) [PHPSESSID] => 12334 ) 

我想删除一些元素并希望它像这样:

Array ( [filters] => Array ( [input3] => none ) [PHPSESSID] => 12334 ) 

我试过了,但它没有影响$_COOKIE

中的任何内容
$past = time() - 3600;
setcookie( "filters[input1]", "", $past, '/' );
setcookie( "filters[input2]", "", $past, '/' );

这里有什么问题?一整天都在尝试这个吗?

由于

4 个答案:

答案 0 :(得分:2)

您确定要调用setcookie()删除与创建Cookie时使用相同参数(路径,安全等)的Cookie吗?

此外,setcookie()不会影响正在运行的脚本中的$_COOKIE。只有对该脚本的后续调用才会有修改后的$_COOKIE数组。要从同一会话中的$_COOKIE中删除值,请致电unset($_COOKIE['name'])

答案 1 :(得分:1)

尝试:

unset($_COOKIE['filters']['input1']);
unset($_COOKIE['filters']['input2']);
$time = time() + 1000; // enything you want, if its in the past $_COOKIE['filters'] will no loger exist
setcookie('filters', $_COOKIE['filters'], $time, '/' );

答案 2 :(得分:1)

您必须在运行setcookie()之后重新加载页面 - 在重新加载页面之前,设置cookie的结果不可用。也可以尝试使用“较旧”的时间 - 超过1小时 - 尝试过去的一年。如果过去的时间不够,有些浏览器不会删除cookie

答案 3 :(得分:0)

如果您使用域创建了Cookie,则可能需要使用相同的域名删除。 即

设置Cookie:

setcookie('mycookie', 'value', time() + 999, '/', '.my.domain', false);

删除cookie:

 setcookie('mycookie', "", -1, '/', '.my.domain', false);