PHP将cookie时间设置为过去不会删除它

PHP将cookie时间设置为过去不会删除它,php,cookies,Php,Cookies,我对不稳定的饼干有问题。目前,我无法注销。Cookie本身在验证用户会话时就像一个符咒。 因此,在第一次登录时,我以这种方式设置cookie(成功登录时): 上面的Cookies很好用,我在阅读它们时没有问题 这是我的注销代码: setcookie($cookie_name, '', time()-3600, '/', '.website.com'); unset($_COOKIE[$cookie_name]); unset($_SESSION['username']); \ unset(

我对不稳定的饼干有问题。目前,我无法注销。Cookie本身在验证用户会话时就像一个符咒。 因此,在第一次登录时,我以这种方式设置cookie(成功登录时):

上面的Cookies很好用,我在阅读它们时没有问题

这是我的注销代码:

setcookie($cookie_name, '', time()-3600, '/', '.website.com');
unset($_COOKIE[$cookie_name]);
unset($_SESSION['username']);    \
unset($_SESSION['loggedin']);    / were setted after successful login

根据我所阅读的内容,这应该可以工作并删除cookie,但是它们不会:(

您必须确保cookie的名称、域、路径,甚至安全设置都与您尝试删除的内容相同

如果创建的cookie如下所示:

setcookie('name', 'value', time()+3600);
setcookie('name', 'value', time()-3600, '/', '.website.com');
然后尝试按如下方式删除它:

setcookie('name', 'value', time()+3600);
setcookie('name', 'value', time()-3600, '/', '.website.com');
那不行。你必须拥有与创建cookie时使用的参数完全相同的参数

如果您使用JavaScript创建cookie,请仔细检查您的设置

作为测试,请尝试以下所有代码。如果有效,请逐个注释,直到只剩下有效的代码:

setcookie($cookie_name, '', time()-3600);
setcookie($cookie_name, '', time()-3600, '/');
setcookie($cookie_name, '', time()-3600, '/', '.website.com');
setcookie($cookie_name, '', time()-3600, '/', '.website.com', 1);

您确定cookie_名称是相同的,并且您尚未向页面输出任何导致setcookie失败的内容吗?@BrandonWamboldt是的,cookie名称是父文件中的一个单独变量(包括这些脚本)所以它不能不同。此外,此代码包含在页面源代码的最顶端,因此,是的-我肯定会尝试更大的不同,例如time()-86400不使用cookie过期的相对时间。您完全取决于用户的时钟是否相对准确。设置“遥远的过去”更安全时间,例如1970年1月2日。任何人的时钟离得那么远,他们可能会遇到任何问题。我将
time()-3600
改为
time()-根据FFMite中的开发控制台,360000
和cookie仍然存在,但是上面的代码都不起作用。这可能是因为我可能忘记了取消设置有价值的参数。有没有办法取消设置整个会话和所有cookie的参数?唯一的谜团是
$cookie\u name
的值。你肯定这个值吗设置为您期望的样子?尝试删除此变量,并将实际的cookie名称作为普通字符串键入。我发现了其中的问题。cookie不会覆盖,但我正在以类似的方式进行覆盖。只有在删除现有cookie并将过去的cookie设置为新cookie时,我才能注销。但是..如何在php中删除现有cookie?修复了.S解决方案是删除
.website.com
.Somewhy。然而,我尝试了你们所有人的4个建议(使用相同的参数设置和重写),所以我的解决方案:setcookie($cookie_name,,,time()-3600,,/);是正确的。