好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

php判断ip黑名单程序代码 - php高级应用

php判断ip黑名单程序代码

学校的新闻系统要求有些新闻只开放校内ip浏览,于是重写了一个代码来实现此功能,实现后的结果是,只要把允许访问的ip列入ip.txt这个文件中即可,同时支持c类ip,例如:

ip.txt  192.168  211.67.188  211.67.191.25 

PHP实例代码如下:

/*   * ip地址黑名单、白名单   * 判断访客地址的ip是否在ip.txt中,支持c类ip   * By xhat   */     $ip  =  $_SERVER [ 'REMOTE_ADDR' ];  $ipArray  = preg_replace( "#rn?|n#" , "" ,file( 'ip.txt' ));  foreach  ( $ipArray   as   $ipTest ) {  if  (substr_count( $ip ,  $ipTest ) !=  "0" ) {  echo   "ok" ;  //执行相关命令   die ();  }  } 

上面大家可以使用代码来骗过了,下面代码进行升级:

<?php   class  block_ip {   var   $Block_ip  =  array ( "192.168.1.1" , "210.10.2.1-20" , "222.34.4.*" );   function  __construct(){   }   function  __destruct(){   }   private   function  makePregIP( $str ){   if  ( strstr ( $str , "-" )) {   $aIP  =  explode ( "." , $str );   foreach  ( $aIP   as   $k => $v ) {   if  (! strstr ( $v , "-" )) {   $preg_limit  .= makePregIP( $v );   }  else {   $aipNum  =  explode ( "-" , $v );   for ( $i = $aipNum [0]; $i <= $aipNum [1]; $i ++){   $preg  .= $preg ? "|" . $i : "[" . $i ;   }   $preg_limit  .= strrpos ( $preg_limit , "." ,1)==( strlen ( $preg_limit )-1)? $preg . "]" : "." . $preg . "]" ;   }   }   } else {   $preg_limit  .=  $str . "." ;   }   return   $preg_limit ;   }   private   function  getAllBlockIP(){   if  ( $this ->Block_ip) {   foreach  ( $this ->Block_ip  as   $k => $v ) {   $ipaddres  =  $this ->makePregIP( $v ->start_ip);   $ip  =  str_ireplace ( "." , "." , $ipaddres );   $ip  =  str_replace ( "*" , "[0-9]{1,3}" , $ip );   $ipaddres  =  "/" . $ip . "/" ;   $ip_list [] =  $ipaddres ;   }   }   return   $ip_list ;   }   public   function  checkIP() {   $iptable  =  $this ->getAllBlockIP();   $IsJoined  = true;   //取得用户ip    $Ip  =  $this ->get_client_ip();   $Ip  = trim( $Ip );   //剔除黑名单中的IP区段    if  ( $iptable ) {   foreach ( $iptable   as   $value ) {   if  (preg_match( "{$value}" , $Ip )) {   $IsJoined  = false;   break ;   }   }   }   // 如果在ip黑名单中就执行如下操作    if ( ! $IsJoined  ){   echo   "IP Error" ;   exit ;   }   }   private   function  get_client_ip(){   if  ( getenv ( "HTTP_CLIENT_IP" ) &&  strcasecmp ( getenv ( "HTTP_CLIENT_IP" ),  "unknown" ))   $ip  =  getenv ( "HTTP_CLIENT_IP" );   else   if  ( getenv ( "HTTP_X_FORWARDED_FOR" ) &&  strcasecmp ( getenv ( "HTTP_X_FORWARDED_FOR" ),  "unknown" ))   $ip  =  getenv ( "HTTP_X_FORWARDED_FOR" );   else   if  ( getenv ( "REMOTE_ADDR" ) &&  strcasecmp ( getenv ( "REMOTE_ADDR" ),  "unknown" ))   $ip  =  getenv ( "REMOTE_ADDR" );   else   if  (isset( $_SERVER [ 'REMOTE_ADDR' ]) &&  $_SERVER [ 'REMOTE_ADDR' ] &&  strcasecmp ( $_SERVER [ 'REMOTE_ADDR' ],  "unknown" ))   $ip  =  $_SERVER [ 'REMOTE_ADDR' ];   else    $ip  =  "unknown" ;   return ( $ip );   }   }   ?> 

引用片段,代码如下:

$oBlock_ip = new block_ip(); 

$oBlock_ip->checkIP();

查看更多关于php判断ip黑名单程序代码 - php高级应用的详细内容...

  阅读:48次