2011-05-06 34 views
2

问候。我在PHP中设置了一个cookie,但它不是用标头发送的

我试图在浏览器cookie中保存用户的会话ID。我一遍又一遍地进行了测试,并且在头部之前发送的空白或任何其他信息没有任何问题。

我的应用程序有一个入口点(index.php)并处理查询字符串来调用控制器/ etc。当我到我的主页面时,没有看到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]; 

感谢您的帮助 -

+0

你确定你'输出任何东西之前会调用'setcookie()函数?如果您已经发送了任何内容,那么标题已发送,您不能再设置cookie。在这种情况下你应该得到一个警告。 – 2013-12-03 19:17:29

回答

1

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

manual

路径

其中 的cookie将可在服务器上的路径。如果设置为 '/',则Cookie将在整个域中可用 。如果设置为 '/ foo /',则该cookie将仅在和/或域的所有子目录(如 /foo/bar /)内可用的 。 默认值为 是当前目录的 的cookie被设定。

+0

当我使用setcookie设置cookie时,我将路径设置为'/'... – Kyle 2011-05-06 23:42:47

相关问题