filter_input関数を使用する意味(利点)。
PR
$hoge = $_POST['hoge']; $hoge = $_GET['hoge'];
上記の様に変数に直接変数にPOSTやGETを格納した場合、値が渡ってこないと「Notice: Undefined index」警告が発生します。
「なにも値が設定されていない変数や配列を、利用しようとしている」という状況で発生する警告
そのためisset
等を使って、値がセットされているか確認する必要があります。
if (!isset($_POST['hoge'])) { $name = null; } elseif (!is_string($_POST['hoge'])) { $name = false; } else { $name = $_POST['hoge']; }
filter_inputを使用すると、上記の処理と等価な処理を綺麗に書くことができる。
$hoge = filter_input(INPUT_POST, 'hoge');
POSTやGETなどのスーパーグローバル変数に直接アクセスするのは危険!
スーパーグローバル変数が、変更可能な(ミュータブルな)変数であるため、直接アクセスするのが危険という警告みたいです。
そのため、filter_input()関数を使って間接的に取得することで安全性を高めてくださいとのこと。
参考:
PHP: スーパーグローバル – Manual
私的手記: [PHP]スーパーグローバル変数使ったら注意された
filter_input関数を使用する意味について – PHPプロ!Q&A掲示板
PHP – $_GET, $_POSTなどを受け取る際の処理 – Qiita
コメント