php禁止ip存取的函數

WBOY
發布: 2016-07-25 09:00:26
原創
1398 人瀏覽過
为大家提供一个可以禁止IP访问的函数,包含一个信任IP访问的函数,有需要的朋友可以参考下。

完整代码如下。

<?
/**
* 禁止IP访问的函数
* 搜集 程序员之家 bbs.it-home.org
*/
function check_ip($range,$ip='') {
if($ip == '') $ip = getenv("REMOTE_ADDR");
if ($ip == "127.0.0.1") return 1;
$result = 1;
if (ereg("([0-9]+).([0-9]+).([0-9]+).([0-9]+)/([0-9]+)",$range,$regs)) {
   $ipl = ip2long($ip);
   $rangel = ip2long($regs[1] . "." . $regs[2] . "." . $regs[3] . "." . $regs[4]);

   $maskl = 0;

for ($i = 0; $i< 31; $i++) {
if ($i < $regs[5]-1) {
$maskl = $maskl + pow(2,(30-$i));
}
}

if (($maskl & $rangel) == ($maskl & $ipl)) {
   return 1;
} else {
   return 0;
}
} else {

$maskocts = split(".",$range);
   $ipocts = split(".",$ip);
   for ($i=0; $i<4; $i++) {
     if (ereg("[([0-9]+)-([0-9]+)]",$maskocts[$i],$regs)) {
      if ( ($ipocts[$i] > $regs[2]) || ($ipocts[$i] < $regs[1])) {
         $result = 0;
      }
}
else
{
if ($maskocts[$i] <> $ipocts[$i]) {
    $result = 0;
}
}
}
}
return $result;
}

function auth_ip(){
   $result = 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 = trim($line);
$line=ereg_replace("#.*","",$line);
if ($line != ""){
$null_check = 0;
if (check_ip($line)) {
fclose($fg);
return 1;
}
}
}
@fclose($fg);
if ($null_check == 1) return 1;
return $result;
}
?>
登入後複製
您可能感兴趣的文章: PHP禁止IP访问网站 php 禁止单个IP地址或IP段访问


相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板