2014-09-04 145 views
0

我发现如果我设置了一个没有到期值的cookie,然后创建另一个cookie,第一个cookie似乎被销毁。这是因为一个新的会话是创建还是因为它是另一个请求?为什么我的cookie在使用php设置另一个cookie时重置setcookie

我已经通过实际设置过期时间解决了我的'问题',但我只是想知道当创建第二个cookie时实际发生了什么。

setcookie('cookieA', 'stuff', null, '/'); 

setcookie('cookieB', 'stuff', time() + 1200, '/'); 

回答

1

$的expire_time有它在功能上的setcookie自己的作用,如果它小于现在cookie将被删除。没有办法不设置过期时间或将其设置为空。这只是一个cookie的规格来达到到期时间(http://www.faqs.org/rfcs/rfc2965.html)。


如果你想饼干永远持续下去,只是将其设置为巨大数量庞大
好运。 :)

+0

虽然cookie被删除?我可以浏览网站,cookie仍然存在。很明显,如果我关闭浏览器,它应该被删除,因为这会结束会话。但是第二个Cookie创建是什么造成的? – jackie 2014-09-04 18:37:02

+0

它仍然在浏览器关闭后仍然存在。第二个cookie创建时没有任何事情发生。它只是在第一个cookie上独立创建的。当到期时间到期时,Cookie将被删除。如果您想手动删除cookie,只需将过期时间设置为过去。 (例如'setcookie(“cookieB”,“stuff”,time() - 1,“/”);' – 2014-09-05 22:21:09

+0

它看起来像第一个cookie被删除,或者发生了什么事情后,我创建第二个one。当我设置过期时间而不是将它留空时,问题消失 – jackie 2014-09-06 04:17:14