0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Php】validationについて-1

Posted at

初めに

phpのvalidationについて学習した内容のoutput用記事です。

※内容に間違いなどがある場合はご指摘をよろしくお願いします。
※こちらの記事はあくまでも個人で学習した内容のoutputとしての記事になります。

前回の記事:
https://qiita.com/redrabbit1104/items/a6e57aa1fd1771ef90ff
https://qiita.com/redrabbit1104/items/a3eaf2bba51fac0b3c51

validationとは

ユーザーがフォームなどから入力した値がデータベースに保存される値として望ましいものかどうかをチェックすること。例えば、emailアドレスなのに@が無いと正しいものとは言えないので、validationを掛けて入力値をチェックする。

使ってみる

まずはvalidationをチェックする関数を作ります。チェック項目は色々ありますが、最初に名前の入力が空のままだった場合にerrorメッセージを表示するようにします。この関数の引数$filter_valueには$_POSTが入るようにします。また、empty()関数で入力値$filter_valueのキーの値が空だった場合に$messagesという配列にユーザーの入力を促すメッセージを格納します。

function validation($filter_value){   //$filter_valueには$_POSTが入る
    
    $messages = [];

    if(empty($filter_value['input_name'])){
        $messages[] = '氏名は必須です';
    }

    return $messages;    //$messagesを戻り値にする
}

この関数にユーザーからの入力値$_POSTを引数として代入し、その結果を$error_messagesという変数に格納します。

$error_messages = validation($_POST);

こうすることによって、入力値が問題があった場合にだけ、エラーメッセージを変数として保存しておくことができます。

画面の切り替えのところにこの$error_messagesが無い(エラーがない)条件を追加してあげます。

if (!empty($_POST["btn_submit"]) && empty($error_messages)) {
    $page_flag = 1;
}

それから入力画面にもエラーがあった場合にはエラーメッセージが表示されるようにします。この時に$error_messagesが空でない条件に加え、$_POSTの'btn-confirm'キーが存在する、つまり送信ボタンが押された場合にのみメッセージが表示されるようにします。

<?php if (!empty($error_messages) && !empty($_POST['btn_confirm']))
  echo var_dump($error_messages);
?>

var_dumpで$error_messagesを表示してみると、次のように連想配列という形でエラーメッセージが入っていることが分かります。

スクリーンショット 2021-06-16 7.49.52.png

参考サイト

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?