ホームページ > php教程 > php手册 > PHPフィルターの実装コード

PHPフィルターの実装コード

WBOY
リリース: 2016-06-13 12:14:31
オリジナル
1109 人が閲覧しました

従来、ユーザーは主にインターネットを通じて情報を取得していました。今日のインターネットでは、ユーザーは単なる 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);
is_numeric($str);


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

$str = '51ab';
echo filter_var($str, 257) ? 'is valid' : 'is not valid'; も使用できます。 PHP フィルターで定義されている場合、filter_list() を通じてサポートされているすべてのフィルター名 (文字列で表される) を取得し、filter_id(string) を使用してその値を取得できます。サポートされているフィルター名。
echo '=========';
echo filter_id('int'); // 'int' は filter_list によって返されるフィルター名です。上記は次のような内容を出力します:

array(0=>int',1=>'boolean',2=>'float',3=>'validate_regexp')
==========
257フィルタのサニタイズ
上記は、データ形式が正しいかどうかを確認するためのものであり、場合によっては、無関係なコンテンツをフィルタリングすることも重要です。 SANITIZE フィルタリングは、電子メール内の余分な文字をフィルタリングするなどのこの機能を提供します。 🎜>echo $email; // 直接出力するとスクリプトが実行されます。
echo filter_var($email, FILTER_SANITIZE_EMAIL); // 出力 scriptalerttestscriptxxx@caixw.com のオプションとフラグを除外します
filter_var の機能はそれだけではなく、3 番目のパラメーターを指定することもできます。 , 最大値を指定する整数など、いくつかの特別なオプションを追加します:



コードをコピーします

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

$options = array( 'options'=>array('max_range'=>50), 'flags'=>FILTER_FLAG_ALLOW_OCTAL, $str = '51); '; echo filter_var($str, FILTER_VALIDATE_INT, $options) ? '有効です' : '無効です';


上記は無効です。 max_range では、最大値が 50 のみであると規定されているためです。 FILTER_FLAG_ALLOW_OCTAL を使用すると、検証されたデータを 8 進数、つまり 0 から始まる数値にすることができます。

$options パラメーターは、オプションとフラグの 2 つの要素を含む配列です。 flags要素のみであれば配列を使わずに直接渡すことも可能です。

外部データの検証
PHP スクリプト自体によって生成されたデータに加えて、ユーザーによって送信されたデータが大部分を占めます。もちろん、filter_var を直接使用してフィルタリングすることもできます。



コードをコピー

コードは次のとおりです。


if(isset ($_GET[' age']))

{ echo filter_var($_GET['age'], FILTER_VALIDATE_INT) ? '有効です' : '無効です'; 🎜> ただし、PHP には、外部ソースからのデータを検証するための関数もいくつか用意されています。

コードをコピー

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


if(filter_has_var(INPUT_GET, 'age'))

{
echo filter_input(INPUT_GET, 'age', FILTER_VALIDATE_INT) '有効です' : '無効です';


filter_var と比較して、filter_input にはデータのソースを指定するために使用されるパラメーター (最初のパラメーター) が 1 つ増えています。 Filter_has_var() は、指定されたデータが存在するかどうかを判断するために使用されます。

一度に複数のデータをフィルタリングする
PHP には、複数のデータを一度に検証するための filter_var_array 関数と filter_input_array 関数も用意されています。

これは、filter_var_array() の使用方法を示す php.net の例です。

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


$data = array(
'product_id' => ' libgd

最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート