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

PHPで掲示板作成

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

今回は、フォーム送信後の確認画面の作り方を解説します。

次のようなログイン画面を作ります。

「どんな掲示板ができるのかな。」と思ったら、下記の紹介動画をクリックしてくださいね。

↓↓↓

なお記事では掲示板に必要なコードはご紹介しますが、デザイン部分は省略しています。

デザイン部分も含めた形で、GitHubにコード公開しています。全体のコードを見たい時に、参考にしてください。

GitHubを見てみる

いいなと思ったら、GitHub右上のStarボタン、クリックしてもらえると、嬉しいです。

前回までの内容

掲示板作成の7ステップの目次と概要はこちらをご覧ください。

PHPでログイン画面を作る

では確認画面を作っていきましょう。

まずはC:\xampp\htdocs\forumの中に、login.phpファイルを作成します。この中に、下記コードを追加します。

【C:\xampp\htdocs\forum\login.php】

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

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

Emalとパスワードが入力されたら、データベースと突き合わせる処理を行います。

まずはメールです。

これによって、emailとpasswordが空でなければ、処理が実行されます。

まず’members’テーブルから、指定された’email’を持つ行を取得する準備のためのコードが書かれています。email=?となっています。

そのあとの executeメソッドでは、?部分にいれる値を配列として受けわたしています。具体的には、$_POST[‘email’]が入っています。これはフォームを通じて投稿されたメールアドレスです。

最後にfetchメソッドを使って、結果を取得しています。

つまり、今回フォームを通じて投稿されたメールアドレスと同じメールアドレスをもつメンバーを、データベースから取得してきて、$membersに代入しています。

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

emailに加えて、パスワードの照合作業も必要です。下記を実施します。

「$memberがfalseではなく、入力したパスワードと、$memberのパスワードが同じなら、ログイン処理をすすめてね。今回のセッションのidが$memberのidで、セッションの時間は、今の時間ね。」という意味になります。

処理後、つまりログイン後は、post.phpに処理が受け渡されます。

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

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

mysql上のパスワード

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

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

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

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

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

エラーメッセージについて指定したのが、下記となります。

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

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

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

空欄の場合にエラーを表示するコードは下記です。

メールまたはパスワードが間違っている場合にエラーを表示するコードは下記です。

テスト

今の段階で一度、テストしてみましょう。

XAMPPを起動した状態で、下記のURLを開きます。

http://localhost/forum/login.php

データベースに登録済みのmember情報をいれたり、わざと違う値をいれたりして、テストしてみましょう。データベースにない値をいれると、次のように、エラー画面が表示されます。

さいごに

今回の山場はセキュリティ対策のために行うパスワードの認証だったかと思います。

Web上の詐欺の手口が多様化しているので、ユーザーを守るために、セキュリティ対策をしっかり行う必要があります。

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

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

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

PHPで掲示板作成
【AWS関連・Webアプリ開発・生成AIのAPI活用のご相談承ってます】
お気軽にお声がけください。
御社にとって、最善の方法をご一緒に考えてまいります。
Zoomミーティング実施中。サンプルアプリご利用可能です。

お問合せフォーム

Laravelの本を書きました。


ひつじが目印♪
クリックするとamazonページへ。

Laravelの使い方を分かりやすく解説した書籍を出版しました。書店やAmazon等のオンラインショップにて販売中です。
Laravel10対応。Laravel11サポートガイドもご用意しています。詳しくは下記ボタンをクリック♪

書籍の詳細を見てみる

Laravelの本を書きました。


ひつじが目印♪
クリックするとamazonページへ。

最新版Laravel11用のサポートガイドご用意しています。

Laravelの使い方を分かりやすく解説した書籍を出版しました。書店やAmazon等のオンラインショップにて販売中です。

書籍の詳細を見てみる

【おすすめレンタルサーバー】

「Webアプリを本番環境に反映させたい」

場合には、レンタルサーバーを使うのが手軽です。

わたしはエックスサーバーをメインに使ってます。
早くて安定していて、おすすめです♪



Twitter始めました。
40代からプログラミング!
タイトルとURLをコピーしました