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.