我目前正在开发一个营销模块,用于跟踪将流量带入我们网站的网站。有没有办法获得域名或I.P.使用PHP引用网站的地址?我相信HTTP_REFERER并不总是出现在$ _SERVER全局中。确定I.P.引荐网站地址
谢谢先进。
我目前正在开发一个营销模块,用于跟踪将流量带入我们网站的网站。有没有办法获得域名或I.P.使用PHP引用网站的地址?我相信HTTP_REFERER并不总是出现在$ _SERVER全局中。确定I.P.引荐网站地址
谢谢先进。
的HTTP_REFERER
头必须由客户端浏览器发送。你不能依靠它被发送。
方案时,它不会发送包括:
在这些情况下,你无能为力。
但是如果你控制链接的网站,你可以在的GET参数添加引用ID的链接:
http://example.com/?from=mysite
然后你可以分析你的脚本from
参数。
将referrer字符串转换为IP通常不是一个好主意,因为看到尽可能多的IP地址可以承载数十或数百个站点。区别哪个用户来自哪个站点将会以这种方式丢失。
引用地址出现在来自所有协作浏览器的请求头中,其中存在引荐者。如果用户只是输入了你的网址,那么就没有引用者。
这是一个微不足道的设计问题向URL转换成IP地址:
<?php
$raddr = gethostbyaddr($_SERVER['HTTP_REFERER']);
?>
“琐碎的编程问题”实际上是一个问题。 – DOK 2011-06-03 08:46:47
@DOK我不认为OP真的想要这个。将主机名转换为IP地址是一个可怕的想法(因为您有效地销毁了用户来自哪个站点的信息)。 – 2011-06-03 08:49:02
@Pekka,它实际上很重要因为我需要从发起网站的IP地址获得国家:D – 2011-06-03 09:15:16
如果HTTP_REFERER没有在服务器出现,则该用户没有通过链接进入您的网站,或者他有一种通过浏览器屏蔽该变量的方法。没有其他的事情可以做。
如果它没有显示在$ _SERVER中,通常意味着客户端没有发送它。引荐来源是不可信的数据,因为它完全取决于用户(更具体地说是他们的浏览器)。
最好的办法是检查引用者是否在那里,然后使用域上的gethostbyname()函数来获得你想要的IP。
您可以确定reffering URL与$_SERVER['HTTP_REFERER']
但请记住这是可以操纵的。您可以使用gethostbyname($referrer)
来获取IP地址。
参见:http://php.net/manual/en/reserved.variables.server.php和http://php.net/manual/en/function.gethostbyname.php
正如我所怀疑的。谢谢! Upped +并被接受! – 2011-06-03 09:16:19