//检查ip权限
$server_ip_allow = $arc->Fields["ipallowseg"];
$mask_ip_allow = $arc->Fields["ipallowsegmask"];
$server_ip_denie = $arc->Fields["ipdenieseg"];
$mask_ip_denie = $arc->Fields["ipdeniesegmask"];
$ipallowsegtest=preg_split('/;/', $server_ip_allow, -1, PREG_SPLIT_NO_EMPTY);
$ipallowsegmasktest=preg_split('/;/', $mask_ip_allow, -1, PREG_SPLIT_NO_EMPTY);
$ipdeniesegtest=preg_split('/;/', $server_ip_denie, -1, PREG_SPLIT_NO_EMPTY);
$ipdeniesegmasktest=preg_split('/;/', $mask_ip_denie, -1, PREG_SPLIT_NO_EMPTY);
$client_ip=$_SERVER["REMOTE_ADDR"];
//判断是否在允许ip地址里
$ipallowtest=false;
if(count($ipallowsegtest)<=0){ $ipallowtest=true; }
foreach ($ipallowsegtest as $item=>$value){
if(filter_var($value, FILTER_VALIDATE_IP) && filter_var($ipallowsegmasktest[$item], FILTER_VALIDATE_IP)){
$D = ip_binay($client_ip);
$M = ip_binay($ipallowsegmasktest[$item]);
$temp = $D & $M;
$N = ip_binay( $value );
$N = $N & $M;
if( $temp == $N ){
$ipallowtest = true;
}
}
}
$ipdenietest=false;
foreach ($ipdeniesegtest as $item=>$value){
if(filter_var($value, FILTER_VALIDATE_IP) && filter_var($ipdeniesegmasktest[$item], FILTER_VALIDATE_IP)){
$D=ip_binay($client_ip);
$M = ip_binay($ipdeniesegmasktest[$item]);
$temp = $D & $M;
$N = ip_binay( $value );
$N = $N & $M;
if( $temp == $N ){
$ipdenietest=true;
}
}
}
if(!($ipallowtest && !$ipdenietest)){
ShowMsg('你的ip地址'.$_SERVER["REMOTE_ADDR"].'不允许访问此类文章!', -1);
exit();
}
function ip_binay($ip)
{
$ip_array = explode(".",$ip);
$t = '';
foreach($ip_array as $v)
{
$tmp = decbin($v);
$tmp_len = strlen(decbin($v));
if($tmp_len < 8)
$t .= str_repeat( "0",(8 - $tmp_len) ).$tmp;
else
$t .= $tmp;
}
return $t;
}