当我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, '/' );
这里有什么问题?一整天都在尝试这个吗?
由于
答案 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);