PHP Cookie将到期时间设置为无

时间:2012-06-14 15:43:56

标签: php cookies

我正在设置一个cookie,但有一些问题。目前cookie格式是:

setcookie("company_id", $company_id, 0, '/');

所以到期时间设置为0表示cookie永远不会过期,但是当我试图不设置任何到期时间时,我在第三个参数中传递一个空参数,如下所示:

setcookie("company_id", $_POST["company_id"], "", '/');

但这不起作用,cookie没有得到,当我将空参数更改为0时,它开始工作。有什么建议吗?

2 个答案:

答案 0 :(得分:5)

expire参数以秒为单位。 Setcookie function

  

除name参数之外的所有参数都是可选的。你也可以   用空字符串(“”)替换参数以跳过它   论点。因为expire参数是整数,所以不能跳过它   如果是空字符串,请改用零(0)。

因此,除非您希望它在会话结束时到期,否则您需要具有零以外的值。

0表示如果你希望cookie在“永不过期”中使用很长时间,那么cookie应该在会话结束时到期。

setcookie("TestCookie", $value, time()+3600*24*365*10, '/')

例如那将是十年。

请记住,人们可以经常清除cookie。所以你的可能会被删除。 Cookie也是特定于浏览器的,因此如果每次都需要存储在此中的数据,那么如果用户切换浏览器,除非再次设置,否则将无法再使用它。

答案 1 :(得分:3)

你问的是错误的问题。没有办法设置cookie不会过期;这不是PHP限制,它不是cookie规范的一部分(http://www.faqs.org/rfcs/rfc2965.html)。

您最好的选择是在将来使用日期。例如,要设置一个在二十年后到期的cookie:

setcookie(
  "CookieName",
  "CookieValue",
  time() + (20 * 365 * 24 * 60 * 60)
);