PHPフィルタは、ユーザの入力などの非セキュアソースからのデータを検証し、フィルタするために使用されます。
外部データとは何ですか?
- フォームからの入力データ
- クッキー
- Webサービスのデータ
- サーバー変数
- データベースのクエリ結果
変数をフィルタリングするには、以下のフィルタ機能のいずれかを使用します。
- filter_var() - 指定されたフィルタを介して単一の変数をフィルタリングします
- filter_var_array() - 同一または異なるフィルタによって複数の変数をフィルタします
- filter_input - 入力変数を取り、それをフィルタリング
- filter_input_array - 複数の入力変数を取得し、同じまたは異なるフィルタを通してそれらをフィルタリングします
<?PHP の$ int型 = 123 ; IF(にfilter_var(!$のInt、FILTER_VALIDATE_INT)) { エコー( "いない有効な整数" ); } 他 { エコー( "有効な整数" ); } ?>
フィルタの2種類があります。
フィルタの検証:
- ユーザー入力を検証するために使用されます
- (例えばURLや電子メールの確認など)の厳密なフォーマットルール
- 成功した場合、期待される戻り値の型、もしFALSE失敗した場合に
消毒のフィルタ:
- 指定を許可または禁止するための文字列
- データなし書式ルールません
- 常に文字列を返します
オプションとフラグ
オプションとフラグが指定されたフィルタに追加のフィルタリングオプションを追加するために使用されています。
異なるフィルタは、さまざまなオプションとフラグを持っています。
<?PHP の$ VAR = 300 ; $ int_options = アレイ( "オプション" => アレイ ( "min_range" => 0、 "MAX_RANGE" => 256 ) ); IF(にfilter_var(!$のVAR、FILTER_VALIDATE_INT、$ int_options )) { エコー( "無効な整数" ); } 他 { エコー( "有効整数" ); } ?>
filter_has_var (INPUT_GET 、" 電子メール" )
filter_input (INPUT_GET 、" 電子メール" 、FILTER_VALIDATE_EMAIL )
- 「GET」タイプ「電子メール」の入力変数の存在を検出
- 入力変数が存在する場合、それは有効な電子メールアドレスであるかどうかを検出します
!filter_has_var (INPUT_GET 、"URL" )
$ URL = filter_input(INPUT_GET、 "URL"、FILTER_SANITIZE_URL)。 エコー $ URLを。
- 入力変数が存在する場合は、その精製(不正な文字を削除)、および$ url変数に格納し
「ます。http://www.ruåånoøøob.com/」、次のように精製された変数$ URLの入力変数は、次のような文字列がある場合:
http://www.runoob.com/
繰り返し呼び出さにfilter_varまたはfilter_input機能を回避するために、我々はfilter_var_arrayまたはfilter_input_array機能を使用することができます。
この例では、3つのGET変数をフィルタリングするfilter_input_array()関数を使用します。GET変数を受けた氏名、年齢、メールアドレスは次のとおりです。
$フィルター = 配列 ( "名" => 配列 ( "フィルタ" => FILTER_SANITIZE_STRING )、 "年齢" => 配列 ( "フィルタ" => FILTER_VALIDATE_INT、 "オプション" => 配列 ( "min_range" => 1、 「MAX_RANGE 「=> 120 ) )、 "電子メール" => FILTER_VALIDATE_EMAIL )。 $結果 = filter_input_array(INPUT_GET、$フィルター)。 もし(!$結果 [ "年齢" ( "120 <BR> 1歳のでなければなりません" ); }
FILTER_CALLBACKは、フィルタを用いて、関数呼び出しをカスタマイズすることができ、
関数 convertSpace($文字列) { 戻り str_replace( "_"、 "" $文字列); } $文字列 = "www_runoob_com!" ; エコーにfilter_var($文字列、FILTER_CALLBACK、 配列( "オプション" => "convertSpace"));