确定I.P.推荐网站的地址

时间:2011-06-03 08:40:46

标签: php apache seo

我目前正在开发一个营销模块,用于跟踪为我们的网站带来流量的网站。有没有办法获得域名或I.P.使用PHP的引用网站的地址?我相信HTTP_REFERER并不总是出现在$ _SERVER全局。

先谢谢。

5 个答案:

答案 0 :(得分:9)

HTTP_REFERER标头必须由客户端的浏览器发送。你不能依赖它被发送。

未收到的情景包括:

  • 用户手动输入地址
  • 用户在其中一个go through great lengths to obscure the REFERER
  • 的大型电子邮件客户端中打开链接
  • 用户的浏览器配置为阻止引荐来源标头(罕见)
  • 用户正在切换协议(即http站点上指向https的链接,反之亦然)

在这些情况下,你无能为力。

如果您控制链接网站,可以将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。

http://php.net/manual/en/function.gethostbyname.php

答案 4 :(得分:1)

您可以使用$_SERVER['HTTP_REFERER']确定引荐网址,但请记住,这可以被操纵。

然后,您可以使用gethostbyname($referrer)获取IP地址。

请参阅:http://php.net/manual/en/reserved.variables.server.phphttp://php.net/manual/en/function.gethostbyname.php