PHP $ _COOKIE返回null,但Chrome显示具有正确值的cookie

时间:2018-12-07 14:10:23

标签: php wordpress cookies

我试图在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);
?>

我就是不能落后。有什么想法吗?

2 个答案:

答案 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";