我想通过PHP设置cookie。场景是这样的:
域名是:example.com
子域(my.example.com)上有一个网页。我的代码是:
$value="I am looged in";
setcookie("TestCookie", $value,'','',".example.com");
echo "hello".$_COOKIE["TestCookie"];
但结果只是“你好” - cookie没有设置好。请提出可能的解决方案。
谢谢!
答案 0 :(得分:9)
对setcookie实际调用的前两次更正:参数3(expired
)应为整数值(默认值为0);参数四应设置为'/'
,以使cookie对所有子目录有效;因此,setcookie
调用应如下所示:
setcookie("TestCookie", $value, 0, '/', ".example.com");
然后它应该第二次调用脚本时实际工作。为了理解它为什么不能在第一次工作,我们必须挖掘一点into how cookies work;基本上,Cookie是从服务器发送到客户端的数据,服务器在其中说“下次向我发送请求时将此数据发送给我”。这基本上就是setcookie的用途:当请求完成并且客户端已经接收并处理了页面时,指定的cookie将在客户端创建;另一方面,$_COOKIE
包含已经在Cookie中的所有值,以及客户端与请求一起传输的值 - 这意味着第一次调用脚本时, $ _SESSION实际上仍然是空的,因为只有在客户端收到脚本输出后才会创建cookie。