php获取用户IP地址(兼容CDN)
墨初 编程开发 568阅读
php获取用户的IP地址一般都是通过 $_SERVER['REMOTE_ADDR'] 变量来获取到的,但有的网站使用了CDN代理加速,在这种情况下使用$_SERVER['REMOTE_ADDR']获取的IP地址有可能是CDN的代理IP地址,下面的博文就针对网站使用代码CDN加速的情况下,获取IP地址做个简单的介绍。
php 获取IP地址的方法
例1:
在网站不使用cdn加速代理的情况下,可以通过下面的代码获取用户的IP地址。
$_SERVER['REMOTE_ADDR']; // 119.164.27.53
例2:
网址在使用CDN的情况下,都会有一个 HTTP_X_FORWARDED_FOR 字段,此字段里面面包含了网站经过的所有代理的IP地址,其中就有用户的真实IP地址。
if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])){ //为了兼容百度的CDN,所以转成数组 $arr = explode(',',$_SERVER['HTTP_X_FORWARDED_FOR']); echo $arr[0]; }else{ echo $_SERVER['REMOTE_ADDR']; }
PS:注意 $_SERVER['HTTP_X_FORWARDED_FOR'] 在某些CDN代理下,有多个IP址理输出,而第一个就是用户的真实IP地址