LoginSignup
1
1

More than 1 year has passed since last update.

ログイン機能作成 ② php

Posted at

■⑦ログインフォーム

login.php

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>ログイン登録画面</title>
</head>
<body>
    <h2>ログインフォーム</h2>
     <form action="top.php" method="POST">
         <p>
         <label for="email">メールアドレス</label> 
         </p>
         <p>
         <label for="username">パスワード</label>
         </p>
         <p>
         <input type="submit" value="ログイン">    
         </p>
     </form>
     <a href="signup_form.php">新規登録はこちら</a>

</body>
</html>

■⑧バリデーション

top.php
<?php
require_once('../classes/UserLogic.php');
//エラ〜メッセージ
$err = [];

if(!$email = filter_input(INPUT_POST,'email')) {
    $err['email'] = 'メールアドレスを記入してください。';
}

if(!$pass = filter_input(INPUT_POST,'password')) {
    $err['password'] = 'パスワードを記入してください。';
}


if(count($err) === 0) {
   echo 'ログインしました。';
}
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>ユーザー登録完了画面</title>
</head>
<body>
    <?php if(count($err) > 0):?>
    <?php foreach($err as $e): ?>
    <p><?php echo $e?></p>
    <?php endforeach?>
    <?php else:?>         
    <p>ユーザー登録が完了しました。</p>
    <?php endif?> 
    <a href="./login.php">戻る</a>
</body>
</html>

■⑨top.phpでsessionを使う。

top.php
//下記を追加
<?php
//セッションするのに必要
session_start();

if(count($err) > 0) {
    //エラーがあった場合はエラーを&_SESSIONに入れたままlogin.phpに戻る。
    $_SESSION = $err;
    //login.phpに戻る。
    header('Location: login.php');
    return;
}
?>

■⑩login.phpにもsessionを使う。

例えば名前やパスワードを記入せず
ログインボタンを押した場合ページを変えずlogin.phpでエラーメッセージを出す事ができる。

login.php
<?php
//セッションするのに必要
session_start();

//セッションで エラーメッセージを受け取る。
$err = $_SESSION;

//再度更新した時にセッションを消す。
$_SESSION = array();
session_destroy();
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>ログイン登録画面</title>
</head>
<body>
    <h2>ログインフォーム</h2>
     <form action="top.php" method="POST">
         <p>
         <label for="email">メールアドレス:</label>
         <input type="email" name="email">
         //エラーメッセージがあれば記載  
         <?php if(isset($err['email'])):?>
         <p><?php echo $err['email'];?></p>
         <?php endif?>  
         </p>
         <p>
         <label for="username">パスワード:</label>
         <input type="password" name="password">
                  /エラーメッセージがあれば記載 
         <?php if(isset($err['password'])):?>
         <p><?php echo $err['password'];?></p>
         <?php endif?>       
         </p>
         <p>
         <input type="submit" value="ログイン">    
         </p>
     </form>
     <a href="signup_form.php">新規登録はこちら</a>

</body>
</html>
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1