我有一个我在我的应用上使用的cookie。它看起来像这样:
+-------+-------+-----------------------+-------+----------+
| Name | Value | Domain | Path | Expires |
+-------+-------+-----------------------+-------+----------+
| foo | bar | my.domain.tld | / | Session |
+-------+-------+-----------------------+-------+----------+
在我的脚本的一部分中,基于某些条件,我正在尝试更改cookie的值。我正在使用此代码:
// overwrite cookie
if($condition){
setcookie("foo", "cat", 0, "/", "my.domain.tld");
}
之后,我的cookie数据如下所示:
+-------+-------+-----------------------+-------+----------+
| Name | Value | Domain | Path | Expires |
+-------+-------+-----------------------+-------+----------+
| foo | bar | my.domain.tld | / | Session |
| foo | cat | .my.domain.tld | / | Session |
+-------+-------+-----------------------+-------+----------+
为什么.
会被添加到域名之前?我想覆盖现有的cookie。
答案 0 :(得分:1)
http://www.php.net/manual/en/function.setcookie.php#93641
答案将在php手册的帖子中讨论。
Cookie数据由浏览代理设置,因此根据浏览器使用的过程进行不同的处理。
答案 1 :(得分:0)
来自文档:
Cookie可用的域。要在example.com的所有子域上提供cookie,您需要将其设置为“.example.com”。的。不是必需的,但使其与更多浏览器兼容。将其设置为www.example.com将使cookie仅在www子域中可用。有关详细信息,请参阅»规范中的尾部匹配。
尾部匹配规范在这里:
答案 2 :(得分:0)
事实证明,指定没有域似乎有效:
setcookie("foo", "cat", 0, "/");
预期的Cookie数据:
+-------+-------+-----------------------+-------+----------+
| Name | Value | Domain | Path | Expires |
+-------+-------+-----------------------+-------+----------+
| foo | cat | my.domain.tld | / | Session |
+-------+-------+-----------------------+-------+----------+
奇怪,但它确实有效。