ホームページ  >  記事  >  バックエンド開発  >  PHP フィルター実装コード_PHP チュートリアル

PHP フィルター実装コード_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:34:59780ブラウズ

従来、ユーザーは主にインターネットを通じて情報を取得していました。今日のインターネットでは、ユーザーは単なる Web サイトの閲覧者ではなく、Web サイトのコンテンツの作成者でもあります。これまでの単純な「読む」から「書く」「共創」へ、受動的に情報を受け取るだけから能動的に情報を分岐させるへと発展しました。それに伴うセキュリティ問題は、Web 開発者にとって無視できない問題となっており、サードパーティ ソースからのデータを検証することは、すべての Web プログラムにとって不可欠な機能となっています。

これまで、PHP ではデータを検証する必要があり、通常はプログラマ自身が正規表現を使用して実装していましたが、PHP 5.2 以降、元の PCEL のフィルター関数が組み込みライブラリに移動され、多くの機能強化が行われました。これらの関数を使用してデータをフィルタリングおよび検証します。

データ ソースと検証タイプ
PHP のデータ ソースには 2 つの部分が含まれます。1 つは外部変数 (POST、GET、COOKIE など)、もう 1 つはページ上で内部的に生成されるデータです。 PHP は、これら 2 つのデータ型にそれぞれ ilter_input_** および filter_var_** 一連の関数を定義します。さまざまな検証方法に応じて、検証とサニタイズという 2 つのタイプに分けることができます。 Validating はデータを検証するために使用され、ブール値を返します。サニタイズは、ルールに従って一部の特定の文字をフィルターし、処理された文字列を返します。

簡単な使用法
たとえば、文字列が整数であるかどうかを確認するには、以前は正規表現または is_numeric 関数を使用できました:

コードをコピー コードは次のとおりです:

$ str = '51ab' ;
preg_match('/^[0-9]*$/', $str);

新しい検証関数は次のように使用できます。 $str = '51ab';
echo filter_var($str, FILTER_VALIDATE_INT) ? 'is valid' : 'is not valid'; FILTER_VALIDATE_INT は、$str が整数であるかどうかを確認するために使用されるフィルターです。実際、これは数値定数であり、値は echo FILTER_VALIDATE_INT; によって検出されます。したがって、次のようにすることもできます:

$str = '51ab';
echo filter_var($str, 257) ? 'is valid' : 'is not valid'; PHP では、filter_list を渡すことができます。 () サポートされているすべてのフィルター名 (文字列で表される) を取得し、filter_id(string) を使用してその値を取得します。

print_r(filter_list()); // サポートされているすべてのフィルター名。
echo '=========';
echo filter_id('int'); // 'int' は filter_list によって返されるフィルター名です。上記は次のような内容を出力します:

array(0=>int',1=>'boolean',2=>'float',3=>'validate_regexp')
==== == ====
257サニタイズフィルター
上記はデータ形式が正しいかどうかを確認するためのものですが、場合によっては無関係なコンテンツを除外することも重要です。 SANITIZE フィルタリングは、電子メール内の余分な文字をフィルタリングするなどのこの機能を提供します。

$email = '