为什么http referer没有显示?

时间:2013-05-30 16:39:30

标签: php http

我正在使用此代码,希望显示用于访问此页面的网址:

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

所以当我在index.php文件中有这个代码时,请将它放在www.mysite.com/index.php上,然后我去www.mysite.com,它应该显示'www.mysite.com',不应该吗?

当我使用它时虽然没有显示任何内容。不在Mamp本地,也不在线。我做错了什么?

2 个答案:

答案 0 :(得分:3)

引用标头是浏览器在请求页面时发送的可选标头,通知服务器它来自的上一页页面。因此,对于您在浏览器中输入的第一页,将没有引用者。点击从一个页面到另一个页面的链接后,可能成为一个引用集。

答案 1 :(得分:0)

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

如果您想要用于访问该网页的完整网址,则可能需要$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']之后。

为了便于理解,如果您点击从http://www.mysite.com/index.phphttp://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保留变量上的full documentation可能对您有所帮助。

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

相关问题