删除 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 不可能,因为之前阅读过这个主题。我确定domain
和path
是一样的。
【参考方案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 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
为啥设置 document.cookie 在 Chrome 中不起作用?
从 url 代码中删除 index.php 在 Godaddy Plesk 托管的 codeigniter 中不起作用?