PHP は IP ブラック/ホワイト リスト フィルタリングを尊重します

WBOY
リリース: 2016-06-13 13:02:55
オリジナル
836 人が閲覧しました

PHP は IP ブラックリストとホワイトリストのフィルタリングを実装します
この要件は、PHP ファイルで IP フィルタリングを実行したいという運用および保守の同僚からのものでした。サーバーを直接設定するのは不便なので、IP フィルタリングを PHP ファイルの先頭で直接実行する必要がありました。
IP フィルタリング ルールは次の形式をとることができます:
1. 完全な IP アドレス (例: 192.168.0.1)
2. 特定の IP セグメント (例: 192.168.0.*)。
運用と保守は、複数の IP フィルタリング ルールで構成され、配列に保存されている IP ブラック/ホワイト リストをカスタマイズできます。コードを記述することで、IP ブラック/ホワイト リスト機能が実装されます。比較的単純な要件です。
まず関数を実装します。この関数は、IP が特定の IP フィルタリング ルールに一致するかどうかを判断することです:

function ip_test($ip,$iprule){
   $ipruleregexp=str_replace('.*','ph',$iprule);
   $ipruleregexp=preg_quote($ipruleregexp,'/');
   $ipruleregexp=str_replace('ph','\.[0-9]{1,3}',$ipruleregexp);

   if(preg_match('/^'.$ipruleregexp.'$/',$ip)) return true;
   else return false;
   
}
    
ログイン後にコピー

コア関数 ip_test を実装した後、次のプロセスははるかに簡単になります。リスト内のルールごとに、現在接続されている IP がルールに準拠しているかどうかを判断し、対応する手順を実行します。
ホワイトニング リスト。IP が少なくとも 1 つのルールを満たす場合に操作を継続します。IP ブラック リストおよびホワイト リスト フィルタリングの単純な PHP 実装が完了しました。このブログは主に技術サポートや運用保守など、開発以外を本業としている人向けのブログです。あまりにも簡単すぎたので、最初は書きたくなかったのですが、後で同僚が私の協力に感謝し、インターネットでこれを長い間探していたが、適切な解決策が見つからなかったと言いました。 . もしかしたら本当に必要な人がいるかもしれないと思いました。​
     $curr_ip=$_SERVER['REMOTE_ADDR'];
     $white_list=array(...); //白名单规则
     $test_success=false;
     foreach($white_list as $iprule){
        if(ip_test($curr_ip,$iprule)){
           $test_success=true;
           break;
        }
     }
     if(!$test_success) exit('IP not in white list');

     
ログイン後にコピー

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート