小金井にあるWEB制作会社の備忘録

MEMORANDUM

PHPの「filter_input」関数を使って簡易バリデーション(入力チェック)を実装

フォームの入力値やURLのパラメータ等、文字列や数値を受け取る際に正規表現を利用してバリデーション(入力値のチェック)を行うが、簡易的なものは「filter_input」で行えるので実装方法をメモ。

filter_input (型 , 変数名, フィルタ, オプション);

//例)
$name= filter_input(INPUT_POST, 'title');
$email= filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL);
$id= filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT);

「型」の部分で、フィルタリングする対象の型を記載。
型には、INPUT_GET、INPUT_POST、 INPUT_COOKIE、INPUT_SERVER、INPUT_ENV があり、それぞれスーパーグローバル変数に対応。

フィルタの種類

フィルタの部分は下記を参照。
フィルタが未設定の場合には特にバリデートしない。

種類説明
FILTER_VALIDATE_BOOLEAN1、true、on および yes の場合にTRUE、それ以外の場合にFALSEを返します。
FILTER_VALIDATE_EMAIL値が妥当な e-mail アドレスであるかどうかを検証します。
FILTER_VALIDATE_FLOAT値が float であるかどうかを検証し、オプションで指定された範囲にあるかを調べます。成功した場合は値を float に変換します。
FILTER_VALIDATE_INT値が整数であるかどうか、オプションで指定した範囲内にあるかどうかを検証し、成功した場合は整数に変換します。
FILTER_VALIDATE_IP値が IP アドレスであるかどうかを検証します。
FILTER_VALIDATE_REGEXP値が、Perl 互換の正規表現regexpに一致するかどうかを検証します。
FILTER_VALIDATE_MAC値が MAC アドレスであるかどうかを検証します。
FILTER_VALIDATE_URL値が URL 形式であるかどうか、 オプションで、必須コンポーネントが含まれているかどうかを検証します。

上記のバリデーションの他、サニタイズ(特定の文字列の除去)も可能。
詳細は下記のサイトで確認できます。