WEBアプリには、ほぼ必ず存在する機能があります。
それが、会員登録、ログイン、ログアウト、会員情報ページです。
今回は、これら4つを組み合わせて作ってみましょう。
といっても、新しくすべきことは、ほとんどありません。
これまで、やってきた技術を使い、組み合わせることで、ほとんど実現できます。
ポイントとしては、会員登録しないと見れないユーザーページの作り方です。
ログインしていない状態でアクセスしたら、ログインページにリダイレクトされるようにしましょう。
ミッションの内容
下記のファイルを再現してみてください。
基本的には、前回までのファイルを修正して組み合わせると完成します。
ログイン、会員登録、会員ページ、ログアウト、4つのファイルが必要です。
とは言え、ほとんど、前回までの内容の応用で完成します。
これまでの復習も兼ねて、開発してみてください。
■ ミッション
会員登録ページ ( resist.php )
https://base91.net/mission/php/11/resist.php
ログインページ ( login.php )
https://base91.net/mission/php/11/login.php
会員情報ページ ( index.php )
https://base91.net/mission/php/11/index.php
ログアウトページ ( logout.php )
https://base91.net/mission/php/11/logout.php
■ 解答ファイル
以下が、解説になります。
ソースコードの解説
まず、会員登録ページは、前回作った内容から、ほとんど変わっていません。
一箇所、全ページ共通で各ページへのリンクを作っただけです。
resist.php
<div> <a href="https://base91.net/mission/php/11/login.php">ログイン</a> </div> <div> <a href="https://base91.net/mission/php/11/resist.php">新規追加</a> </div> <div> <a href="https://base91.net/mission/php/11/index.php">ユーザー画面へ</a> </div> <div style="padding-bottom:15px;"> <a href="https://base91.net/mission/php/11/logout.php">ログアウト</a> </div>
補足ですが、現状、会員登録ページに会員情報がすべて表示されています。
当然ですが、本番では、このページに会員情報が出ている時点でアウトです。
個人情報やプライバシーなど、大きな問題になってしまいます。
今回は練習ということもあり、そのままにしてあります。
実際のサービスとして作る際は、会員情報一覧は表示してはいけません。
login.php
ログインページもほとんど変わっていません。
ただ、一箇所違うのは、ログインが成功したら、ユーザーページにリダイレクトすることです。
前回作った内容は、ログインしたら、ログイン完了の文字を表示させました。
下記が変更箇所になります。
//メールアドレスとパスワード、ともに問題なければ、、 if($mailresult!=="false"&&$passresult!=="false"){ //セッションにtrueを入れてログイン済みの印を残します。 //セッションにtrueが保存されていればログイン済み、という意味です。 $_SESSION["login_pass"] = "true"; //よく利用するuseridも別のセッションに保存しておきましょう。 $_SESSION["userid"] = $userid; //ログインが成功したら、ユーザーページにリダイレクト。 header('Location: https://base91.net/mission/php/11/index.php'); };
headerと書かれた箇所が変更箇所です。
ログインしたら、すぐにユーザーページに遷移が基本です。
logout.php
ログアウトはファイルに「セッションを破棄するコード」を書くだけです。
$_SESSION[“login_pass”]がtrueなら、ログインされていると判断します。
なた、$_SESSION[“login_pass”]を破棄すれば、ログアウトになります。
<?php session_start(); session_destroy(); header('Location: https://base91.net/mission/php/11/login.php'); exit(); ?>
セッションを破棄したら、ログインページにリダイレクトさせましょう。
上記のソースコードだけで、ログアウトが完了します。
index.php
そして、今回肝となるユーザーページです。
今までの内容と比べれば、そんなに難しいことはありません。
<?php //データベースを読み込み、 require_once "functions/db.php"; //セッションをスタート session_start(); //セッション$_SESSION["login_pass"]にtrueが入っていたら、 if($_SESSION["login_pass"] == "true"){ //$_SESSION["login_pass"]内のユーザーidを基準にユーザーデータを読み込みます。 $userdataEdit = "select * from userdata where id = '".$_SESSION["userid"]."' order by id DESC"; $userdataEdit = mysqli_query($mysqli,$userdataEdit); while ($userdataEditArray = mysqli_fetch_assoc($userdataEdit)) { $name = $userdataEditArray["name"]; $age = $userdataEditArray["age"]; $skill = $userdataEditArray["skill"]; $mail = $userdataEditArray["mail"]; }; }else{ //もしログインされてなければ、ログインページに移動。 header('Location: https://base91.net/mission/php/11/login.php'); } ?>
ログインする時に、$_SESSION[“login_pass”]にtrueの文字列を入れています。
セッションにtrueが入っているかどうかで、ログインしているかどうか、判断しているんですね。
もしtrueが入っていたら、データベースにアクセスしてユーザー情報を呼び出します。
入っていなければ、headerでログインページにリダイレクトしています。
あとは、ユーザー情報をHTMLで表示させるだけですね。
<h1>ユーザー情報</h1> <ul> <li>お名前 : <?php echo $name; ?></li> <li>年齢 : <?php echo $age; ?></li> <li>スキル : <?php echo $skill; ?></li> <li>メール : <?php echo $mail; ?></li> </ul>
これで、ユーザー情報を閲覧できるページができました。
もしユーザー情報を編集したい場合は、以前作った編集の内容を参考にしてみてください。
これで、WEBサービスの基本である、会員登録のページを作ることができました。
ご自身でアレンジして、自分の好きなサービスを作ってみてください。