在PHP中删除cookie无效

cwdobuhd  于 2023-02-15  发布在  PHP
关注(0)|答案(3)|浏览(217)

有点奇怪,但我在饼干里放了:

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的函数:
model/auth.php
它应该在此URL中删除它:
auth.php?action=logout
但它不起作用。你知道吗?

zy1mlcev

zy1mlcev1#

删除cookie的一个简单方法是同时清除$_COOKIE值和浏览器cookie文件:

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

3lxsmp7m2#

很可能您在销毁cookie之前正在输出一些数据。
尝试检查这一点,并在任何输出之前使用以下代码:

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

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

2hh7jdfx

2hh7jdfx3#

您必须检查路径是否也正确。您可以通过打开microsoft edge -〉设置-〉cookie和站点权限-〉查看所有cookie-〉搜索您站点的域名-〉单击下拉菜单并查找cookie名称-〉查看信息来完成此操作。在信息下您会找到路径。路径不总是“/”
然后用你在那里找到的路径替换“/”。例如,如果路径是“/abc”

setcookie('auth', null, time() - 3600, "/abc");

你也许可以在其他浏览器上找到cookie信息,但我只在microsoft edge上找到了如何做到这一点。

相关问题