PHP代码屏蔽中国的IP地址
做外贸的网站一般都不想让国内人访问,可以采用如下的方法:
1. 从APNIC获取一份国家与地区IP段数据 [url=ftp://ftp.apnic.net/apnic/dbase/data/country-ipv4.lst:1msa83z5]ftp://ftp.apnic.net/apnic/dbase/data/country-ipv4.lst[/url:1msa83z5]
2. 将中国的数据整理取出(用excel的数据筛选功能)
[color=#FF0000]注意不要把自己所在的IP段屏蔽啊,不然你自己也无法访问了![/color]
3. 编写PHP代码如下
[code]<?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;
//取得用户ip后,与之比较,如果匹配,就可以在这里显示一个错误页,或重定向了
};
}
?>[/code]
程序执行时间平均20毫秒,篇幅有限,仅列出部分IP段,完整的请自行获取。