如何在PHP中为域设置Cookie
问题描述:
我想通过PHP设置cookie。该方案是这样的:如何在PHP中为域设置Cookie
域名:example.com
上有子域中的一个网页(my.example.com)。我的代码是:
$value="I am looged in";
setcookie("TestCookie", $value,'','',".example.com");
echo "hello".$_COOKIE["TestCookie"];
但结果只是“你好” - cookie没有设置。请建议可能的解决方案。
谢谢!
答
对实际调用setcookie的前两个更正:参数3(expired
)应该是一个整数值(默认值为0);参数4应设置为'/'
以使cookie对所有子目录有效;因此setcookie
通话应该是这样的:
setcookie("TestCookie", $value, 0, '/', ".example.com");
那么就应该实际工作第二次调用脚本。要理解为什么它第一次不能正常工作,我们必须挖掘一点into how cookies work;基本上,Cookies是从服务器发送到客户端的数据,服务器在此表示“在下次向我发送请求时向我发送此数据”。这基本上就是setcookie的用途:当请求完成并且客户端已经接收并处理了页面时,指定的cookie将在客户端创建;另一方面,$_COOKIE
保留所有值,其中已经在Cookie中已经是,并且已经由客户端与请求一起发送 - 意味着第一次调用脚本时,$ _SESSION实际上仍然是空的,因为只有在客户端收到脚本输出后才会创建cookie。
+0
非常感谢你解释的东西!这对我有用。 – Yogesh 2011-12-27 13:12:24
这个在使用时有效:setcookie(“TestCookie”,$ value); – Yogesh 2011-12-27 12:56:06
为了更容易的cookie管理,尤其是关于“域”属性,你可以使用这个:https://github.com/delight-im/PHP-Cookie – caw 2016-07-12 23:27:29
你可能会发现['$ cookie-> setDomain($ domain )'](https://github.com/delight-im/PHP-Cookie/blob/004cde69ec840e65c15275e09b92ecb1da06f357/src/Cookie.php#L117)有帮助,在[这个独立的库](https://github.com)中找到/喜悦-IM/PHP-饼干)。 – caw 2016-09-21 04:33:09