6

我正在创建一个网站,在一个特定页面上,我想将用户送回上一页。我对 PHP/HTML 相当陌生,并且一直在使用一些现有的代码来获得想法和帮助。

现有代码使用以下方法:

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

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

4

6 回答 6

14

不要依赖 HTTP Referrer 是一个有效的甚至是非空的字段。人们可以选择不使用此设置,将对该变量的任何检查留给 IF-ELSE 子句的空白侧。

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

于 2009-03-03T13:03:59.083 回答
13

你需要使用:

$_SERVER['HTTP_REFERER']
于 2009-03-03T12:58:40.843 回答
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()函数。

于 2009-03-03T13:08:01.397 回答
1

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

于 2009-08-18T10:57:50.917 回答
0

另请注意,referer 标头可能为空或丢失,因此您根本不应该依赖它。

于 2009-03-03T13:03:42.997 回答
0

你应该使用

$_SERVER['HTTP_REFERER']

但是看一下 php.ini 中的 register_globals 配置,出于安全原因,它应该被关闭。您可以在PHP 手册网站上阅读更多内容。

于 2009-03-03T13:07:59.650 回答