为什么 http referer 没有显示?[关闭]

Why is the http referer not showing? [closed]

提问人:jiggy1965 提问时间:5/31/2013 最后编辑:Glitch Desirejiggy1965 更新时间:5/31/2013 访问量:13186

问:

我正在使用此代码想要显示用于访问此页面的 URL:

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

因此,当我在文件索引中.php将此代码放在 www.mysite.com/index.php 上,然后转到 www.mysite.com,它应该显示“www.mysite.com”,不是吗?

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

PHP 的HTTP

评论

0赞 j08691 5/31/2013
仅当您来自另一个页面时。如果您直接在地址栏或书签中加载它,它将是空的。
0赞 Funk Forty Niner 5/31/2013
因为你没有推荐人。将其设置在另一个文件中。
1赞 Robert 5/31/2013
什么情况下HTTP_REFERER可能为空的副本
0赞 dKen 5/31/2013
请看这里。您是否单击链接以从第一页转到第二页?
0赞 Get Off My Lawn 5/31/2013
@j08691如果我没记错的话,它不会是空白的,而是不会被设置。

答:

4赞 deceze 5/31/2013 #1

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

2赞 Glitch Desire 5/31/2013 #2

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

如果您想要用于访问该页面的完整 URL,您可能在 .$_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

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