2011-10-06 62 views
1

我在我的根目录设置两个cookie在PHP重复饼干

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

我的问题是,我需要在一个脚本,在更深的文件夹,例如重新设置:/日志/ 当我设置它们,然后尝试阅读它们或查看饼干套件时,我发现我有2x和2个饼干。

我的问题是我如何才能引用一组cookie?并阅读它们?

在此先感谢

+0

您是否还设置了“Cookie路径”?对于“root”中的脚本,它应该是“/”,或者应该是“/ diary”的子文件夹。 –

回答

4

Cookies是键/值对 - 他们仅会在任何给定的范围内的单个值。

然而:

  • 有可能具有与相同的域相同的密钥和不同的值多个cookie(虽然会仍然只有在任一给定范围有效一个值)。

例如,如果您设置cookie st根(/)值为1,并且在/diary/与价值2,两个cookie将在自己的权利存在。当您位于/目录中(或者/的子目录不是/diary//diary/的子目录时),该值将为1。当你在/diary//diary/子目录如果将2

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


  • 它可以在同一范围内两次设置相同的cookie,但只有后面的值将是有效 - 后面的值覆盖较早的值。

例如:

setcookie('st',1); // st is now 1 for the current path 
setcookie('st',2); // st is now 2 for the current path 

如果你看一下由PHP发送你会看到2 Set-Cookie:头为重点st HTTP响应消息。但是,在Cookie范围内的下一个请求中,只有后面的值2将被发送回服务器。

+0

如果你用这篇文章替代我的“cookies可能有点奇怪”,你会明白_why_ cookies可能有点奇怪;)+1 – CD001

1

饼干可以是一个有点奇怪 - 它应该工作,如果你设置多个参数...尝试:

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

这可能是随后的饼干被设置为导致重复的不同路径或域。

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

欲了解更多信息,请参阅:http://uk3.php.net/manual/en/function.setcookie.php