元々いくつかの関数を書いていて、IPブラックリストをライブラリに記録していたものを、分かりやすくするためにIPブラックリストを記述するクラスに変更しました。
192.168.1.1 単一 IP
192.168.1.* これは 192.168.1.1-192.168.1-255 を表します
192.158.1.2-20 これは 192.158.1.2-192.158.1 .20このように書くこともできます 192.168.1.[1|2|3]
へへ~、この考えが徹底しているかどうかはわかりませんが、議論の対象にしましょう
使ってください
以下は引用です:$oBlock_ip = 新しい block_ip();
|
以下引用部分: class block_ip { var $Block_ip = array("192.168.1.1","210.10.2.1-20", "222.34.4.*"); function __construct(){ } function __destruct(){ } プライベート関数 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 $preg .=$preg?"|".$i:"[".$私; $preg_limit .=strrpos($preg_limit,".",1)==(strlen($preg_limit)- 1)?$preg."]":".".$preg."] "; } } }else{ $preg_limit .= $str."."; } return $preg_limit; } プライベート 関数 getAllBlockIP(){ if ($this->Block_ip) { foreach ($this->Block_ip as $k=>$v) { $ipaddres = $this->make PregIP($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; 休憩; } //如果在ip黑名单中就行以下の操作 if( !$IsJoined ){ echo "IP Error"; 終了します。 } } 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 = $_サーバー[' REMOTE_ADDR']; else $ip = 「不明」; return($ip); } } ?> |
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事
R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)
1 か月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最高のグラフィック設定
1 か月前By尊渡假赌尊渡假赌尊渡假赌
アサシンのクリードシャドウズ:シーシェルリドルソリューション
2週間前ByDDD
R.E.P.O.誰も聞こえない場合はオーディオを修正する方法
1 か月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.チャットコマンドとそれらの使用方法
1 か月前By尊渡假赌尊渡假赌尊渡假赌

ホットツール

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

WebStorm Mac版
便利なJavaScript開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)
