删除 Cookie 时出现问题,不会取消设置

2022-08-30 13:02:19

我尝试过搜索php手册和互联网上如何删除cookie,我尝试了与他们都说的完全相同的方式:

setcookie("name", '', 1);

setcookie("name", '', time()-3600);

但是当我在Firefox的cookie对话框中检查cookie时,它仍然具有相同的值。我使用以下行设置此 Cookie:

setcookie("name", $value, time() + 259200, $path);

我在stackoverflow上发现了这个问题:,但没有一个答案能解决问题。我也尝试将所有参数都放进去,就像作者说的那样,但它没有效果。

有人看到问题吗?


答案 1

该手册指出

必须使用与设置时相同的参数删除 Cookie。如果 value 参数为空字符串或 ,并且所有其他参数与以前对 setcookie 的调用匹配,则将从远程客户端中删除具有指定名称的 cookie。这是通过在内部将值设置为“已删除”并将过期时间设置为过去一年来实现的。FALSE

因此,还要确保正确指定 - 在删除它时也是如此。例如,如果在子目录中指定了 Cookie,则可能无法将其从父目录或子目录(或两者)中删除。$path

我不完全确定权限是如何工作的,但您可能希望使用Web开发人员工具栏来查看您尝试删除的cookie的路径


答案 2

我很惊讶没有人提到它(或者也许我错过了它),但域名也很重要!如果您使用的是 sub-domain.example.com,并且 cookie 来自 .example.com,则需要显式设置 domain 参数,否则它将采用当前域,并且将不起作用。

setcookie('cookiename', FALSE, -1, '/', '.example.com');

子域值不会清除父域中的 Cookie。


推荐