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();
http://www.bkjia.com/PHPjc/825309.htmlwww.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...