我目前正在开发一个营销模块,用于跟踪为我们的网站带来流量的网站。有没有办法获得域名或I.P.使用PHP的引用网站的地址?我相信HTTP_REFERER并不总是出现在$ _SERVER全局。
先谢谢。
答案 0 :(得分:9)
HTTP_REFERER
标头必须由客户端的浏览器发送。你不能依赖它被发送。
未收到的情景包括:
在这些情况下,你无能为力。
如果您控制链接网站,可以将GET参数中的引荐来源ID添加到链接中:
http://example.com/?from=mysite
然后您可以解析脚本中的from
参数。
将引用者字符串转换为IP通常不是一个好主意,因为看到尽可能多的IP地址可以容纳数十个或数百个站点。用户来自的网站将会以这种方式丢失。
答案 1 :(得分:4)
引用地址出现在所有具有引荐来源的合作浏览器的请求标头中。如果用户只输入了您的网址,则表示没有推荐人。
将URL转换为IP地址是一件微不足道的编程事宜:
<?php
$raddr = gethostbyaddr($_SERVER['HTTP_REFERER']);
?>
答案 2 :(得分:2)
如果HTTP_REFERER没有显示在服务器中,那么该用户没有通过链接进入您的站点,或者他有办法通过他的浏览器屏蔽该变量。你无能为力。
答案 3 :(得分:2)
如果它没有出现在$ _SERVER中,通常意味着客户端没有发送它。引用者是无法信任的数据,因为它完全取决于用户(更具体地说是他们的浏览器)。
最好的办法是检查引用者是否存在,然后使用域上的gethostbyname()函数获取所需的IP。
答案 4 :(得分:1)
您可以使用$_SERVER['HTTP_REFERER']
确定引荐网址,但请记住,这可以被操纵。
然后,您可以使用gethostbyname($referrer)
获取IP地址。
请参阅:http://php.net/manual/en/reserved.variables.server.php和http://php.net/manual/en/function.gethostbyname.php