PHP获取客户端IP地址讲解
2021-06-16 07:08
标签:turn com forward http协议 for logs 大型 .com 博文 http://www.cnblogs.com/chengmo/archive/2013/05/29/php.html (详情请参考这篇博文) 1.‘REMOTE_ADDR‘是远端IP,默认来自TCP连接是,客户端的Ip。它最准确,但是只会得到直接连服务器客户端IP。 如:a->b(proxy)->c ,如果c 通过’REMOTE_ADDR’ ,只能获取到b的IP,获取不到a的IP了。*/ $ip=$_SERVER[‘REMOTE_ADDR‘]; 2.‘HTTP_X_FORWARDED_FOR‘,‘HTTP_CLIENT_IP‘ 为了能在大型网络中,获取到最原始用户IP,或者代理IP地址。对HTTp协议进行扩展。定义了实体头。 HTTP_X_FORWARDED_FOR = clientip,proxy1,proxy2 所有IP用”,”分割。 X-Forwarded-For 请求头格式非常简单,就这样: function getIP() { if (isset($_SERVER[‘HTTP_X_FORWARDED_FOR‘])) { ?> PHP获取客户端IP地址讲解 标签:turn com forward http协议 for logs 大型 .com 博文 原文地址:http://www.cnblogs.com/zyy1998/p/7271709.html
如果对方通过代理服务器上网,就发现。获取到的是代理服务器IP了。
echo $ip;
HTTP_CLIENT_IP 在高级匿名代理中,这个代表了代理服务器IP。
既然是http协议扩展一个实体头,并且这个值对于传入端是信任的,信任传入方按照规则格式输入的.
X-Forwarded-For: client, proxy1, proxy2
*/
$realip = $_SERVER[‘HTTP_X_FORWARDED_FOR‘];
} elseif (isset($_SERVER[‘HTTP_CLIENT_IP‘])) {
$realip = $_SERVER[‘HTTP_CLIENT_IP‘];
} else {
$realip = $_SERVER[‘REMOTE_ADDR‘];
}
return $realip;
}
echo getIP();