php / html - http_referer

时间:2009-03-03 12:56:42

标签: php html http-referer

我正在创建一个网站并在一个特定页面上,我想将用户发送回上一页。我是PHP / HTML的新手,并且一直在使用一些现有的代码来提供想法和帮助。

现有代码使用以下方法:

if (! empty($HTTP_REFERER)) 
{
    header("Location: $HTTP_REFERER");
} else 
{
    header("Location: $CFG->wwwroot");
}

但是,当我使用此代码时,HTTP_referer始终被视为空,用户重定向到根页面。这段代码中有任何明显的缺陷吗?

6 个答案:

答案 0 :(得分:14)

不要依赖HTTP Referrer是有效甚至非空的字段。人们可以选择不使用此集合,将该变量的任何检查都转到IF-ELSE子句的空白区域。

您可以通过在URL或POST参数中发送参数来防止这种情况,该参数将包含可用于将用户重定向回的值。

答案 1 :(得分:13)

您需要使用:

$_SERVER['HTTP_REFERER']

答案 2 :(得分:1)

如果您想将此人发送回上一页并使其无论引用者是否设置正确,您都可以将GET参数附加到URL(或POST)..您需要对URL进行编码。像

这样的东西

http://www.domain.com.au/script.php?return=http%3a%2f%2fwww.domain.com.au%2fthis-is-where-i-was%2f

您可以使用PHP的urlencode()功能。

答案 3 :(得分:1)

isset($ _ SERVER ['HTTP_REFERER'])? $ _SERVER ['HTTP_REFERER']:'';

答案 4 :(得分:0)

另请注意,referer标头可能是空的或丢失,所以你根本不应该依赖它..

答案 5 :(得分:0)

你应该使用

$_SERVER['HTTP_REFERER']

但是看看php.ini中的register_globals配置,由于安全原因应该关闭它。您可以在PHP Manual site上阅读更多内容。