【问题标题】:Not able to clear cookie what ever I do using PHP无法清除 cookie 我使用 PHP 所做的事情
【发布时间】:2013-07-19 11:26:06
【问题描述】:

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

【问题讨论】:

  • explode 返回一个数字数组,而不是关联数组,因此$cookie_id 将是一个数字,而不是 cookie 的名称。
  • 有没有办法将爆炸返回作为带有名称的关联数组?
  • 感谢您的快速回复

标签: php cookies setcookie httpcookie


【解决方案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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2014-04-23
      • 1970-01-01
      • 2010-09-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多