Home > Backend Development > PHP Tutorial > PHP judgment IP blacklist program code example_PHP tutorial

PHP judgment IP blacklist program code example_PHP tutorial

WBOY
Release: 2016-07-13 10:24:46
Original
938 people have browsed 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 Class C IP, for example:

ip.txt
192.168
211.67.188
211.67.191.25
The code is as follows:

Copy code The code is as follows:

/*
* IP address blacklist, whitelist
* Judgment Whether the ip of the visitor address is in ip.txt, supports class 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"; //Execute related commands
die();
}
}

?>

You can use the above code to cheat, the following code is to upgrade

Copy code The code is as follows:

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 in the blacklist
if ($iptable) {
foreach($iptable as $value) {
if (preg_match("{$value}",$Ip)) {
$IsJoined = false;
break;
}
}
}
// If it 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 fragment:

Copy code The code is as follows:

$oBlock_ip = new block_ip();
$ oBlock_ip->checkIP();

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/825309.htmlTechArticleThe school’s news system requires that some news can only be browsed by the school IP, 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...
Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template