我尝试了几种方法来清除 localhost 上的Cookie。无论我做什么,我都无法在正常模式下在Chrome和Firefox中删除它们,但它在Chrome的Incognito和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。
答案 0 :(得分:1)
$_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
。
答案 1 :(得分:0)
我建议迭代$_COOKIE
超全局而不是自己解析$_SERVER['HTTP_COOKIE']
。