【问题标题】:php setting/getting cookie same pagephp设置/获取cookie同一页面
【发布时间】:2011-10-27 04:07:32
【问题描述】:

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

我知道在某些浏览器中设置 COOKIE 时应该存在 P3P 策略,所以我使用: header('P3P:CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"');它适用于 IE,但我注意到问题不仅与 IE 有关。

一个可能的问题可能是我设置并尝试直接在同一页面上获取 COOKIE,而不在设置 COOKIE 后刷新页面??? iframe 会影响通过 PHP 设置 COOKIES 的方式吗?

有什么想法吗?

提前致谢。

【问题讨论】:

  • 试试$_COOCIE['somename'] = ...而不是setcookie
  • 您应该谨慎设置 P3P 标头,因为它们是您将如何处理使用数据的潜在法律约束承诺。通常,它们应该链接到一个 XML P3P 文档,该文档应该做出合法可验证的断言。不幸的是,没有其他方法可以让 IE 允许您在 iFrame 中设置 cookie。如果您没有包含 P3P 标头,您将需要一个无 cookie 的解决方案。
  • Cookie 应该在所有其他浏览器中都能正常工作。只要您还没有发送标头,您应该能够检查 cookie 并将其设置在同一组 PHP 代码中。
  • @Robin Winslow,我在检查是否设置了 COOKIE 之前使用了 P3P 标头,这样它不会起作用吗?

标签: php facebook cookies iframe


【解决方案1】:

Cookie 应该在所有非 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/

【讨论】:

  • 我只在设置 COOKIES 之前设置 P3P 标头。这会影响设置它们吗?
  • 我不这么认为(取决于您的操作方式)。它应该将所有标题聚集在一起并将它们与输出一起发送。尝试使用 livehttpheaders livehttpheaders.mozdev.org firefox 扩展来检查标头并查看返回的内容。它根本不应该依赖于浏览器。
  • 我能想到的另一个原因是实际上禁用 cookie 的人数实际上比我多...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-11
  • 2012-08-02
相关资源
最近更新 更多