3

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

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

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

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

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

4

2 回答 2

6

expire 参数以秒为单位。设置cookie函数

除了 name 参数之外的所有参数都是可选的。您也可以用空字符串 ("") 替换参数以跳过该参数。因为 expire 参数是整数,所以不能用空字符串跳过,请改用零 (0)。

因此,除非您希望它在会话结束时过期,否则您将需要一个非零值。

0 建议 cookie 应在会话结束时过期,如果您希望它“永不过期”,请使用很长时间。

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

例如,那将是十年。

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

于 2012-06-14T15:48:37.787 回答
4

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

最好的选择是使用遥远的未来日期。例如,要设置一个 20 年后过期的 cookie:

setcookie(
  "CookieName",
  "CookieValue",
  time() + (20 * 365 * 24 * 60 * 60)
);
于 2012-06-14T15:46:15.103 回答