/bonvhp/webapp2/delight_im       [後へ]   [目次へ]   [次へ] ~ [] ~

delight_im:ログイン画面

概要説明

ログイン画面を表示して、認証を行います。

コードの一例

コードの一例を示します。
<?php require_once("myAuth.php"); if ($_SERVER['REQUEST_METHOD'] === 'POST') { // ② $email = $_POST['email'] ?? ''; $password = $_POST['password'] ?? ''; try { $auth->login($email, $password); // ③ // ログイン成功したユーザー情報を取得 // ➃ $userId = $auth->getUserId(); $username = $auth->getUsername(); // セッションに保存 // ⑤ $_SESSION['user_id'] = $userId; $_SESSION['username'] = $username; header('Location: ./../main/index.php'); // ⑥ exit; } catch (\Delight\Auth\InvalidEmailException $e) { // ⑦ $error = 'メールアドレスが存在しません。'; } catch (\Delight\Auth\InvalidPasswordException $e) { $error = 'パスワードが正しくありません。'; } catch (\Delight\Auth\TooManyRequestsException $e) { $error = 'ログイン試行が多すぎます。少し時間を置いてください。'; } } ?> <!doctype html> <html> <head><meta charset="utf-8"><title>ログイン</title></head> <body> <h1>ログイン</h1> <?php if (! empty($error)): ?> <!-- ⑧ --> <p style="color:red;"><?php echo htmlspecialchars($error, ENT_QUOTES, 'UTF-8'); ?></p> <?php endif; ?> <form method="post" action=""> <!-- ① --> <label>メールアドレス:<input type="email" name="email" required></label><br> <label>パスワード:<input type="password" name="password" required></label><br> <button type="submit">ログイン</button> </form> </body> </html>
以降、各部分毎に分けて説明します。

① ログイン画面

login.php にアクセスすると、最初にこの部分に到達します。
HTML で、「ログイン画面」を表示します。

メールアドレスとパスワードを入力して「ログイン」ボタンを押すと、
method="post" action="" なので、
このファイル(login.php) が POST メソッドで再度呼ばれます。

② ログイン認証

「ログイン」ボタンを押してここに来ると、
'POST'なので、if の中に入ります。

③ ユーザー認証

HTML で入力したメールアドレスとパスワードを引数に、
$auth->login でユーザー認証を実行します。
認証に失敗すると例外を発生します。→ ⑦へ。

➃ ユーザー情報を取得

$auth->getUserId でユーザーID を、
$auth->getUsername でユーザー名を取得します。

他にも、
getEmail()、getStatus() や、
ユーザーの状態を取得する関数が多数あります。

⑤ セッションに保存

WEBアプリで使用するため、ユーザー情報をセッションに保存します。

⑥ ログイン後の画面に

ログイン後、
サンプル・プログラムでは main/index.php 決め打ちで遷移しています。

実際のWEBアプリでは、任意ページのURLを指定される事もあるでしょうから、
ログイン後は、ユーザーが元々アクセスしたかったページに遷移するのが親切でしょう。

⑦ エラーメッセージの設定

$auth->login は認証に失敗すると例外を発生します。
発生した例外の種類に従って $error に文字列を設定します。

⑧ エラーメッセージの表示

認証に失敗すると、再度ログイン画面を表示します。
その際、発生したエラーの内容 ($error) を画面に表示します。
/bonvhp/webapp2/delight_im       [後へ]   [目次へ]   [次へ]