PHPとMySQLを使った掲示板の作り方を初心者向けにコード付き解説3【エラーメッセージ表示】

プログラミング・PHP学習

いちから掲示板サイトを作ってみる講座、3回目になります。

今回はPHPとHTMLとMySQLを使った、こんな会員登録フォームの作り方について。

下記をクリックすると別ウィンドウで確認できます。

↓↓↓

前回の記事でフォームの作り方を説明しましたが、このままでは、フォームが空っぽのままでも登録できてしまいます。

今回はフォームの中が空っぽだったり、パスワードの文字数が少なすぎたり、あるいは確認用パスワードの値が違っていたりする場合にエラーを返す方法を解説します。

前回までの内容は、こちらの目次からご覧ください。

PHPで会員登録フォームにエラーチェック機能を追加する

ではフォームにエラーチェック機能を付けていきましょう。

前回と同様、CSSと画像登録部分は省き、簡易版を作っていきます。

作成するサイトの外見は次のようになります。

コードは次のとおり。

【test2.php】

★ポイント★ごとにコードの組み方を解説していきます。

ポイント① 【値が入っていたら】というif条件式を入れる

PHPでエラーについて設定する前に、まず、この条件式を入れておきましょう。

「もしも【$_POST】の値が空っぽでないなら、次の処理をしてね」という意味になります。

【$_POST】はフォームによって投稿される値です。

この式をいれておかないと、ページを開いてすぐに処理が始まってしまい、ユーザーが何かを入力する前にエラーメッセージが表示されてしまいます。

ポイント② 【フォームの要素が空っぽだったら】というif条件式を入れる

次に「フォームの要素が空っぽだったらエラーを返す」ための条件式をいれておきましょう。

HTMLのBODYタグの前のPHPには、次のように書いておきます。

「もしも【$_POST[‘name’]】が空っぽなら、【’blank’】というエラー名にするね」という意味になります。

【$_POST[‘name’]】は、フォームの「ニックネーム」に投稿される値のことです。

$_POST[‘name’]  でユーザーがフォームのname属性に入力した値を表す

BODYタグ以降のフォームのニックネームを入力する箇所には、次のように書きます。

「もしも【’blank’】エラーが起こったら【名前を入力してください】と表示してね」という意味になります。

なおif構文の中に【 (isset($error[‘name’])】というコードがはいっています。

これは「$error[‘name’]という値があるとして」といった意味です。

これを入れておかないと”Notice Undefined index” エラーが出てくるので、必ず入れておきましょう。

 

じゅんこ
じゅんこ

面倒だけど、初めて使う変数では、必ず、この定義が必要になります。

この辺り、前回の記事で解説しています。

ニックネーム以外にも、すべての入力項目に、この空白エラーを設定しておきましょう。

ポイント③ パスワードは一定の文字数以上で入力してもらう

パスワードを一定の文字数以上で入力してほしい時には、次のようにPHPコードをいれます。

「もしも【$_POST[‘password’]】の値が6文字以下なら、【’length’】というエラー名にするね」という意味になります。

【$_POST[‘password’]】は、フォームの「パスワード」に投稿される値のことです。

【strlen】というのは文字列の長さを取得する関数のことです。

strlen() :カッコ内に指定した文字列の長さを取得する関数
BODYタグ以降のフォームのパスワードを入力する箇所には、次のように書きます。

「もしも【’length’】エラーが起こったら【6文字以上で指定してください】と表示してね」という意味になります。

ポイント④ 確認用のパスワードの値を一致させる

今回のフォームでは、パスワードは、確認用にもう一度入力してもらいます。

もしも最初に入力したパスワードと違っていた場合にエラーを出すには、次のようにコードを書きます。

「もしも【$_POST[‘password’]】と【$_POST[‘password2’]】の値が違っていて、そして【$_POST[‘password2’]】が空っぽじゃないなら、【’difference’】というエラー名にするね」という意味になります。

条件式の中の【!=】は「等しくない」という意味ですが、こんなふうに便利に使えます。

$a != $b: $aと$bは等しくない

BODYタグ以降のフォームの確認用パスワードを入力する箇所には、次のように書きます。

「もしも【’difference’】エラーが起こったら「パスワードが上記と違います」と表示してね」という意味になります。

ポイント⑤ パスワードは入力中も見えないようにする

最後にパスワードの入力中の設定について解説します。

次のように、inputタグの中のtype属性を「password」としてあげると、パスワードが入力中に見られないようになります。

入力中のパスワードは次のように表示されます。

じゅんこ
じゅんこ

簡単にできますし、セキュリティがアップするので、行っておいたほうが良いですよ。

さいごに

今回ご紹介したような汎用的なチェックはかけておきましょう。

エラーチェックをしておかないと変な値がどんどんデータベースに入力されていってしまいます。

パスワードに関しては特に面倒ですが、やっぱりセキュリティ関連は重要です。

次回は登録した値を確認する画面を作っていきますね。

コメント

タイトルとURLをコピーしました