【问题标题】:How can I delete PHP cookies without refreshing the browser?如何在不刷新浏览器的情况下删除 PHP cookie?
【发布时间】:2026-02-16 03:20:03
【问题描述】:

我想删除一个 cookie,但发现必须刷新浏览器或单击另一个链接才能使 cookie 消失。我在 PHP 中使用了 header(..)。

if(isset($_COOKIE['auth_key'])){setcookie("auth_key", "", time() - 3600);}
header("Location: ../login.php"); 

当我进入登录页面时,cookie 会输出,但在刷新时它会消失,或者如果我从那里转到另一个链接,它就会消失。

我希望在没有任何用户交互的情况下删除 cookie,并在服务器加载 login.php 之前删除。

任何帮助将不胜感激。

这个答案是:

 if(isset($_COOKIE['auth_key'])){setcookie("auth_key", "", 1,'/');}

因为我用斜杠“/”设置了 cookie。我用它来删除它,它现在可以工作了。然而,奇怪的是 cookie 在刷新时仍然被删除。

【问题讨论】:

  • 不要使用相对时间来删除 cookie。人们的时钟可能会被关闭。要删除 cookie,请始终使用固定时间值 1
  • 试过了,但 cookie 正在删除我(和你)的方式。这是让浏览器接受这一点的事实。

标签: php cookies


【解决方案1】:

只需清除 login.php 开头的 cookie(使用此代码)而不是此重定向页面。

【讨论】:

  • 我在注销和登录页面上都删除了 cookie,但仍然没有成功。
  • 还是没有锁?发现了什么?
【解决方案2】:

考虑设置一个超时时间,然后使用 Javascript 向服务器端页面发起 AJAX 请求以删除有问题的 cookie。

【讨论】:

  • cookie 需要在注销时立即删除,因为它会影响登录页面菜单。您的意思是在 login.php 上放置一个 ajax 脚本,以复制刷新操作。
【解决方案3】:

我找到的正确答案是用“/”设置cookie:

if(isset($_COOKIE['auth_key'])) {
    setcookie("auth_key", "", 1, '/');
}

我用它来删除所有 cookie,它现在可以工作了。但是,刷新时 cookie 仍会被删除。

【讨论】: