即使我将其设置为删除,cookie 也会不断返回


cookies keep coming back even if i set it to delete

好的,我用这段代码来设置饼干

setcookie("search", "active", time()+3600);

我用它来删除饼干

setcookie("search", "active", time()-3600);

我用它来检查和检索饼干

<?
  if (isset($_COOKIE["search"]))
  {
      if ($_COOKIE["search"] === "active")
      {
          echo "cookies active"."<br/>";
          echo $_COOKIE["search"];
      }
      else
      {
          echo "cookies is not active";
      }
  }
  else
  {
      echo "no cookies";
  }
?>

但是设置的 cookie 会一次又一次地回来,即使我在刷新页面时使用上面指定的方法删除了它。

不确定为什么会出现此错误,但之前见过这个

例 : 调用

setcookie ( "user", "Alex Porter", time () + 3600 );
setcookie ( "search", "active", time () + 3600 );
var_dump($_COOKIE);
setcookie ( "search", "", time () - 3600 );

仅输出

array(1) {
    ["user"]=>
    string(11) "Alex Porter"
}

预期成果

array(2) {
    ["user"]=>
    string(11) "Alex Porter"
    ["search"]=>
    string(6) "active"
}

结论

我认为你会只坚持一个饼干,或者一次删除所有饼干

尝试

注意* 确保setcookie始终位于页面顶部,并且之前没有输出

setcookie ( "search", "active", time () + 3600 );  
//setcookie ( "search", "", time () - 3600 );  // uncomment when you want to remove cookie
if (isset ( $_COOKIE ["search"] )) {
    if ($_COOKIE ["search"] === "active") {
        echo "cookies active" . "<br/>";
        echo $_COOKIE ["search"];
    } else {
        echo "cookies is not active";
    }
} else {
    echo "no cookies";
}

在 PHP 中删除 cookie 不会影响 $_COOKIE 超级全局,因为此数组是在脚本运行之前填充的。但是,当您加载下一页时,它不应再存在于 $_COOKIE 中。