HTTP_REFERER和位置重定向

时间:2011-08-31 15:23:01

标签: php http-redirect

我在这里找了一段时间,找不到我的具体问题的答案。

在我网站上的100个地方,我通过标题位置重定向重定向到错误页面。

header("Location: /error.php");

我想要做的是在error.php页面上捕获并记录http_referrer,但由于某种原因它没有设置。我已经看到为什么它没有设置元刷新,但位置标题是302,所以应该设置正确的解释?有什么想法吗?

请注意 - 我知道http_referrer不可靠,我知道我可以单独传递信息。在我的场景中哪个都不重要(除非我想要更改调用重定向的所有位置)。

3 个答案:

答案 0 :(得分:3)

嗯,HTTP_REFERER是由浏览器设置的,如果浏览器选择不在302重定向上设置它,这不应该,那么你就不会得到它。 302是临时重定向,这意味着前一页暂时不可用。为什么浏览器想要发送现在不存在的页面的信息?

实现这一目标的好方法:

  • 就个人而言,我有一个Errors类来处理这种类型的东西,而不是直接从页面重定向。这使您可以在重定向发生之前记录所需的所有信息,甚至是调试信息。
  • 设置包含页面信息的会话,并在错误页面上获取该信息以进行录制。
  • 您可以尝试使用标头设置Referer行,但有些浏览器会忽略此行,并且无论如何都不会发送它。

真的没有办法解决这个问题而不修改重定向的每个地方的代码,你也想记录信息。

答案 1 :(得分:2)

它实际上是HTTP_REFERER(中间有一个'R') - 一个卡住的拼写错误!

echo $_SERVER['HTTP_REFERER'];

答案 2 :(得分:-1)

某些浏览器不支持HTTP_REFERER。您可以使用isset()功能,这一点非常重要,您必须使用HTTP_REFERER而不是HTTP_REFERRER