php/html - http_referer

6
我正在创建一个网站,在特定页面上,希望将用户发送回上一页。我对PHP/HTML相对较新,并且一直在使用现有代码作为参考和帮助。
现有代码使用以下方法:
if (! empty($HTTP_REFERER)) 
{
    header("Location: $HTTP_REFERER");
} else 
{
    header("Location: $CFG->wwwroot");
}

然而,当我使用这段代码时,HTTP_referer 总是被视为空,并将用户重定向到根页面。这段代码有明显的缺陷吗?
6个回答

14
不要依赖于HTTP Referrer是有效的或者非空的字段。人们可以选择不设置它,这会导致任何对该变量的检查都会进入IF-ELSE语句的空旁边。
您可以通过在URL或POST参数中发送一个参数来防止这种情况发生,该参数将保存一个值,您可以使用该值将用户重定向回来。

3
引荐者本质上是不可靠的。使用参数来引导用户在表单提交后前往您想要它们去的地方。 - bobince

13

你需要使用:

$_SERVER['HTTP_REFERER']

1

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

如果$_SERVER['HTTP_REFERER']存在,则返回$_SERVER['HTTP_REFERER'],否则返回空字符串。


1

0

你应该使用

$_SERVER['HTTP_REFERER']

然而,请查看php.ini中的register_globals配置,由于安全原因,它应该被关闭。您可以在PHP手册网站上阅读更多内容。


0
另外请注意,引用者标头可能为空或根本不存在,因此您不应该依赖它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接