HTTP_REFERER和位置重定向

问题描述 投票:2回答:3

我已经在这里找了一段时间,找不到我特定问题的答案。

在我网站的100多个位置中,我正在通过标头位置重定向重定向到错误页面。

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

我想做的是捕获HTTP_REFERER并将其记录在error.php页面上,但是由于某种原因,它没有设置。我已经看到了为什么没有使用Meta-refresh设置它的解释,但是location标头是302,所以应该正确设置它吗?有什么想法吗?

[请注意:我知道HTTP_REFERER不可靠,并且我可以单独传递信息。在我的方案中,这都不重要(除非我想更改调用重定向的所有位置)。

php http-redirect
3个回答
3
投票

[嗯,HTTP_REFERER是由浏览器设置的,如果浏览器选择不将其设置为302重定向,则不应这样做,那么您将不会获得它。 302是一个临时重定向,这意味着上一页暂时不可用。浏览器为什么要发送当前不存在的页面的信息?

实现此目的的好方法:

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

确实,如果不修改您也想为其记录信息的每个重定向位置的代码,就无法解决此问题。


2
投票

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

echo $_SERVER['HTTP_REFERER'];

-1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.