In diesem Artikel wird hauptsächlich das Codebeispiel des PHP-Programms zur Beurteilung der IP-Blacklist vorgestellt. Freunde, die es benötigen, können darauf verweisen.
Das Nachrichtensystem der Schule erfordert, dass einige Nachrichten nur über die IP der Schule durchsucht werden können Ich habe einen Code neu geschrieben, um diese Funktion zu implementieren. Das Ergebnis nach der Implementierung ist, dass Sie nur die IPs auflisten müssen, auf die in der Datei ip.txt zugegriffen werden darf. Es werden auch IPs der Klasse C unterstützt, zum Beispiel:
ip.txt
192.168
211.67.188
211.67.191.25
Der Code lautet wie folgt:
Der Code lautet wie folgt:
/* * 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(); } } ?>
Sie können den obigen Code zum Betrügen verwenden. Der folgende Code dient zum Aktualisieren
Der Code lautet wie folgt:
<?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); } } ?>
Zitatfragment:
Der Code lautet wie folgt:
$oBlock_ip = new block_ip(); $oBlock_ip->checkIP();
Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung des Codebeispiels für das PHP-Beurteilung-IP-Blacklist-Programm. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!