无法使用PHP清除cookie

时间:2013-07-20 04:12:47

标签: php cookies setcookie httpcookie

我尝试了几种方法来清除 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。

2 个答案:

答案 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']