于洋博客 互联网点滴记忆

5Aug/100

PHP代码屏蔽中国的IP地址

1. 从APNIC获取一份国家与地区IP段数据 ftp://ftp.apnic.net/apnic/dbase/data/country-ipv4.lst
2. 将中国的数据整理取出(用excel的数据筛选功能)
3. 编写PHP代码如下
<?php
  function ipCIDRCheck ($IP, $CIDR) {
    list ($net, $mask) = split ("/", $CIDR);
    if($mask>16){
  $net=$net.".0";
 }else{
  $net=$net.".0.0";
 }
    $ip_net = ip2long ($net);
    $ip_mask = ~((1 << (32 - $mask)) - 1);
    $ip_ip = ip2long ($IP);
    $ip_ip_net = $ip_ip & $ip_mask;
    return ($ip_ip_net == $ip_net);
  }
$subnets=<<<Eof
60.0/11
60.55/16
60.63/16
60.160/11
60.194/15
60.200/13
60.208/12
60.232/15
60.235/16
60.245.128/17
60.247/16
60.252/16
60.253.128/17
60.255/16
Eof;
$subnetarray=explode("\n",$subnets);
foreach($subnetarray as $subnet){
 if(ipCIDRCheck ("60.168.86.219", $subnet)){
  echo "60.168.86.219 in => ".$subnet;
 };
}
?>

程序执行时间平均20毫秒,篇幅有限,仅列出部分IP段,完整的请自行获取。

Filed under: PHP Leave a comment
Comments (0) Trackbacks (0)

No comments yet.


Leave a comment

(required)

No trackbacks yet.