我尝试了几种方法来清除localhost上的cookie。无论我做什么,我都无法在正常模式下在Chrome和Firefox中删除它们,但在Chrome的隐身和Firefox的私人浏览模式下运行良好。
这是我的代码:
$name = 'keepsignin';
if (isset($_SERVER['HTTP_COOKIE'])){
$cookies = explode(';', $_SERVER['HTTP_COOKIE']);
foreach ($cookies as $cookie_id => $cookie_value){
if($cookie_id === $name){
self::set_cookie($cookie_id, $value, $expiry, $path, $domain);
}
}
}
手动清除cookie后,一切正常,但我无法删除已经存在的cookie。
$_SERVER['HTTP_COOKIE']
是一个以分号分隔的键值对列表,格式为:
key1=value1;key2=value2;key3=value3;...
您在,但不是=
我想你可能在寻找这样的东西:
$name = 'keepsignin';
if (isset($_SERVER['HTTP_COOKIE'])) {
$cookies = explode(';', $_SERVER['HTTP_COOKIE']);
foreach ($cookies as $cookie) {
list($cookie_id, $cookie_value) = explode('=', $cookie);
if($cookie_id === $name){
self::set_cookie($cookie_id, $value, $expiry, $path, $domain);
}
}
}
请注意使用list()在一个操作中分配$cookie_id
和$cookie_value
。
我建议迭代$_COOKIE
超全局,而不是自己解析$_SERVER['HTTP_COOKIE']
。