WEB

[PHP]どうしてfilter_input関数を使うのか

PHP勉強/初心者

filter_input関数を使用する意味(利点)。

PR

POST/GETを直接変数に格納してはいけない理由

$hoge = $_POST['hoge'];
$hoge = $_GET['hoge'];

値がない場合エラー

上記の様に変数に直接変数にPOSTやGETを格納した場合、値が渡ってこないと「Notice: Undefined index」警告が発生します。

Noticeとは

「なにも値が設定されていない変数や配列を、利用しようとしている」という状況で発生する警告

そのため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

この記事をシェアする

前の記事
次の記事

コメント

コメントを残す

* が付いている欄は必須項目となりますので、必ずご記入をお願いします。
メールアドレスは公開されませんのでご安心ください。

この記事と関連性の高い記事