ホームページ > バックエンド開発 > PHPチュートリアル > PHPフィルタの実装方法 ページ1/2_PHPチュートリアル

PHPフィルタの実装方法 ページ1/2_PHPチュートリアル

WBOY
リリース: 2016-07-21 15:36:33
オリジナル
982 人が閲覧しました

PHP フィルターは、ユーザー入力などの安全でないソースからのデータを検証およびフィルターするために使用されます。
PHPフィルターとは何ですか?
PHP フィルターは、安全でないソースからのデータを検証およびフィルターするために使用されます。

ユーザー入力またはカスタム データの検証とフィルタリングは、Web アプリケーションの重要な部分です。

PHP のフィルター拡張機能は、データのフィルター処理を簡単かつ高速にするように設計されています。
なぜフィルターを使用するのですか?
ほぼすべての Web アプリケーションは外部入力に依存しています。通常、このデータはユーザーまたは他のアプリケーション (Web サービスなど) から取得されます。フィルターを使用すると、アプリケーションが正しい入力タイプを取得できるようになります。

外部データは常にフィルタリングする必要があります。

入力フィルタリングは、アプリケーションのセキュリティの最も重要なトピックの 1 つです。

外部データとは何ですか?
フォームからの入力データ
Cookie
サーバー変数
データベースクエリ結果
関数とフィルター
変数をフィルターするには、次のフィルター関数のいずれかを使用します:

filter_var() - 指定したフィルターによるフィルター 単一変数
filter_var_array() - フィルター同じまたは異なるフィルターによる複数の変数
filter_input - 入力変数を取得し、フィルターします
filter_input_array - 複数の入力変数を取得し、同じまたは異なるフィルターでフィルターします
以下の例では、filter_var( ) 関数:

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

$int = 123;

if(!filter_var($int, FILTER_VALIDATE_INT))
{
echo("整数が有効ではありません");
}
else
{
echo("整数は有効です");
}
?>

above このコードでは、「FILTER_VALIDATE_INT」フィルターを使用して変数をフィルター処理します。この整数は有効であるため、コードの出力は「整数は有効です」となります。

整数以外の変数を使用しようとすると、「整数が無効です」という出力が表示されます。

関数とフィルターの完全なリストについては、PHP フィルター リファレンス マニュアルをご覧ください。
検証とサニタイズ
フィルターには 2 つのタイプがあります:

検証フィルター:
ユーザー入力の検証に使用されます
厳密な形式ルール (URL または電子メールの検証など)
成功した場合は期待されるタイプを返し、それ以外の場合は FALSE を返します
サニタイズフィルター:
文字列内の指定された文字を許可または禁止するために使用されます
データ形式規則はありません
常に文字列を返します
オプションとフラグ
指定されたフィルターに追加のフィルター オプションを追加するために使用されるオプションとフラグ。

異なるフィルターには異なるオプションとフラグがあります。

以下の例では、「min_range」および「max_range」オプションを指定した filter_var() を使用して整数を検証します。
コードをコピーします コードは次のとおりです:

$ 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("整数は有効です")
?>


;上記のコードでは、オプションは「options」と呼ばれる関連付けられた配列に配置する必要があります。フラグを使用する場合、フラグを配列にする必要はありません。
整数が「300」で指定された雰囲気内にないため、上記のコードの出力は「整数が無効です」となります。

関数とフィルターの完全なリストについては、W3School が提供する PHP フィルター リファレンス マニュアルを参照してください。各フィルターで使用可能なオプションとフラグを確認できます。
入力の検証
フォームからの入力を検証してみましょう。

最初に行う必要があるのは、探している入力データが存在することを確認することです。

次に、filter_input() 関数を使用して入力データをフィルターします。

次の例では、入力変数 "email" が PHP ページに渡されます:



コードをコピーします
コードは次のとおりです: if(!filter_has_var(INPUT_GET, "電子メール"))
{
echo("入力タイプが存在しません");
}
else
{
if (!filter_input(INPUT_GET, "電子メール", FILTER_VALIDATE_EMAIL))
{
echo "電子メールが存在しません有効";
}
else
{
echo "電子メールは有効です";
}
}
?>


例の説明:
上記の例には、「GET」メソッドで送信された入力変数(メール)があります:

