filter_input関数(PHP)

POSTをかっこよく書く(参照:多謝!


通常フォームなどから値を受けとるとき、以下のように書くと思います。

$id = $_GET['id'];
$name = $_POST['name'];
しかし、値が入っていなかったり、上手く渡っていなかった場合、Notice: Undefined index なんかが発生します。早い話エラーですね。
そのためissetを使用し、値が入っているか確認する必要性があります。

<?php

if (!isset($_POST['name'])) {
$name = null;
} elseif (!is_string($_POST['name'])) {
$name = false;
} else {
$name = $_POST['name'];
}
filter_inputを使えば上のコードを1行にできます。便利ですね。

$name = filter_input(INPUT_POST, 'name');

--example
// POSTによる送信があった
if (!empty($_POST)) {
    
    if (!$name = filter_input(INPUT_POST, 'name', FILTER_SANITIZE_SPECIAL_CHARS)) {
        $error['name'] = 'ユーザ名が空です';
    }
    if (strlen($name) > 26) {
        $error['name'] = '名前は25文字以内にしてください';
    }
    
    if (!$pass = filter_input(INPUT_POST, 'pass', FILTER_SANITIZE_SPECIAL_CHARS)) {
        $error['pass'] = 'パスワードを入力してください';
    }
    if (!empty($pass) && strlen($pass) <= 4) {
        $error['pass'] = 'パスワードが短すぎます';
    }
    if (!(strlen($pass) === mb_strlen($pass))) {
        $error['pass'] = 'パスワードに全角が含まれています。すべて半角で入力してください';
    }

No tags for this post.
タイトルとURLをコピーしました