PHPとMySQLを使った掲示板の作り方を初心者向けにコード付き解説5【ログイン画面】

プログラミング・PHP学習

PHPとHTMLとMySQLで掲示板サイトを作ってみる講座、5回目になります。

前回は、会員情報の登録画面を作りました。

今回は、登録した情報を使ってログインする画面を作ります。

実際のサイトは、下記をクリックすると別ウィンドウで確認できます。

↓↓↓

前回までの作り方は、下記ページの目次からご覧ください。

PHPでログイン画面を作る

ではログイン画面を作っていきます。

前回と同様、CSSは省き、簡易版を作っていきます。

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

コードは次のとおり。

【test4.php】

ポイントごとに解説していきます。

ポイント① MySQLのデータと今回の情報を照らし合わせる

もしEmalとPasswordが入力されたら、MySQLのデータと突き合わせる処理をすすめます。

これが、次のコード。

「emailとpasswordが空っぽでなければ、MySQLのmembersというデータベースのemailを検索してね。今回入力したのと同じemailとパスワードがあるか見てね。」

という意味です。

ポイント② MySQLのデータと今回の情報を照らし合わせる

emailに加えて、パスワードの照合作業も必要です。

前回はpassword_hash関数を使って、ユーザーが入力したパスワードをハッシュ化しました。

データベースには変換された値が保存されており、管理者でも元のパスワードが分かりません。

mysql上のパスワード

ログインをするときには、password_hashで変換したパスワードを照合するための password_verify関数を使います。

◆password_hash パスワードをハッシュ化するときにつかう
◆password_verify ハッシュ化したパスワードを認証するときにつかう

password_hash と password_verifyはセットで使っていきましょう。

今回のコードは次のように書きます

「入力したパスワードと、データベースのパスワードが正しかったら、ログイン処理をすすめてね。今回のセッションのidが会員idで、セッションの時間は、今の時間ね。」という意味になります。

その後【test5.php】へ移動するように指定しています。

ポイント③ 無事ログインできなかったときのエラーメッセージ表示

空欄であったり、トークンが一致しなかったりでログインができないときは、エラーメッセージを表示するようにします。

エラーメッセージについて指定したのが、if構文の最後のあたり。

入力したemailやパスワードがmysqlの情報と合わない場合のエラーは ’failed’ としています。

フォームが空欄エラーについては’blank’としています。

具体的にはhtmlの中で、エラーメッセージを表示するようにコードを書いています。

htmlでのエラーメッセージ表示設定

htmlでは、$error[‘login’]が出た場合について、メッセージを指定しています。

$error[‘login’]が’failed’の場合は、「メールかパスワードが間違っています」と表示するようにしました。

$error[‘login’]が’blank’の場合には、フォームが空欄なので「メールとパスワードを入力してください。」と表示するようにしました。

さいごに

今回の山場はセキュリティ対策のために行うパスワードの認証。

Web上の詐欺の手口が多様化するにつれて、セキュリティ対策も進化していっています。

面倒ではありますが、基本の対策は取っていきましょう。

次回はログイン後の投稿画面の作り方を紹介します。

次回の山場は、これまたセキュリティ対策の【ワンタイムトークン】です。

コメント

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