検索
ホームページphp教程php手册IP および IP セグメントへのアクセスを制限する

元々いくつかの関数を書いていて、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();
以下是引用片段:
$oBlock_ip = new block_ip();
$oBlock_ip->checkIP();
$oBlock_ip->checkIP();

以下引用部分:
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

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

PhpStorm Mac バージョン

PhpStorm Mac バージョン

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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