PHP设置Cookie有效期为1时浏览器出现异常日期的原因?
核心问题是你用错了setcookie的第三个参数:
- PHP的
setcookie函数第三个参数要传Unix时间戳——也就是从1970年1月1日00:00:00 UTC开始计算的总秒数,不是你误以为的「有效期秒数」。 - 你传入的1、10、1000都是极小数值,对应的时间是1970年1月1日零点刚过几秒,属于远早于当前的过去时间。
- 浏览器解析这种极早的时间戳时,触发了日期转换的溢出异常,所以才显示出5838270这种离谱的年份。
如果要设置Cookie在N秒后过期,得用当前时间戳加上对应秒数,比如设置1小时有效期的写法:
setcookie(cookie_name, 'logout', time() + 3600, cookie_path, cookie_domain, cookie_secure, cookie_httponly );
要是想立刻删除Cookie,才需要传入过去的时间戳(比如time() - 3600)。
内容的提问来源于stack exchange,提问作者Daro from Poland
相关产品推荐
相关产品推荐

