我目前正在开发一个营销模块,用于跟踪网站stream量到我们的网站。 有没有办法使用PHP获取引用网站的域名或IP地址? 我相信HTTP_REFERER并不总是出现在$ _SERVER全局。
先谢谢了。
HTTP_REFERER
头必须由客户端的浏览器发送。 你不能依靠它被发送。
没有发送的场景包括:
在这些情况下,你无能为力。
但是,如果您控制链接站点,则可以将GET参数中的引用链接ID添加到链接中:
http://example.com/?from=mysite
您可以在脚本中解析from
参数。
将引用字符串转换为IP通常不是一个好主意,可以看到许多IP地址承载数十或数百个网站。 用户来自哪个站点的区别将会丢失。
引用地址出现在来自所有协作浏览器的请求标题中,其中有引用者。 如果用户只是输入你的网址,那么没有引用。
将URL转换为IP地址是一个简单的编程问题:
<?php $raddr = gethostbyaddr($_SERVER['HTTP_REFERER']); ?>
如果HTTP_REFERER没有显示在服务器上,那么这个用户没有通过链接进入你的站点,或者他有办法通过他的浏览器屏蔽这个变量。 没有其他的事情可以做。
如果它不在$ _SERVER中显示,通常意味着客户端没有发送它。 引用者是不能准确信任的数据,因为它完全取决于用户(更具体地说是他们的浏览器)。
最好的办法是检查引用者是否在那里,然后使用域上的gethostbyname()函数来获取你想要的IP。
您可以使用$_SERVER['HTTP_REFERER']
确定重复的URL,但请记住这可以被操纵。
然后您可以使用gethostbyname($referrer)
来获取IP地址。
参见: http : //php.net/manual/en/reserved.variables.server.php和http://php.net/manual/en/function.gethostbyname.php