我正在使用此代码,希望显示用于访问此页面的网址:
<?php
$referer = $_SERVER['HTTP_REFERER'];
echo ($referer);
?>
所以当我在index.php文件中有这个代码时,请将它放在www.mysite.com/index.php上,然后我去www.mysite.com,它应该显示'www.mysite.com',不应该吗?
当我使用它时虽然没有显示任何内容。不在Mamp本地,也不在线。我做错了什么?
答案 0 :(得分:3)
引用标头是浏览器在请求页面时发送的可选标头,通知服务器它来自的上一页页面。因此,对于您在浏览器中输入的第一页,将没有引用者。点击从一个页面到另一个页面的链接后,可能成为一个引用集。
答案 1 :(得分:0)
$_SERVER['HTTP_REFERER']
告诉您他们来自哪里,而不是您要加载的页面。如果您想要显示www.mysite.com,您可能正在寻找$_SERVER['HTTP_HOST']
。
如果您想要用于访问该网页的完整网址,则可能需要$_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
保留变量上的full documentation可能对您有所帮助。
^并非所有浏览器都设置HTTP_REFERER
变量。它在RFC中是可选的,因此您不应该依赖它来执行任何功能。