タイプ「GET」の「メール」入力変数があるかどうかを検出します
入力変数が存在する場合は、チェックします有効かどうか メールアドレス
入力のサニタイズ
フォームから渡された URL をクリーンアップしてみましょう。

まず、探している入力データが存在することを確認します。

次に、filter_input() 関数を使用して入力データを精製します。

次の例では、入力変数「url」が PHP ページに渡されます:
コードをコピーします コードは次のとおりです:

if(!filter_has_var(INPUT_POST, "url"))
{
echo("入力タイプが存在しません");
}
else
{
$url = filter_input(INPUT_POST,
"url", FILTER_SANITIZE_URL)
?>例の説明:
上記の例には、「POST」メソッドを通じて送信される入力変数 (URL) があります:
タイプ「POST」の「url」入力変数があるかどうかを検出します
この入力変数が存在する場合は、それをサニタイズします (削除します)不正な文字) を $url 変数に保存します
入力変数が「http://www.W3#$%S^%$#ool.com.cn/」のような場合、精製された $ URL 変数は次のようにする必要があります:

http://www.W3School.com.cn/複数の入力をフィルタリングする
フォームは通常、複数の入力フィールドで構成されます。 filter_var または filter_input の繰り返し呼び出しを避けるために、filter_var_array または filter_input_array 関数を使用できます。

この例では、filter_input_array() 関数を使用して 3 つの GET 変数をフィルターします。受信した GET 変数は、名前、年齢、電子メール アドレスです。



コードをコピー
コードは次のとおりです。 $filters = array
(
"name" =>配列
(
"フィルター"=>FILTER_SANITIZE_STRING
)、
"年齢" => 配列
(
"フィルター"=>FILTER_VALIDATE_INT、
"オプション"=>配列
(
"min_range"=> 1,
"max_range"=>120
)
)、
"email"=>FILTER_VALIDATE_EMAIL,
);

$result = filter_input_array(INPUT_GET, $filters); "] )
{
echo("年齢は 1 から 120 までの数字でなければなりません。
");
}
elseif(!$result["email"])
{
echo("E- Mail is not valid.
");
}
else
{
echo("User input is valid");
}
?>


例の説明:
上記の例には 3 つあります"GET" "メソッドによって渡された入力変数 (名前、年齢、電子メール)

入力変数の名前と指定された入力変数に使用されるフィルターを含む配列を設定します
filter_input_array 関数を呼び出します。パラメーターには GET が含まれますinput 変数と今設定した変数 配列
は、$result 変数の "age" 変数と "e​​mail" 変数に不正な入力があるかどうかを検出します。 (不正な入力がある場合)
filter_input_array() 関数の 2 番目のパラメーターには、配列または単一フィルターの ID を指定できます。

パラメーターが単一フィルターの ID の場合、指定されたフィルターは入力配列内のすべての値をフィルター処理します。

パラメータが配列の場合、その配列は次の規則に従う必要があります:

連想配列である必要があり、それに含まれる入力変数が配列のキーになります (「年齢」入力変数など)
この配列の値は、フィルターの ID、またはフィルター、フラグ、オプションを指定する配列である必要があります。
フィルター コールバックの使用
FILTER_CALLBACK フィルターを使用すると、カスタム関数を呼び出してフィルターとして使用できます。このようにして、データのフィルタリングを完全に制御できます。

独自のカスタム関数を作成することも、既存の PHP 関数を使用することもできます。

オプションを指定するのと同じ方法で、フィルターに使用する関数を指定します。

以下の例では、カスタム関数を使用してすべての「_」をスペースに変換します:



コードをコピー

コードは次のとおりです:
function ConvertSpace($string) { return str_replace("_", " ", $string);
}

$string = "Peter_is_a_great_guy!";

echo filter_var($string, FILTER_CALLBACK,
array("options"=>"convertSpace") ));
?>
上記のコードの結果は次のようになります:

Peter is a great guy! 説明例:
上記の例は、すべての "_" をスペースに変換します:

"_" をスペースに置き換える関数を作成します
call filter_var( ) 関数。パラメータは FILTER_CALLBACK フィルターと関数を含む配列です

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/322077.html技術記事 PHP フィルターは、ユーザー入力などの安全でないソースからのデータを検証およびフィルターするために使用されます。 PHPフィルターとは何ですか? PHP フィルターは、安全でないソースからのデータを検証およびフィルターするために使用されます...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート