国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

PHP 開(kāi)発の基本チュートリアル - フィルター

1. PHP フィルターとは何ですか?

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

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

PHP のフィルター拡張機(jī)能は、データのフィルター処理を簡(jiǎn)単かつ高速にするように設(shè)計(jì)されています。


2. フィルターを使用する理由は何ですか?

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

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

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

外部データとは何ですか?

  • フォームからの入力データ

  • Cookie

  • Webサービスデータ

  • サーバー変數(shù)

  • データベースクエリ結(jié)果


3. 関數(shù)とフィルター

へ変數(shù)をフィルターするには、次のフィルター関數(shù)のいずれかを使用します:

filter_var() - 指定したフィルターで単一の変數(shù)をフィルターします

filter_var_array() - 同じまたは異なるフィルターでフィルターして複數(shù)の変數(shù)をフィルターします

filter_input - 入力変數(shù)を取得してフィルターします

filter_input_array - 複數(shù)の入力変數(shù)を取得して、同じまたは異なるフィルターでフィルターします

次の例では、filter_var() 関數(shù)を使用して整數(shù)を検証します。は次のとおりです

<?php
$int = 12443633;
//驗(yàn)證一個(gè)數(shù)是不是整數(shù)
if(!filter_var($int, FILTER_VALIDATE_INT))
{
	echo("不是一個(gè)合法的整數(shù)");
}
else
{
	echo("是個(gè)合法的整數(shù)");
}
?>

出力は右側(cè)に表示されます

注: 出力結(jié)果を観察するために他の変數(shù)を試すことができます


IV. 検証とサニタイジングがあります

2 種類のフィルター:

検証フィルター:

  • ユーザー入力の検証に使用

  • 厳密な書式設(shè)定ルール (URL や電子メールの検証など)

  • 成功した場(chǎng)合は予期されたタイプを返し、失敗した場(chǎng)合は FALSE を返します

サニタイズフィルター:

  • 文字列內(nèi)の指定された文字を許可または禁止するために使用されます

  • データ形式の規(guī)則はありません

  • 常に返される文字列


5. オプションとフラグ オプションとフラグは、指定されたフィルターに追加のフィルター オプションを追加するために使用されます。

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

以下の例では、「min_range」オプションと「max_range」オプションを指定した filter_var() を使用して整數(shù)を検証します。

コードは次のとおりです

<?php
$var=300;

$int_options = array(
	"options"=>array
	(
		"min_range"=>0,
		"max_range"=>256
	)
);

if(!filter_var($var, FILTER_VALIDATE_INT, $int_options))
{
	echo("不是一個(gè)合法的整數(shù)");
}
else
{
	echo("是個(gè)合法的整數(shù)");
}
?>

上記のコードと同様に、オプションは「options」と呼ばれる関連配列に入れる必要があります。フラグを使用する場(chǎng)合、フラグを配列にする必要はありません。

整數(shù)は「300」であり、指定された範(fàn)囲內(nèi)にないため、上記のコードの出力は次のようになります:

は有効な整數(shù)ではありません

関數(shù)とフィルターの完全なリストについては、 PHP マニュアル


6. 入力の検証

フォームからの入力を検証してみましょう。

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

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

以下の例では、入力変數(shù)「email」が PHP ページに渡されます:

<?php
if(!filter_has_var(INPUT_GET, "email"))
{
	echo("沒(méi)有 email 參數(shù)");
}
else
{
	if (!filter_input(INPUT_GET, "email", FILTER_VALIDATE_EMAIL))
	{
		echo "不是一個(gè)合法的 E-Mail";
	}
	else
	{
		echo "是一個(gè)合法的 E-Mail";
	}
}
?>

上の例では、入力変數(shù) (email) が「GET」メソッドを介して渡されます:

  • "GET" "email" 型の入力変數(shù)

  • 入力変數(shù)が存在する場(chǎng)合は、それが有効なメールアドレスかどうかを確認(rèn)します


