我正在创建一个网站并在一个特定页面上,我想将用户发送回上一页。我是PHP / HTML的新手,并且一直在使用一些现有的代码来提供想法和帮助。
现有代码使用以下方法:
if (! empty($HTTP_REFERER))
{
header("Location: $HTTP_REFERER");
} else
{
header("Location: $CFG->wwwroot");
}
但是,当我使用此代码时,HTTP_referer始终被视为空,用户重定向到根页面。这段代码中有任何明显的缺陷吗?
答案 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上阅读更多内容。