2011-08-15 99 views
1

我一直在设置和获取COOKIES的一些问题。我有一个iframe外的页面,我设置了一个cookie,然后重定向到facebook,在那里我得到了COOKIE,之前已经设置并存储在一个数据库中。此用户路径工作正常,除了用户可以直接到达Facebook页面(选项卡),我需要在那里设置一个cookie,如果没有设置。php设置/获取cookie相同的页面

我知道,在某些浏览器中,当设置COOKIE时应该存在一个P3P策略,所以我用: 头('P3P:CP =“IDC DSP COR ADM DEVI TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT'' );它为IE做了它的工作,但我注意到这个问题不仅与IE有关。

一个可能的问题可能是我设置并尝试在COOKIE设置后直接在同一页面上获取COOKIE而无需刷新页面? iframe是否影响如何通过PHP设置COOKIES?

有什么想法?

在此先感谢。

+0

尝试'$ _COOCIE [ 'somename'] = ...',而不是'setcookie' – k102

+0

因为他们是你应该小心设置P3P头可能具有法律约束力,承诺如何处理您的使用数据。通常他们应该链接到一个XML P3P文档,该文档应该进行合法验证的断言。不幸的是,没有其他方法可以让IE浏览器允许您在iFrame中设置Cookie。如果您未包含P3P标题,则需要使用无Cookie的解决方案。 –

+0

Cookie应该在所有其他浏览器中正常工作。而且,只要尚未发送标题,您应该可以检查cookie并将其设置在同一组PHP代码中。 –

回答

0

饼干应该在所有非IE浏览器中正常工作。你应该可以检查一个cookie并将其设置在同一组PHP代码中,只要你还没有发送头文件。服务器将收到一个请求,并且可能会包含您的cookie的头文件。

您的PHP代码应该能够检查这些cookie,并设置一个加载的标题发送回用户的浏览器。但是,在完成设置标题之前,意外地将一些内容发送回用户的浏览器非常容易,在这种情况下,在那之后设置Cookie将不起作用。例如,如果您将一个关闭的PHP标记?>放在一个文件中,然后在代码运行时将一个新行或一个空格发送回用户的浏览器,该代码将返回响应标头,意思是在那之后他们不能被修改。

虽然您应该会收到“标题已发送”错误。

尝试运行:
http://www.php.net/manual/en/function.headers-sent.php

http://www.tech-recipes.com/rx/1489/solve-php-error-cannot-modify-header-information-headers-already-sent/

+0

我只在设置COOKIES之前设置P3P标题。这会影响设置它们吗? –

+0

我不这么认为(取决于你如何做)。它应该将所有标题集中在一起并将它们与输出一起发送。尝试使用livehttpheaders http://livehttpheaders.mozdev.org/ firefox扩展来检查标题并查看返回的内容。它不应该依赖于浏览器。 –

+0

我能想到的另一个原因是,实际上,禁用Cookie的人数实际上比我大... –