我在PHP中设置了一个cookie,但它没有随头文件一起发送

时间:2011-05-06 23:07:13

标签: php cookies

问候。

我正在尝试在浏览器Cookie中保存用户的会话ID。我一遍又一遍地测试过,在标题之前发送的空白或任何其他信息都没有任何问题。

我的应用程序有一个入口点(index.php)并处理查询字符串以调用控制器/等。当我转到我的主页面时,没有可见的cookie,因此它显示用户登录页面。当我使用XDebug进行跟踪时,一旦我点击提交,POST将返回到index.php。当此POST回来时,以前登录的cookie将被发送到页面!但是,由于它正在尝试处理POST信息,我的脚本会再次设置cookie。当它重定向回主页面(即没有POST或其他参数的index.php)时,不会发送cookie。

我已经调试过了整个地方并无法弄明白这一点,想知道是否有人有任何好主意。

注意: 我在setcookie()中设置'/'的路径。此外,我使用mod_rewrite和.htaccess来制作SEO友好的URL。但是,我试过没有它,似乎并不重要......

代码段:

写:

setcookie(self::SESSION_COOKIE, $this->session_id, time()+60*60*24*30, '/', 'localhost');

访问:

$_COOKIE[self::SESSION_COOKIE];

感谢您的帮助 -

1 个答案:

答案 0 :(得分:1)

检查您传递给path功能的setcookie参数。确保将其设置为'/'(或任何应用程序的URI根目录)。

来自manual

  

路径

     

服务器上的路径   cookie将可用。如果设置为   '/',cookie将可用   在整个域内。如果设置为   '/ foo /',cookie只会是   在/ foo /目录中可用   和所有子目录,如   / foo / bar /域名。 默认值   是当前目录   正在设置cookie。