2011-10-27 38 views
6

有一个网站www.example.com
所有cookie都设置为www子域。
现在有一个新的子域名,我希望所有子域名都能看到cookies。如何获取特定cookie的域名?

目标是将所有旧访问者的www.example.com cookies重写为.example.com,或者为www.example.com重新编写。

为此,我想获取现有cookie的域名。
可能吗?有这个目的的PHP功能吗?

+0

您可能会发现['$ cookie-> setDomain($域)'](https://github.com/delight-im/PHP-Cookie/blob/004cde69ec840e65c15275e09b92ecb1da06f357/src/Cookie.php#L117 )有帮助,在[这个独立的库](https://github.com/delight-im/PHP-Cookie)中找到。虽然您无法访问已发送(并在客户端上设置)的cookie的“domain”属性,但您可以简单地设置新的cookie。这将工作正常。 – caw

回答

3

我不认为这个域在读取​​cookies时可用,这是受浏览器限制的。解决办法是删除旧的cookie并将其更改为新的域。

E.g.

$value = $_COOKIE['TestCookie']; 
setcookie("TestCookie", "", time() - 3600, "www.example.com"); 
setcookie("TestCookie", $value, time + (60 * 60 * 24 * 30), ".example.com"); 
+0

我有这个想法,但即使所有的cookies都改变了,这种方式也会一直重复。我在服务器端做这件事。另一件事:Google Chrome确实知道cookie域(在检查元素中) – lvil

+1

您可以添加另一个cookie,让您知道您已经进行了转换。 – Noodles

1

如果我的理解正确,您想更改客户端上当前存在的Cookie的域名?

这是不可能的(*)。

在获取cookie服务器端时,是否可以查看它是否设置为www域,请记住从客户端传递的cookie没有域信息?

(*)在客户端可能使用JavaScript。