我正在设置一个cookie,但有一些问题。目前cookie格式是:
setcookie("company_id", $company_id, 0, '/');
所以到期时间设置为0
表示cookie永远不会过期,但是当我试图不设置任何到期时间时,我在第三个参数中传递一个空参数,如下所示:
setcookie("company_id", $_POST["company_id"], "", '/');
但这不起作用,cookie没有得到,当我将空参数更改为0
时,它开始工作。有什么建议吗?
答案 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)
);