2012-02-22 107 views
0

我有一个php页面,学校的学生通过他们的iPad登录..我需要在这个过程中记录他们的IP地址(用于学校的记录),但他们都有相同的IP地址与方法我使用:iPad的绝对IP地址?

if (getenv(HTTP_X_FORWARDED_FOR)) { 
    $ipaddress = getenv(HTTP_X_FORWARDED_FOR); 
} else { 
    $ipaddress = getenv(REMOTE_ADDR); 
} 

什么是更深入的IP地址,我可以获得这将是每个iPad独一无二的?

+1

引用你的字符串! 'GETENV( 'HTTP_X_FORWARDED_FOR')'。 'HTTP_X_FORWARDED_FOR'不是一个常量(或者至少我怀疑它是)。 – deceze 2012-02-22 05:50:09

+1

通过记录IP地址获得什么? – 2012-02-22 06:39:22

+0

当学生在他们的iPad上滥用,并且我们知道iPad滥用系统的IP地址时,我们可以告诉他是哪个学生。 – 2012-02-22 14:51:27

回答

1

这就是网络的现实。唯一经过验证的地址是$_SERVER['REMOTE-ADDR'],因为这是TCP/IP握手协商的地址。这个地址可能只是路由器,代理,NAT设备或其他你无法“看到”的东西。 HTTP标头中的其他内容完全无法证实,不可靠且容易被欺骗。

除非您完全控制并且完全了解客户端与服务器之间的网络,否则IP地址根本无法保证或预期为唯一或“真实”。

这是因为基于IP的分组交换网络旨在将数据从网络上的一个节点可靠地传送到另一个节点。 IP地址是其实现细节。它们都不能用于唯一标识的目的。

0

听起来像iPad是在NAT后面,在这种情况下,你将无法获得他们的内部IP地址。即使你可以,它也不可能是每个iPad独一无二的。