php setcookie域名

时间:2010-02-17 22:45:35

标签: php cookies setcookie

某些应用程序(不是我编写的,而不是PHP编写的)为域“www.domain.com”创建了一个cookie。

我正在尝试更换该cookie。所以在php中我做了:

setcookie('mycookie','mydata',time() + 2*7*24*60*60,'/','www.domain.com', false);

但是,为域名创建了结果cookie:“。www。domain.com”,请注意点“。”在领域之前。

所以它不会取代它,它会创建另一个cookie。 我该怎么办?

4 个答案:

答案 0 :(得分:37)

这个问题也在这里得到了解决: http://php.net/manual/en/function.setcookie.php

请参阅“jah”评论:If you want to restrict the cookie to a single host, supply the domain parameter as an empty string

你也可以尝试“.domain.com”作为域名。尾随点将允许“domain.com”的所有子域名的cookie,并且可以覆盖“www。” - cookie,但我将首先使用上述解决方案。

答案 1 :(得分:5)

如果指定域,则应遵循RFC 2109并在域前加一个点;否则客户会这样做。但是,如果您根本没有指定域,则客户端将获取请求的域。

答案 2 :(得分:0)

这不像是个错误吗? 如果我想让Cookie仅仅位于www.example.com而不是something.www.example.com怎么办?例如为了表现。 我应该能够指定Cookie域,而不是所有[sub] [sub]子域的通配符。 更不用说它引起的大量错误,例如,通过php设置cookie并尝试通过JavaScript删除它(不会添加愚蠢的点)。

答案 3 :(得分:-1)

尝试创建几个具有相同名称但具有不同域名的其他Cookie。例如:

setcookie('mycookie','mydata1',time() + 2*7*24*60*60,'/','www.domain.com', false);
setcookie('mycookie','mydata2',time() + 2*7*24*60*60,'/','www.domain.com', false);
setcookie('mycookie_top','mydata1',time() + 2*7*24*60*60,'/','domain.com', false);
setcookie('mycookie_top','mydata2',time() + 2*7*24*60*60,'/','domain.com', false);

然后在Firebug中检查这些命令创建的cookie。如果你不断获得双cookie,那么这可能是PHP中的一个错误。另外,尝试在javascript代码中设置cookie,看看你是否还有同样的问题。