ホームページ >バックエンド開発 >PHPの問題 >3 分でわかる PHP フィルター (詳細な例)

3 分でわかる PHP フィルター (詳細な例)

WBOY
WBOYオリジナル
2021-10-29 18:04:192661ブラウズ

前回の記事では、「PHP フォームの学習: $_GET 変数と $_POST 変数の使用法と違い 」を紹介し、PHP の $_GET 変数と $_POST 変数の違いについて詳しく説明しました。 $_POST 変数に関する知識。この記事では、PHP のフィルターに関する知識を見ていきます。お役に立てれば幸いです。

3 分でわかる PHP フィルター (詳細な例)

前の記事では、セキュリティの問題について言及した $_GET 変数と $_POST 変数について学びました。この記事で説明する PHP フィルターは、ユーザー入力などの安全でないソースからのデータを検証およびフィルターするために使用されます。次に、PHP のフィルターに関する関連知識を見てみましょう。

PHP フィルター

フィルターとは 、まず単純にフィルターをフィルターアウトとして理解することができます。安全でないデータ。では、なぜウェイウェイを使用するのでしょうか?私たちの日々の開発では、ほとんどすべての Web アプリケーションが外部入力に依存しており、これらのデータは通常、Web サービスなどの他のアプリケーションやユーザーから取得されます。フィルターを使用すると、アプリケーションが正しい入力タイプを取得できるようになります。

フォームからの入力データ、Cookie、サーバー変数、データベース クエリ結果などの外部データをフィルタリングする必要があります。入力をフィルタリングすることが重要であるため、フィルタを使用する必要があります。

PHP フィルタは、安全でないソースからのデータを検証およびフィルタリングするために使用されます。これらは、ユーザー入力またはカスタム データをテスト、検証、フィルタリングする際の Web アプリケーションの重要な部分です。データ処理を行うように設計されています。より簡単に、より速く。

関数とフィルター

変数をフィルターする必要がある場合、多くのフィルター関数を使用できます: filter_var( ) 指定したフィルターで単一の変数をフィルター処理します; filter_var_array() 同じまたは異なるフィルターで複数の変数をフィルター処理します; filter_input 入力変数を取得してフィルター処理します; filter_input_array複数の入力変数を取得し、同じまたは異なるフィルターを通してそれらをフィルターします。

次に、filter_var() 関数を使用して整数がどのように検証されるかを例で見てみましょう。例は次のとおりです:

<?php
header("Content-type:text/html;charset=utf-8");
$int = 123;
if(!filter_var($int, FILTER_VALIDATE_INT))
{
    echo("不是一个合法的整数");
}
else
{
    echo("是个合法的整数");
}
?>

出力結果:

3 分でわかる PHP フィルター (詳細な例)

上記の例では、filter_var() フィルター関数を使用して整数を検証しています。次に、一般的に使用される 2 つのフィルターを見てみましょう。

  • <strong>検証</strong> フィルター: 厳密な形式ルール (URL や E - など) を使用してユーザー入力を検証するために使用されます。メール検証)、成功した場合は予期されたタイプを返し、失敗した場合は FALSE を返します。

  • #サニタイジング<strong></strong> Filter: 文字列内の指定された文字を許可または禁止するために使用されます。データ形式の規則はありません。常に文字列を返します。

#オプションとフラグ
オプションとフラグは、指定されたフィルター オプションに追加のフィルターを追加するために使用されます。 。フィルターが異なれば、オプションとフラグも異なります。

次に、

filter_var()

および "min_range" および "max_range" オプションを使用して整数を検証する例を見てみましょう。 <pre class="brush:php;toolbar:false">&lt;?php header(&quot;Content-type:text/html;charset=utf-8&quot;); $var=300; $int_options = array( &quot;options&quot;=&gt;array ( &quot;min_range&quot;=&gt;0, //最小值 &quot;max_range&quot;=&gt;256 //最大值 ) ); if(!filter_var($var, FILTER_VALIDATE_INT, $int_options)) { echo(&quot;不是一个合法的整数&quot;); } else { echo(&quot;是个合法的整数&quot;); } ?&gt;</pre>出力結果:


3 分でわかる PHP フィルター (詳細な例)上記の例では、次の点に注意することが重要です。上記のコードと同様に、オプションは、「options」と呼ばれる関連配列に入れる必要があります。フラグを使用する場合、フラグを配列にする必要はありません。整数が「300」なので指定範囲外なので上記のような出力になります。

入力の検証
次に、フォームからの入力を検証してみましょう。最初に行う必要があるのは、探している入力データが存在することを確認することです。次に、

filter_input()

関数を使用して入力データをフィルターします。 次に、GET を使用して入力変数 "email" がどのように PHP ページに渡されるかを例で見てみましょう。例は次のとおりです:

<?php
header("Content-type:text/html;charset=utf-8");
if(!filter_has_var(INPUT_GET, "email"))
{
    echo("没有 email 参数");
}
else
{
    if (!filter_input(INPUT_GET, "email", FILTER_VALIDATE_EMAIL))
    {
        echo "不是一个合法的 E-Mail";
    }
    else
    {
        echo "是一个合法的 E-Mail";
    }
}
?>

出力結果:

3 分でわかる PHP フィルター (詳細な例)注意すべき点は、上記の例では入力変数(email)が「GET」メソッドで送信されているので、「GET」メソッドで送信される入力変数「email」があるかどうかを確認してください。 「GET」タイプ 入力変数があった場合に、それが有効なメールアドレスかどうかを確認します。

净化输入

让我们试着清理一下从表单传来的 URL。首先,我们要确认是否存在我们正在查找的输入数据。然后,我们用 filter_input() 函数来净化输入数据。

下面我们通过示例来看一下输入变量 "url" 被传到 PHP 页面,示例如下:

<?php
header("Content-type:text/html;charset=utf-8");
if(!filter_has_var(INPUT_GET, "url"))
{
    echo("没有 url 参数");
}
else
{
    $url = filter_input(INPUT_GET,
        "url", FILTER_SANITIZE_URL);
    echo $url;
}
?>

输出结果:

3 分でわかる PHP フィルター (詳細な例)

其中我们需要注意的是:

FILTER_SANITIZE_URL 过滤器删除字符串中所有非法的 URL 字符。上面的实例有一个通过 "GET" 方法传送的输入变量 (url):检测是否存在 "GET" 类型的 "url" 输入变量,如果存在此输入变量,对其进行净化(删除非法字符),并将其存储在 $url 变量中。

大家如果感兴趣的话,可以点击《PHP视频教程》进行更多关于PHP知识的学习。

以上が3 分でわかる PHP フィルター (詳細な例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。