删除 cookie 在 PHP 中不起作用

Posted

技术标签:

【中文标题】删除 cookie 在 PHP 中不起作用【英文标题】:Removing cookie not working in PHP 【发布时间】:2017-12-15 23:28:00 【问题描述】:

这有点奇怪,但我设置了一个 cookie:

setcookie('auth', 'ok', time() + 3600, "/");

结果:

Name:   auth
Content:    ok
Domain: --.com
Path:   /
Send for:   Any kind of connection
Accessible to script:   Yes
Created:    Tuesday, July 11, 2017 at 11:00:23 PM
Expires:    Wednesday, July 12, 2017 at 12:00:23 AM

它工作正常,但是当我想删除这个 cookie 时:

setcookie('auth', 'ok', time() - 3600, "/");
unset($_COOKIE['auth']);

结果没有变化,cookie没有被删除,我的浏览器里还是得到了这个cookie。

cookie 是在这个 URL 中创建的:

auth.php?action=confirm

并使用ajax调用函数:

模型/auth.php

它应该在这个 URL 中删除它:

auth.php?action=logout

但它不起作用。有什么想法吗?

【问题讨论】:

擦除cookie时尝试将值设置为null,并将时间设置为-1,但过去的任何时间都可以。 你试过setcookie("auth", "", time()-3600); 吗?定义空值 @JTC 是的,我也尝试过null,但无法正常工作,为空且为空.. 仍然有这个 cookie @tilz0R 你的意思是setcookie('auth', null, time() - 1, "/"); ?还是不行 @JTC 不可能,因为之前阅读过这个主题。我确定domainpath 是一样的。 【参考方案1】:

删除 cookie 的一种干净方法是清除 $_COOKIE 值和浏览器 cookie 文件:

if (isset($_COOKIE['auth'])) 
  unset($_COOKIE['auth']);
  setcookie('auth', '', time() - 3600, '/'); // Empty value and old timestamp

【讨论】:

它是否将浏览器cookie文件更改为null? 没有任何改变。我插入这个 if (isset($_COOKIE['auth'])) echo "ok"; 并打印 ok 我的意思是它检测到该 cookie 但无法删除或更改。 应该检查这个***.com/questions/2856366/… 我以前读过这个主题,已经读过一遍,没有任何改变。【参考方案2】:

您很可能在销毁 cookie 之前输出了一些数据。

尝试检查这一点,在任何输出之前使用此代码:

setcookie("auth", "", time()-3600);

通过$sent = headers_sent($file, $line);,您可以查看在尝试销毁 cookie 之前是否已经输出了一些数据。

【讨论】:

以上是关于删除 cookie 在 PHP 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

$_COOKIE 在 Safari iOS 中不起作用

记住我功能在 Symfony2 中不起作用

Instagram注销在iPhone中不起作用?

PHP 会话在服务器的某些站点中不起作用

为啥设置 document.cookie 在 Chrome 中不起作用?

从 url 代码中删除 index.php 在 Godaddy Plesk 托管的 codeigniter 中不起作用?