Explication détaillée de l'exemple de code de programme de liste noire IP de jugement PHP

怪我咯
Libérer: 2023-03-13 09:32:01
original
1696 Les gens l'ont consulté

Cet article présente principalement l'exemple de code du programme PHP de liste noire d'évaluation des adresses IP. Les amis qui en ont besoin peuvent s'y référer

Le système d'actualités de l'école exige que certaines actualités ne puissent être consultées que par l'adresse IP de l'école, donc je a réécrit un code pour Pour implémenter cette fonction, le résultat après implémentation est qu'il vous suffit de lister les IP autorisées à accéder dans le fichier ip.txt. Il prend également en charge les IP de classe C, par exemple :

ip.txt

192.168
211.67.188
211.67.191.25
Le code est le suivant :

Le code est le suivant :

/*
* 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();
}
}
?>
Copier après la connexion
Vous pouvez utiliser le code ci-dessus pour tricher, le code suivant est à mettre à niveau

Le code est le suivant :

<?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[&#39;REMOTE_ADDR&#39;]) && $_SERVER[&#39;REMOTE_ADDR&#39;] && strcasecmp($_SERVER[&#39;REMOTE_ADDR&#39;], "unknown")) 
$ip = $_SERVER[&#39;REMOTE_ADDR&#39;]; 
else 
$ip = "unknown"; 
return($ip); 
} 
} 
?>
Copier après la connexion
Fragment de citation :

Le code est la suivante :

$oBlock_ip = new block_ip(); 
$oBlock_ip->checkIP();
Copier après la connexion


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!