2013-02-15 74 views
0

我已经通过各种线程阅读,但没有任何解决方案似乎工作。PHP cookie没有删除

我有两个PHP页面:

cookieson.php

<?php session_start(); 
$future = time()+60*60*24*30*12; 
setcookie('CookiesAgreed', 'yes', $future, '/'); 
?> 

cookiesoff.php

<?php session_start(); 
$past = time()-9999999999999999; 
setcookie('CookiesAgreed', null, $past, '/'); 
?> 

cookieson.php正确设置Cookie “CookiesAgreed” 与到期大约一年之后。

cookiesoff.php应该完全清除“CookiesAgreed”cookie,但似乎没有做任何事 - 值不会改变(根据Firefox的Cookies列表),过期不会改变,cookie不会改变不要删除。有时会创建一个全新的cookie(同样,根据Firefox)具有相同的名称,值和截止日期。

我在做什么错?

+0

随着我的火狐18我不能再现它。除会话标识符外,Firebug不会列出任何Cookie。 – fyr 2013-02-15 11:24:59

+0

只是说Cookie的法律被取消,这是我听到的最后一件事:) – EaterOfCode 2013-02-15 11:26:49

+0

D'oh。我很愚蠢。我认为Firefox的Cookie列表窗口会动态更新已删除的Cookie(就像它自动添加的Cookie一样)。 原来,您必须确定您的方式不在窗口中,然后再次打开,以查看已删除的Cookie。 道歉。 – 2013-02-15 12:07:36

回答

7

这超出堆栈(你可以在http://www.rugbyfiles.com/cookieson.phphttp://www.rugbyfiles.com/cookiesoff.php见)和溢出:

$past = time()-9999999999999999; 

相反,这样做的方法:

$past = time()-60*60*24*30*12; 

时间变量可以容纳只有从04294967296的值。当你给出如此长的负值时,它会走出堆积。

+7

+1使用“堆栈”和“溢出”。 – qben 2013-02-15 11:26:06

+0

哈哈......是故意的。 :)但这些是我唯一可以使用的单词。 :) – 2013-02-15 11:26:24

+0

Stuart Pinfold来到右边的网站寻求帮助,hehe:D – 2013-02-15 11:28:53

0
setcookie("CookiesAgreed","",time()-24*60*60,"/"); 
+1

请添加一些关于您的答案的细节。 – emmanuel 2015-02-24 13:07:42