The IP blacklist implementation method is to first put the IP to be filtered in a txt file or database, and then obtain our IP address when we visit and then traverse and compare it.
The school's news system requires that some news can only be browsed by IP addresses within the school, so a code was rewritten to implement this function. The result after implementation is that as long as the IP addresses allowed to be accessed are listed in the ip.txt file, it also supports c Class IP, for example:
ip.txt
192.168
211.67.188
211.67.191.25
The code is as follows:
The code is as follows | Copy code | ||||||||
* IP address blacklist, whitelist * Determine whether the ip of the visitor's address is in ip.txt, and supports class c ip
|
The code is as follows | Copy code |
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; //Get user ip $Ip = $this->get_client_ip(); $Ip = trim($Ip); //Remove IP segments from the blacklist if ($iptable) { foreach($iptable as $value) { if (preg_match("{$value}",$Ip)) { $IsJoined = false; break; } } } // If www.bKjia.c0m is in the IP blacklist, perform the following operations 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); } } ?> |
Quote:
The code is as follows
|
Copy code | ||||
http: //www.bkjia.com/PHPjc/632711.html