我遇到了以下片段:
setcookie('foo', 'v1', time() + 60*60*24, '/');
setcookie('foo', 'v2');
答案 0 :(得分:3)
上面的示例将简单地用第二个cookie覆盖第一个cookie。如果要更新cookie以存储较新的值,可以覆盖其值。
如果为不同的域或路径设置了两个cookie,则它们可能具有相同的名称。例如:
<?php
setcookie("testcookie", "value1forhost", time(), "/", ".domain.com", 0, true);
setcookie("testcookie", "value2forsubdom", time(), "/", "subdom.domain.com", 0, true);
?>
答案 1 :(得分:1)
v1
vs v2
部分使得在浏览器中检测Cookie处理错误看起来像一个技巧:如果foo
等于v1
,则浏览器不会处理价值变化。
了解代码上下文会很有趣。
它会设置2个cookie还是它 覆盖
这取决于您从哪里调用脚本。没有路径的setcookie()调用会为当前路径设置cookie(其中path是URL路径,而不是内部文件系统路径)。因此,来自http://example.com/的来电会创建一个Cookie,来自http://example.com/somewhere/inside/的来电会创建两个单独的Cookie,一个用于/
,另一个用于/somewhere/inside/
。
答案 2 :(得分:1)
我认为这不是故意的。第二个cookie调用将覆盖原始集cookie。在第一次调用之后,不知道浏览器支持是否可用,因为在处理脚本时没有收到来自浏览器的输入。 Cookie作为HTTP标头发送,并由浏览器在连续请求时发回。