PHPフィルター2024 年の最新の入門チュートリアル。このコースでは PHPフィルターとは何ですか?,なぜフィルタを使うのか?,関数とフィルタ,検証および消毒,オプションとフラグ,入力の検証,例について説明しました,精製入力,例について説明しました,入力フィルタの複数,例について説明しました,フィルターのコールバックを使用します,例について説明しました, について学習できます。
PHPフィルタを検証し、ユーザ入力として安全でないソースからフィルタデータをするために使用されます。
PHPフィルターは、安全でないソースからのデータを検証し、フィルタリングするために使用されます。
テスト、検証およびフィルタユーザーの入力またはカスタムデータの任意のWebアプリケーションの重要な部分です。
PHPフィルタの拡張は、データが簡単かつ迅速フィルタリングするように設計されています。
ほとんどすべてのWebアプリケーションは、外部入力に依存しています。 これらのデータは、通常、ユーザーまたは(Webサービスなど)の他のアプリケーションから来ています。 フィルタを使用することにより、アプリケーションは正しい入力タイプを取得することを確認することができます。
あなたは常に外部データのフィルタリングすべき!
入力フィルタリングは、最も重要なアプリケーションのセキュリティ上の問題です。
外部データとは何ですか?
変数をフィルタリングするには、次のフィルタ機能のいずれかを使用します。
次の例では、我々はにfilter_var()関数を使用し、整数を検証します:
<?php $int = 123; if(!filter_var($int, FILTER_VALIDATE_INT)) { echo("不是一个合法的整数"); } else { echo("是个合法的整数"); } ?>
上記のコードは、変数をフィルタリングする「FILTER_VALIDATE_INT」フィルタを使用しています。 整数が正当なものであるので、ので、上記のコードが出力されます:
私たちは(そのような "123ABC"のような)非整数の変数を使用しようとすると、出力は次のとおりです。「整数が有効ではありません」。
機能やフィルタの完全なリストについては、私たちの訪問PHPフィルタのリファレンスマニュアルを 。
フィルタの2種類があります。
フィルタを検証:
消毒のフィルタ:
オプションとフラグが指定されたフィルタに追加のフィルタリングオプションを追加するために使用されています。
異なるフィルタは、さまざまなオプションとフラグを持っています。
次の例では、整数を検証するためにfilter_var()と「min_range」と「MAX_RANGE」オプションを使用します。
<?php $var=300; $int_options = array( "options"=>array ( "min_range"=>0, "max_range"=>256 ) ); if(!filter_var($var, FILTER_VALIDATE_INT, $int_options)) { echo("不是一个合法的整数"); } else { echo("是个合法的整数"); } ?>
上記のコードのように、関連するオプションは、「オプション」で呼ばれる配列に配置する必要がありますように。 フラグは、アレイ内で必要とされていない場合。
整数が「300」であるので、それは指定された範囲内ではない、上記のコードの出力は次のようになります。
不是一个合法的整数
機能やフィルタの完全なリストについては、私たちの訪問PHPフィルタのリファレンスマニュアルを 。 あなたは、各フィルタとフラグで使用可能なオプションを見ることができます。
フォームからの入力を検証してみましょう。
私たちは、まず最初に、入力データは、我々が探していることを確認することです行う必要があります。
その後、我々は、入力されたデータをフィルタリングするfilter_input()関数を使用します。
以下の例では、入力変数「電子メール」は、PHPページに渡されます。
<?php if(!filter_has_var(INPUT_GET, "email")) { echo("没有 email 参数"); } else { if (!filter_input(INPUT_GET, "email", FILTER_VALIDATE_EMAIL)) { echo "不是一个合法的 E-Mail"; } else { echo "是一个合法的 E-Mail"; } } ?>
以下のように、上記の結果の例は以下の通りでした。
上記の例では、転送の(メール) "GET"メソッドによって入力変数を持っています。
フォームのURLから来るまでクリアしてみましょう。
まず第一に、我々は、入力されたデータは、我々が探していることを確認する必要があります。
その後、我々は、入力データfilter_input()関数をサニタイズ。
以下の例では、入力変数 "urlは「PHPページに渡されます。
<?php if(!filter_has_var(INPUT_GET, "url")) { echo("没有 url 参数"); } else { $url = filter_input(INPUT_GET, "url", FILTER_SANITIZE_URL); echo $url; } ?>
1入力変数(URL)によって、上記の例は "GET"メソッドを送信:
入力変数は、このような文字列である場合:「http://www.ruaanoob.com/ "次のように、精製後の$ url変数は、次のとおりです。
フォームは、多くの場合、複数の入力フィールドで構成されています。 繰り返し呼び出さにfilter_varまたはfilter_input機能を回避するために、我々はfilter_input_arrayのfilter_var_arrayまたは機能を使用することができます。
ここでは、3 GET変数をフィルタリングするfilter_input_array()関数を使用します。 GET変数を受け取った名前、年齢、電子メールアドレスは次のとおりです。
<?php $filters = array ( "name" => array ( "filter"=>FILTER_SANITIZE_STRING ), "age" => array ( "filter"=>FILTER_VALIDATE_INT, "options"=>array ( "min_range"=>1, "max_range"=>120 ) ), "email"=> FILTER_VALIDATE_EMAIL ); $result = filter_input_array(INPUT_GET, $filters); if (!$result["age"]) { echo("年龄必须在 1 到 120 之间。<br>"); } elseif(!$result["email"]) { echo("E-Mail 不合法<br>"); } else { echo("输入正确"); } ?>
上記の例では、「GET」メソッドを介して送信3の入力変数(名前、年齢、電子メールを)持っています:
filter_input_array()関数の2番目の引数は、配列または単一のフィルタIDすることができます。
パラメータは、単一のフィルタIDである場合には、指定されたフィルタは、すべての入力配列の値をフィルタします。
このパラメータが配列の場合、配列は次の規則を遵守しなければなりません。
FILTER_CALLBACKフィルタを使用することで、使用するフィルタとして使用し、カスタム関数を呼び出すことができます。 したがって、我々は、データのフィルタリングを完全に制御できます。
独自のカスタム関数を作成したり、既存のPHP関数を使用することができます。
あなたはこの方法を所定の規定指定されたオプションに応じて、フィルタ機能を使用できるようになります。 名前「オプション」を連想配列で。
次の例では、我々はスペースに変換 "_"すべてのカスタム関数を使用します。
<?php function convertSpace($string) { return str_replace("_", ".", $string); } $string = "www_w3big_com!"; echo filter_var($string, FILTER_CALLBACK, array("options"=>"convertSpace")); ?>
上記のコードの結果は次のとおりです。
上記の例は、すべて "_"に ""。: