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; }
$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');