我试图在wordpress中设置自定义cookie失败,所以我认为可能是由于缓存的缘故,并在本地localhost apache上进行了一个小测试,并且有相同的问题。
在Chrome浏览器中,cookies“ chat_guest”和“ chat_guest_hash”可见,但是当尝试获取它们的值时,它将返回“ null”。
在示例代码中,我使用var_dump查看它们是否是任何具有值的cookie,但它返回array(0) { }
,并且仍然在Chrome中显示cookie!
<?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);
?>
我就是不能落后。有什么想法吗?
答案 0 :(得分:2)
您应该像使用$ _SESSION或$ _SERVER一样使用全局$ _COOKIE标记-尽管不能像这样设置cookie。 这是在一个月内存储Cookie的正确方法:
if (!isset($_COOKIE["chat_guest"])){ //checks if the cookie "chat_guest exists
setcookie("chat_guest", "test1", time() + (86400 * 30), "/");
//setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/");
}
print_r($_COOKIE); // prints all data stored within the super global $_COOKIE
在使用此类cookie时,请记住刷新浏览器
答案 1 :(得分:0)
$ _ COOKIE是在页面加载时设置的,由于Web的无状态性质。使用setcookie()只会在下一个请求中将值添加到$ _COOKIES。
如果要立即访问,可以自己设置$ _COOKIE ['chat_guest']:
setcookie('chat_guest', "test1", time() + (86400 * 30), "/");
$_COOKIE['chat_guest'] = "test1";