PHPフィルタの実装方法 ページ1/2
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("整数は有効です");
}
?>
上記のコードは、「FILTER_VALIDATE_INT」フィルターを使用して変数をフィルター処理します。この整数は有効であるため、コードの出力は「整数は有効です」となります。
整数以外の変数を使用しようとすると、「整数が無効です」という出力が表示されます。
関数とフィルターの完全なリストについては、PHP フィルター リファレンス マニュアルを参照してください。
検証とサニタイズ
フィルターには次の 2 種類があります:
検証フィルター:
ユーザー入力の検証に使用されます
厳密な形式ルール (URL や電子メールの検証など)
成功した場合は予期されたタイプを返し、それ以外の場合は FALSE を返します
サニタイズフィルター:
文字列内の指定された文字を許可または禁止するために使用されます
データ形式規則はありません
常に文字列を返します
オプションとフラグ
オプションとフラグは、指定されたフィルターに追加のフィルター オプションを追加するために使用されます。
フィルターが異なれば、オプションとフラグも異なります。
以下の例では、filter_var() と "min_range" および "max_range" オプションを使用して整数を検証します。
コードをコピーコードは次のとおりです:
$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」と呼ばれる関連付けられた配列に入れる必要があります。フラグを使用する場合、フラグを配列にする必要はありません。
関数とフィルターの完全なリストについては、W3School が提供する PHP フィルター リファレンス マニュアルを参照してください。各フィルターで使用可能なオプションとフラグを確認できます。
入力の検証
フォームからの入力を検証してみましょう。
最初に行う必要があるのは、探している入力データが存在することを確認することです。
次に、filter_input() 関数を使用して入力データをフィルターします。
次の例では、入力変数 "email" が PHP ページに渡されます。
コードをコピーします
コードは次のとおりです。 : if(!filter_has_var(INPUT_GET, "メール"))
{
echo("入力タイプが存在しません"); }
else
{
if (!filter_input(INPUT_GET, "email", 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) があります。
この入力変数の場合存在する場合は、サニタイズ (不正な文字を削除) して $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 変数は、名前、年齢、電子メール アドレスです:
コードをコピー
コードは次のとおりです: < ?php $filters = array
("name" => array
(
"filter"=>FILTER_SANITIZE_STRING
),
"age" => ; 配列
(
"フィルター"=>FILTER_VALIDATE_INT,
"オプション"=>配列
(
"min_range"=>1,
"max_range" => ;120
)
),
"email"=>,
);
$result = filter_input_array(INPUT_GET, $filters); 🎜> if (!$result["age"])
{
echo("年齢は 1 から 120 までの数値である必要があります。
");
elseif (! $result["email"])
{
echo("電子メールが無効です。
")
}
else
{
echo ("ユーザー入力は有効です");
}
?>
上の例には 3 つの入力変数があります (name 、 age 、 email)
入力変数の名前を含む配列と、指定された入力変数のフィルターを設定します
filter_input_array 関数を呼び出します。パラメーターには GET 入力変数と設定したばかりの配列が含まれます
$result変数の「age」変数と「email」変数に不正な入力がないか確認してください。 (不正な入力がある場合)
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! 例の説明:
上記の例はすべての "_" をスペースに変換します:
「_」をスペースに置き換える関数を作成します
filter_var() 関数を呼び出します。そのパラメーターは FILTER_CALLBACK フィルターと関数を含む配列です

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP でデータベースを操作するのは非常に簡単です。この章では、CRUD (作成、読み取り、更新、削除) 操作について理解します。
