关于PHP cookie的问题

时间:2010-07-13 07:05:53

标签: php cookies

我遇到了以下片段:

setcookie('foo', 'v1', time() + 60*60*24, '/');
setcookie('foo', 'v2');
  • 设置2的效果是什么 同名但不同的饼干 值?
  • 在实践中常见吗?
  • 在哪里使用?

3 个答案:

答案 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标头发送,并由浏览器在连续请求时发回。