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

现有代码使用以下方法:

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

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

有帮助吗?

解决方案

您需要使用:

您需要使用:

<*>SERVER['HTTP_REFERER']

其他提示

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

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

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

如果您想将此人发送回上一页并使其无论引用者是否设置正确,您都可以将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()函数。

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

你应该使用

你应该使用

<*>

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

SERVER['HTTP_REFERER']

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top