6

私はデータ検証に関するいくつかの演習に従っており、filter_input()関数をいじることにしました。このコードを実行しようとすると:

$_POST['var'] = 10;

$filtered = filter_input(INPUT_POST, 'var', FILTER_VALIDATE_FLOAT);

var_dump($filtered);

var_dump($filtered)NULL を返します。$_POST['var']フォームを送信して値が割り当てられた場合にコードが機能することは知っていますが、$_POST[]配列に手動で値を割り当てても返されないのはなぜfloat(10)ですか?

4

3 に答える 3

12

filter_input()_POST/_GET/_COOKIE/_SERVER/_ENV スーパーグローバル配列から読み取りません。これらの値の元のソースからそれぞれ読み取ります (スーパーグローバルの入力にも使用されます)。

于 2012-04-18T01:06:38.523 に答える
4

これはINPUT_POST、元の POST 値で機能するためです。スクリプトでそれらを変更しても効果はありません。ただし、その変数をフィルタリングする場合は、次を使用できます。

filter_var($_POST['var'], FILTER_VALIDATE_FLOAT);
于 2012-04-18T01:19:49.907 に答える
1

デフォルトの入力値とフィルターを設定する場合は、 を使用しますfilter_var。filter_input はスーパーグローバルの現在の値をフィルタリングしないためです。

于 2012-04-18T01:14:29.160 に答える