web-dev-qa-db-ja.com

PHP「正しい方法で」フィルタリングする方法すべての$ _POST変数

Netbeansを使用して、$ _ POSTまたは$ _GETの変数にアクセスしようとするときはいつでも、「安全」のためにfilter_input(INPUT_POST,'id')のようなものを使用することをお勧めします(filter_inputを使用するよりも安全だとは思わないデフォルトのNONフィルターを使用しますが、とにかく。

これにより、この投稿への答えについて考えました: 投稿内のすべての変数を取得する方法(PHP)

そこにあります:

foreach ($_POST as $key => $value) {
    //do something
    echo $key . ' has the value of ' . $value;
}

filter_input()は$ _POST内の個々の変数に対してのみ機能します

私の質問は、「$_POST as $key "NetBeansが教えてくれるこの想定されるアクセス標準に合うようにフィルタリングします。

10
ndelucca

全体をフィルタリングできます$_POSTfilter_input_array を使用

$safePost = filter_input_array(INPUT_POST);

2番目のパラメーターを使用してフィルターを変更できます

$safePost = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING);

プロパティごとのフィルターを定義することもできます

$safePost = filter_input_array(INPUT_POST, [
    "id" => FILTER_VALIDATE_INT,
    "name" => FILTER_SANITIZE_STRING,
    "email" => FILTER_SANITIZE_EMAIL
]);

入力について何も知らない場合はどうなりますか?

ええと、あなたはいつも何かを知っています。そして、ユーザーが無効な入力を提供した場合、それに反応する必要があります。

フィールドidに整数が期待され、ユーザーがtomatoを送信した場合、ユーザーが送信したリクエストの何が問題かをエラーで返信する必要があります。

13
mleko