忍者ブログ

VB.NET-TIPS などプログラミングについて

VB.NETのTIPS(小技集)を中心に、Javascript、PHP その他のプログラミングについて少し役に立つ情報を発信します。いわゆる個人的な忘備録ですが、みなさんのお役に立てれば幸いです。

【PHP】POSTやGETなどのスーパーグローバル変数のアクセスはfilter_inputを使う方が安全らしい

POSTやGETなどのスーパーグローバル変数へのアクセスは直接以下の様にすることで行えます。
この例では、$_GET変数から id という引数を取得します。

<?php
if((isset($_GET["id"]) == false) || ($_GET["id"] == "")) {
    $id = '';
}else{
    $id = $_GET["id"];
}
?>


これを filter_input 関数を使うと1行ですっきりします。

<?php
$id = filter_input(INPUT_GET, 'id');
?>


但し、これだと引数 id が全く指定されない場合は、変数 $id の中身がNULLになってしまいます。 そこで filter_input 関数の第3引数に FILTER_SANITIZE_STRING を指定すれば id を文字列として 取得できます。

<?php
$id = filter_input(INPUT_GET, 'id', FILTER_SANITIZE_STRING);
?>


引数 id を整数値として扱いたい場合は、第3引数に FILTER_VALIDATE_INT を指定します。

<?php
$id = filter_input(INPUT_GET, 'id', FILTER_SANITIZE_STRING);
?>


この場合でも、id=aaa の文字列指定であったり、id= の様に未指定であったりすると 変数 $idfalse で返されます。
これでは不都合があったりしますので、値の規定値、最小値、最大値の指定を filter_input 関数の第4引数に配列で指定します。

<?php
$id = filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT, 
                   array('options' => 
                         array('default' => 0, 
                               'min_range' => 0, 
                               'max_range' => 999)
                         )
                  );
?>


指定された min_range指定値と max_range指定値の範囲外の場合は default指定値が返されます。












PR

コメント

コメントを書く