首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

稽查IP是否属于中国IP

2012-11-06 
检查IP是否属于中国IPfunction checkipinchina($ip) {static $iplist NULLif($iplist NULL)$iplist

检查IP是否属于中国IP

function checkipinchina($ip) {static $iplist = NULL;if($iplist == NULL)$iplist = file_get_contents('chinaip');list($a, $b, $c, $d) = explode('.', $ip);$check = ($a << 24) + ($b << 16) + ($c << 8) + $d;preg_match_all("~\n$a\.\d+\.\d+\.\d+\/\d+~", $iplist, $ip2);foreach((array)$ip2[0] as $cidr) {$cidr = trim($cidr);list($base, $bits) = explode('/', $cidr);list($a, $b, $c, $d) = explode('.', $base);$i = ($a << 24) + ($b << 16) + ($c << 8) + $d;$mask = $bits == 0 ? 0 : (~0 << (32 - $bits));$low = $i & $mask;$high = $i | (~$mask & 0xFFFFFFFF);if ($check >= $low && $check <= $high) return true;}return false;}$ip = '1.60.161.0';var_dump(checkipinchina($ip));

其中的chinaip文件内容来自http://www.countryipblocks.net/country-blocks/select-formats/,格式为CIDR

热点排行