【发布时间】:2021-03-17 01:08:55
【问题描述】:
我试图在 wordpress 中设置自定义 cookie 没有成功,所以我认为这可能是因为缓存并在我的 localhost apache 上设置了一个小测试并遇到了同样的问题。
在 Chrome 中,cookie "chat_guest" 和 "chat_guest_hash" 是可见的,但在尝试获取它们的值时它返回 "null"。
在示例代码中,我使用 var_dump 来查看它们是否是任何具有值但返回 array(0) { } 的 cookie,并且这些 cookie 仍然显示在 Chrome 中!
<?php
if(!isset($_COOKIE['chat_guest'])) {
if (!setcookie('chat_guest', "test1", 365 * 3000, "/")) die("?? 1");
if (!setcookie('chat_guest_hash', "test", 365 * 3000, "/")) die("?? 2");
}
echo var_dump($_COOKIE);
?>
我只是无法理解这一点。有什么想法吗?
【问题讨论】:
-
您确实记住,cookie 仅在浏览器将它们与下一个请求一起发送回后才会显示在 $_COOKIE 中,并且不会直接出现在您尝试过的同一请求中设置它们 - 对吧……?
-
当我刷新页面时问题仍然存在
-
expires参数需要是一个 unix 时间戳,而不是它应该有效的秒数。您使您的 cookie 有效,直到 1970 年 1 月 13 日星期二 17:10:00 +0100 - 所以难怪浏览器“不再”将它发送回服务器…… -
是和否更精确@misorude "cookie 过期的时间。这是一个 Unix 时间戳,因此是自纪元以来的秒数。换句话说,你很可能会设置这个使用 time() 函数加上你希望它过期之前的秒数。或者你可以使用 mktime()。
time()+60*60*24*30将设置 cookie 在 30 天内过期。如果设置为 0,或者省略,cookie 将在会话结束时过期(当浏览器关闭时)。来源手册php.net/manual/en/function.setcookie.php