関数 check_ip($range,$ip='') {
if($ip == '') $ip = getenv("REMOTE_ADDR");
if ($ip == "127.0.0.1") 1 を返す;
$結果 = 1;
if (ereg("([0-9] ).([0-9] ).([0-9] ).([0-9] )/([0-9] )",$range,$登録)) {
$ipl = ip2long($ip);
$rangel = ip2long($regs[1] . "." . $regs[2] . "." . $regs[3] . "." . $regs[4]);
$マスク = 0;
for ($i = 0; $i
if ($i
$maskl = $maskl pow(2,(30-$i));
}
}
if (($maskl & $rangel) == ($maskl & $ipl)) {
1 を返します;
} その他 {
0 を返す;
}
} その他 {
$maskocts = split(".",$range);
$ipocts = split(".",$ip);
for ($i=0; $i
if (ereg("[([0-9] )-([0-9] )]",$maskocts[$i],$regs)) {
if ( ($iocts[$i] > $regs[2]) || ($iocts[$i] < $regs[1])) {
$結果 = 0;
}
}
それ以外
{
if ($maskocts[$i] <> $iocts[$i]) {
$結果 = 0;
}
}
}
}
$result を返します;
}
関数 auth_ip(){
$結果 = 0;
$null_check = 1;
$path = "ip.cf"; //ip 制限構成文件,実行的格式です
/*
xxx.xxx.xxx.xxx 比如 127.0.0.2
xxx.xxx.xxx.[yyy-zzz] 比例 1270.0.0.[2-23]
xxx.xxx.xxx.xxx/nn 比如 127.0.0.0/24
*/
$fg=@fopen($path,"r");
while($line=@fgets($fg,1024)){
$line = トリム($line);
$line=ereg_replace("#.*","",$line);
if ($line != ""){
$null_check = 0;
if (check_ip($line)) {
fclose($fg);
1 を返します;
}
}
}
@fclose($fg);
if ($null_check == 1) 1 を返す;
$result を返します;
}
?>