request->userIP; } $is_lan_ip = self::isLanIp($ip); if(!$is_lan_ip){ return $ip; } return $ip; } /** * ip地址判断 * @param String $gonten 需要判断的字符串 * @return ture or false */ public static function isIp($gonten){ $ip=explode(".",$gonten); for($i=0;$i255){ return false; } } return preg_match("/^[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$/",$gonten); } /** * 判断ip地址是否是内网ip * @param String $gonten 需要判断的字符串 * @return ture or false true则为内网IP,否则不是 */ public static function isLanIp($gonten){ if($gonten == "127.0.0.1"){ return true; } $ip=explode(".",$gonten); //A类 10.0.0.0--10.255.255.255 if($ip[0] == 10){ for($i=1;$i255){ return false; } } return preg_match("/^[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$/",$gonten); } //B类 172.16.0.0--172.31.255.255 if($ip[0] == 171 && $ip[1] >= 16 && $ip <= 31){ for($i=2;$i255){ return false; } } return preg_match("/^[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$/",$gonten); } //C类 192.168.0.0--192.168.255.255 if($ip[0] == 192 && $ip[1] == 168){ for($i=2;$i255){ return false; } } return preg_match("/^[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$/",$gonten); } return false; } }