获取互联网上的计算机的唯一ip地址在php

问题描述:

我想通过获取他们的IP建立一个数据库与唯一访问者记录到我的网站上的特定页面。获取互联网上的计算机的唯一ip地址在php

下面的代码获取访问者的IP:

$getip = $_SERVER['REMOTE_ADDR']; 
echo "<b>IP Address: $getip</b>"; 

但我意识到,这是非常不可靠和不准确的,如果各种互联网用户特定的Internet网络上,他们都有着相同的IP地址使用不同的电脑(就像公共网吧或见下面的例子)。

例子:

XYZ公司使用特定的互联网连接,如果XYZ公司的所有员工都通过公司的互联网连接和XYZ公司的IP地址连接到互联网是69.18.107.24。 如果XYZ的某些员工访问我的页面,上面的代码将不会给我用户计算机的唯一IP地址,而是我将继续获取公司的IP地址(69.18.107.24),这是不准确的,并且会导致应用程序欺骗将其视为同一访问者,而使用互联网连接IP的访客则不同。

如何根据用户的计算机获取唯一的用户IP,而不管它们是否共享相同的Internet连接。

我不想使用PHP cookies因为有些用户禁用它或某些东西,有些浏览器不支持它。

将非常感激得到这个帮助......谢谢!

+0

共享公共地址后面的大多数计算机将具有私有地址。你真的想要那些吗? – 2013-02-25 17:14:49

+1

是的,我不介意那些?...会appeciate的帮助..谢谢! – Sms 2013-02-25 17:20:54

+1

即使你可以(并且你不能,请参阅deceze的答案),像'192.168.0.1'这样的私人地址可以被100,000,000台计算机共享。它的准确度比“69.18.107.24”低几个数量级。 – 2013-02-25 17:24:48

无法在共享连接后获取计算机的本地IP地址。即使你能得到它们,它们也不会是唯一的,因为它们被重用 - 这就是NAT的整点。你会有很多人使用192.168.1.1或类似的地址。

如果您想区分共享相同IP地址的多台计算机,则可以添加另一个因素,例如倾向于不同的user agent string

例如:

<?php 
md5(
    $_SERVER['REMOTE_ADDR'] . 
    $_SERVER['HTTP_USER_AGENT'] 
); 
// 80b567b7c7ccfbda75a9712f16ca4429 

会给你一个哈希如果两个用户共享同一个IP地址,并具有相同的浏览器和操作系统的版本,只会是相同的。

请访问Panopticlick以了解关于“浏览器指纹识别”的更多信息。令人惊讶的是,浏览器在它们的配置组合中几乎是独一无二的。如果您使用Javascript进行客户端分析,您可以在其中访问显示分辨率,安装的插件版本和其他详细信息,则可以轻松区分具有共享IP的用户。

+0

很酷的想法...将工作,并通过获得更多的浏览器信息,使其更可靠进一步提高。谢谢! – Sms 2013-02-25 17:57:01

+0

或者只是使用现有的网络分析软件,如[Piwik](http://piwik.org/)。 – pixelistik 2013-02-25 18:06:26

+0

当然需要注意的是,在企业环境中,代理服务器很常见,每个工作站都是克隆服务器也是很常见的,这通常会使用户代理程序相同。 – deceze 2013-02-25 18:39:13

你不能。 IP地址是数据包传送机制。没有什么能保证特定网络中的IP地址对于一台特定的机器来说是唯一的,根本就没有这种相关性。机器在其网络中有一个唯一的地址,但是这个地址可能不是全球唯一的(无论如何你都不能得到这个IP)。共享代理的公共IP在公共互联网上是唯一的,但没有规定它必须与一台物理机器相对应。

IPs!=机器,与它一起生活。

这里是回答你的问题:

<?php 

echo "IP address".$_SERVER["REMOTE_ADDR"] 

echo "LAN Address".$_SERVER["HTTP_X_FORWARDED_FOR"] 
?> 

这不是一个肯定的方式来获得一个独特的访问者。 LAN地址很容易被欺骗。 也有许多公司使用DHCP服务器,每天发布新的LAN IP。 饼干将是“唯一”真正的检查方式。

+0

路由器与代理不同。局域网一般在路由器后面,他们从不公开私人地址。 (低调的选民应该很关心这个问题。) – 2013-02-25 17:26:07

+0

感谢您的帮助。就像你说的那样,这可以很容易被欺骗,而且php cookies会是最好的选择,但是一些浏览器不支持它,而一些用户可能只是禁用或调整他们的设置反对cookie或其他东西...所以我只是stucked如何跟踪独特访问者的信息... – Sms 2013-02-25 17:33:19