クリーム色の背景、色付き表示、高コントラスト、大きな文字のほうが読みやすいですか?配色と文字を選ぶと、すべてのページに一度で反映されます。

無料レッスン

フォームの入力を確かめる

このレッスンのあとで: フォームの入力を確かめるルールを書き、誤りを分かりやすく伝えられる。

45分のレッスンコマンド2件PostgreSQL と PostgREST のラボ:ブラウザーで学ぶデータベースと REST API

なぜフォームは入力を疑うのか

名前の欄に何も書かずに送信したり、年齢に「あ」と書く人がいます。いたずらのときも、うっかりのときもあります。

入力を確かめることを、バリデーションと言います。確かめないと、壊れたデータが保存されてしまいます。

このレッスンのゴール

メモ

フォームの入力を確かめるルールを書き、誤りを分かりやすく伝えられる。

重要な言葉

ことばいみれい
バリデーション入力が決まりに合っているかを確かめること
フォーム名前などを入力して送るための画面の部品
クライアント側ブラウザーの中で動いて、すぐに確かめる側
サーバー側サーバーで動いて、最後に必ず確かめる側
エラーメッセージ何が間違いかを使う人に伝える文
必須空のままでは送れない欄required

学生が入力するセルは、このプレビューでは空白です。

確かめる場所は二つある

ブラウザーの中で確かめると、使う人はすぐに間違いに気づけます。でも、これは親切のためだけです。

悪い人は、ブラウザーを通さずに直接リクエストを送れます。だから、サーバー側でも必ずもう一度確かめます。

例:二つの確かめ方

クライアント側サーバー側
どこで動くブラウザーの中サーバーの中
役目すぐ知らせる親切壊れたデータを止める守り
省いてよいか省ける省いてはいけない

学生が入力するセルは、このプレビューでは空白です。

確かめることは四種類ある

空でないか、型が合っているか、範囲の中か、形が合っているかです。

年齢なら、空でなく、数字で、13から120の間、という具合に重ねます。順番に確かめ、最初の間違いで教えます。

例:年齢の欄の確かめ方

入力空か数字か範囲か結果
(何も無し)空入力してください
abc空でない数字でない数字で入力してください
12空でない数字13より小さい範囲の外
16空でない数字範囲の中通る

学生が入力するセルは、このプレビューでは空白です。

データベースに式を聞く

コマンド
PGPASSWORD=shop psql -h db -U shop -c "SELECT 'bread' AS name, 280 AS price;"

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

@が入っているか調べる

コマンド
PGPASSWORD=shop psql -h db -U shop -c "SELECT '[email protected]' LIKE '%@%' AS has_at;"

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

データベースも確かめてくれる

二つ目の式は、文字に「@」が入っていれば t(真)を返します。データベースにも、同じ種類の確かめを持たせられます。

アプリとデータベースで二重に守ると、片方に抜けがあっても止められます。

良いエラーメッセージとは

エラーメッセージは、使う人が次に何をすればよいかを伝えます。「エラーです」だけでは、何を直せばよいか分かりません。

「年齢は13から120の間にしてください」のように、決まりそのものを書くと、すぐ直せます。

よくある間違い

注意

ブラウザーで確かめたから安全だと考えることです。サーバー側の確認を省くと、直接送られたデータを止められません。

さらに挑戦:電話番号の確認

phone の欄を確かめる関数を足してみましょう。数字だけで、10文字か11文字なら通します。

日本の電話番号はハイフンを抜くと10文字か11文字です。ハイフンを許すかどうかも、自分で決めて書きます。

このラボとソースについて: PostgreSQL と PostgREST のラボ:ブラウザーで学ぶデータベースと REST API

授業で使いますか?このモジュールを学生に割り当てると、教員用ガイド、自動採点つきの課題、学生ごとのラボを使えます。