我有一个php页面,学校的学生通过iPad登录。。我需要在这个过程中记录他们的IP地址(为学校记录),但他们都有相同的IP地址,我使用的方法是:
if (getenv(HTTP_X_FORWARDED_FOR)) {
$ipaddress = getenv(HTTP_X_FORWARDED_FOR);
} else {
$ipaddress = getenv(REMOTE_ADDR);
}
我能获得的每个iPad唯一的更深入的IP地址是什么?
这就是网络的现实。您能得到的唯一经验证的地址是$_SERVER['REMOTE-ADDR']
,因为它是TCP/IP握手中协商的地址。这个地址可能只是路由器、代理、NAT设备或其他你看不到的东西的地址。HTTP头中的任何其他内容都是完全不可验证的、不可靠的,并且很容易被欺骗。
IP地址根本无法保证或期望是唯一的或"真实的",除非您完全控制并完全了解客户端和服务器之间的网络。
这是因为基于IP的分组交换网络是为了将数据从网络上的一个节点可靠地传递到另一个节点而设计的。IP地址就是其中的一个实现细节。两者都不是为唯一标识而设计的。
听起来iPad在NAT后面,在这种情况下,你将无法获得它们的内部IP地址。即使你可以,它也不可能是每台iPad独有的。