内容へ移動
あちあち情報局
趣味や日曜プログラムなどを書いています
ユーザ用ツール
ログイン
サイト用ツール
検索
ツール
文書の表示
以前のリビジョン
バックリンク
最近の変更
メディアマネージャー
サイトマップ
ログイン
>
最近の変更
メディアマネージャー
サイトマップ
現在位置:
トップページ
»
PHP ブラックリスト&ホワイトリスト
php_blacklist_whitelist
この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。
====== PHP ブラックリスト&ホワイトリスト ====== 入力された値が登録リスト(配列)に存在するか・存在しないか確認する方法 ===== in_array方式 ===== in_arrayは配列に値があるかを確認します。(注意:英語の大文字小文字も比較します) <code php> //入力 $input='aaa'; //リスト $lists= array('aaa','bbb','ccc'); if( in_array( $input , $lists , true) ) { echo 'リスト一致'; //ホワイトリストの場合は合格処理 //ブラックリストの場合は拒否処理 }else{ echo 'リスト不一致'; //ホワイトリストの場合は拒否処理 //ブラックリストの場合は合格処理 } </code> ===== 正規表現 preg_match 方式 ===== preg_matchで正規表現に一致するか確認します。正規表現を使うと部分一致・先頭一致・後方一致・大文字小文字の違いなどでも判定できます。(正規表現は難しいので後半に一例を上げます) <code php> <?php //入力 $input='aaa'; //リスト(正規表現) $lists= array('/^aaa$/','/^bbb$/','/^ccc$/'); $mach_flag=0; foreach ($lists as $value){ if( preg_match($value,$input) ){ $mach_flag=1; break; //マッチした時点でforeach中断し次へ進む } } if($mach_flag==1){ echo 'リスト一致'; //ホワイトリストの場合は合格処理 //ブラックリストの場合は拒否処理 }else{ echo 'リスト不一致'; //ホワイトリストの場合は拒否処理 //ブラックリストの場合は合格処理 } ?> </code> ** 正規表現の一例 ** ^リスト文字列^説明^ |%%/aaa/%%|「aaa」が含まれる場合にマッチ、「**aaa**」や「xxx**aaa**xxx」にマッチ| |%%/^aaa/%%|先頭が「aaa」で始まる場合にマッチ「**aaa**bc」にマッチするが「xaaa」にはマッチしない| |%%/aaa$/%%|最後が「aaa」で終わる場合にマッチ「xx**aaa**」にマッチするが「aaax」にはマッチしない| |%%/^aaa$/%%|完全一致、「**aaa***」の場合にマッチ、大文字の「AAA」にはマッチしない| |%%/aaa/i%%|大文字小文字を区別しない、「xx**AAA**xx」や「xx**aAa**xx」にもマッチ| |%%/^aaa/m%%|対象が複数行時に%%^%%と%%$%%を先頭と最後以外の各行頭と行末でもマッチ判定する| |%%/a.*/s%%|パターン文字の%%.%%を改行でマッチ判定する| ** メタ文字の注意 ** リスト中で次の文字「''\ ^ $ . [ ] | ( ) ? * + { } -''」は正規表現の制御文字として使用するためリスト対象の文字列としてそのまま使用できません。必ずエスケープ処理を行って下さい。 エスケープ方法は上記文字の前に「''\''」を付けます <code> $lists= array('/150$/'); //これだと「150」で終わデータにマッチ $lists= array('/150\$/'); //これだと「150$」を含むデータにマッチ </code>
php_blacklist_whitelist.txt
· 最終更新: 2018/12/20 09:05 by
管理者
ページ用ツール
文書の表示
以前のリビジョン
バックリンク
文書の先頭へ