为什么http引用不显示


Why is the http referer not showing?

我使用这个代码想要显示用于访问这个页面的url:

<?php
$referer = $_SERVER['HTTP_REFERER'];
echo ($referer);
?>

当我在index。php文件中得到这段代码时,把它放在www.mysite.com/index.php下,然后我去www.mysite.com,它应该显示'www.mysite.com',不是吗?

当我使用它时,它什么也不显示。不是本地的Mamp,也不是在线的。我做错了什么?

referer报头是浏览器在请求页面时发送的可选的报头,通知服务器它来自的上一个页面。所以你在浏览器中输入的第一个页面是没有引用的。当你点击从一个页面到另一个页面的链接后,可能是一个引用集。

$_SERVER['HTTP_REFERER']告诉你你来自哪里,而不是你正在加载的页面。如果您想显示www.mysite.com,您可能正在寻找$_SERVER['HTTP_HOST']

如果你想要访问页面的完整URL,你可能在$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']之后。

为了更容易理解,如果您单击从http://www.mysite.com/index.php到http://www.mysite.com/anotherpage.php:的链接,这些将是变量值^

$_SERVER['HTTP_REFERER'] = "http://www.mysite.com/index.php"
$_SERVER['HTTP_HOST'] = "www.mysite.com"
$_SERVER['REQUEST_URI'] = "/anotherpage.php"
$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'] = "www.mysite.com/anotherpage.php"

希望这对您有所帮助,PHP $_SERVER保留变量的完整文档可能会对您有更多帮助。

^并非所有浏览器都设置HTTP_REFERER变量。它在RFC中是可选的,因此你不应该依赖它来做任何功能。