重复的cookie

时间:2011-10-06 11:18:41

标签: php cookies

我在根目录中用PHP设置两个cookie

   setcookie ("st", "$todays_system_date"  );
   setcookie ("en", "$tomorrow" );

我的问题是我需要在更深层文件夹中的脚本中再次设置它们,例如:/ diary / 当我设置它们然后尝试阅读它们或查看cookie集时,我发现我有2x en和2x st cookies。

我的问题是我如何才能参考一组饼干?并阅读它们?

提前致谢

2 个答案:

答案 0 :(得分:5)

Cookie是键/值对 - 它们在任何给定范围内只会有一个值。

然而:

  • 同一个域可能有多个具有相同密钥和不同值的cookie(尽管在任何给定范围内它仍然只有一个有效值)。

例如,如果您在根目录(st)中设置了值为/的Cookie 1,并在/diary/中设置了值2,这两个cookie本身就存在。当您位于/目录(或/的{​​{1}}的任何子目录或/diary/的子目录)时,该值将为/diary/。当您在1/diary/的子目录时/diary/

2


  • 可以在同一范围内设置两次相同的cookie,但只有后一个值才有效 - 后面的值会覆盖之前的值。

例如:

Directory         Cookie Value
/                      1
/somedir/              1
/diary/                2
/diary/subdir          2
/somedir/diary/        1

如果查看PHP发送的HTTP响应消息,您将看到密钥setcookie('st',1); // st is now 1 for the current path setcookie('st',2); // st is now 2 for the current path 的2个Set-Cookie:标头。但是,在cookie范围内的下一个请求中,只有稍后的值st将被发送回服务器。

答案 1 :(得分:1)

Cookie可能有点奇怪 - 如果您设置了更多参数,应该工作...尝试:

setcookie('st', "{$todays_system_date}", 0, '/', '.yourdomain.ext');
setcookie('en', "{$tomorrow}", 0, '/', '.yourdomain.ext');

可能是后续的cookie设置了不同的路径或域导致重复。

n.b。如果您使用'.yourdomain.ext'(请注意域名之前的。),您的网站上的所有子域都可以访问该Cookie,因此www.yourdomain.extbadger.yourdomain.ext等等。

有关详细信息,请参阅:http://uk3.php.net/manual/en/function.setcookie.php