7. 入力を精製します

クリーンアップしてみましょうフォームから渡されたデータ 次の URL。

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

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

次の例では、入力変數(shù)「url」が PHP ページに渡されます:

<?php
if(!filter_has_var(INPUT_GET, "url"))
{
	echo("沒(méi)有 url 參數(shù)");
}
else
{
	$url = filter_input(INPUT_GET, 
	"url", FILTER_SANITIZE_URL);
	echo $url;
}
?>

例の説明:

上記の例では、入力変數(shù) (url) が「GET」メソッドを通じて渡されます。

タイプ「GET」の「url」入力変數(shù)があるかどうかの検出

この入力変數(shù)が存在する場(chǎng)合は、それを精製(不正な文字を削除)し、$url 変數(shù)に格納します


8 複數(shù)の入力をフィルタリングします。

フォームは通常、複數(shù)の入力フィールドで構(gòu)成されます。 filter_var または filter_input 関數(shù)の繰り返し呼び出しを避けるために、filter_var_array または filter_input_array 関數(shù)を使用できます。

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

例は次のとおりです

<?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("輸入正確");
}
?>

例の説明

上記の例には、3 つの入力変數(shù) (名前、年齢、電子メール) があります。

  • 入力変數(shù)の名前と指定された入力変數(shù)のフィルターを含む配列を設(shè)定します

  • filter_input_array() 関數(shù)を呼び出します。パラメータには GET 入力変數(shù)と設(shè)定したばかりの配列が含まれます

  • $result 変數(shù)の "age" 変數(shù)と "e??mail" 変數(shù)に不正な入力がないか確認(rèn)してください。 (不正な入力がある場(chǎng)合、filter_input_array() 関數(shù)を使用した後の入力変數(shù)は FALSE になります。)

filter_input_array() 関數(shù)の 2 番目のパラメーターには、配列または単一フィルターの ID を指定できます。

パラメーターが単一フィルターの ID の場(chǎng)合、指定されたフィルターは入力配列內(nèi)のすべての値をフィルター処理します。

パラメータが配列の場(chǎng)合、配列は次の規(guī)則に従う必要があります:

連想配列である必要があり、それに含まれる入力変數(shù)が配列のキーになります(「年齢」入力変數(shù)など)

この配列の値は、フィルターの ID、またはフィルター、フラグ、オプションを指定する配列である必要があります


9. フィルター コールバックの使用

FILTER_CALLBACK フィルターを使用すると、カスタム関數(shù)を呼び出して使用できます。フィルターデバイスとして使用します。このようにして、データのフィルタリングを完全に制御できます。

獨(dú)自のカスタム関數(shù)を作成することも、既存の PHP 関數(shù)を使用することもできます。

指定されたオプションに従って、使用するフィルター関數(shù)を指定します。 「options」という名前の連想配列內(nèi)。

次の例では、カスタム関數(shù)を使用してすべての「_」をスペースに変換します:

<?php
function convertSpace($string)
{
	return str_replace("_", ".", $string);
}

$string = "www_php_cn!";

echo filter_var($string, FILTER_CALLBACK,
array("options"=>"convertSpace"));
?>

出力結(jié)果は右の図に示されています

例の説明

上記の例はすべてを変換します"_" を "." に変更します:

  • "_" を "." に置き換える関數(shù)を作成します

  • パラメーターが FILTER_CALLBACK フィルターと関數(shù)を含む配列である filter_var() 関數(shù)を呼び出します

學(xué)び続ける
||
<?php $int = 12443633; //驗(yàn)證一個(gè)數(shù)是不是整數(shù) if(!filter_var($int, FILTER_VALIDATE_INT)) { echo("不是一個(gè)合法的整數(shù)"); } else { echo("是個(gè)合法的整數(shù)"); } ?>
提出するリセットコード
  • おすすめコース
  • コースウェアのダウンロード