IP 접근을 차단하는 PHP 함수

WBOY
풀어 주다: 2016-07-25 09:00:26
원래의
1393명이 탐색했습니다.
为大家提供一个可以禁止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으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