如何在PHP中为域设置Cookie

时间:2011-12-27 12:43:50

标签: php cookies

我想通过PHP设置cookie。场景是这样的:

域名是:example.com

子域(my.example.com)上有一个网页。我的代码是:

$value="I am looged in";
setcookie("TestCookie", $value,'','',".example.com");
echo "hello".$_COOKIE["TestCookie"];

但结果只是“你好” - cookie没有设置好。请提出可能的解决方案。

谢谢!

1 个答案:

答案 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。