1

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

4

2 回答 2

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

于 2013-07-20T05:42:51.243 回答
0

我建议迭代$_COOKIE超全局而不是$_SERVER['HTTP_COOKIE']自己解析。

于 2017-06-08T15:00:02.393 回答