前提・実現したいこと
phpとSQLを利用して簡単な会員サイトを作りたいです。
まだDBは空なので、未登録のエラーを吐き出したいのですが、全く機能せずです。
SQLにデータを登録してみて試したりもしたのですが、原因はそこでは無いようで、、
該当のソースコード
kaiin_login.php
<?php session_start(); require_once('database.php'); // データベースアクセスファイル読み込み require_once('auth.php'); // ログイン認証ファイル読み込み $errorMessage = ""; // エラーメッセージ初期化 // ログイン処理 if (isset($_POST['login'])) { if(!empty($_POST['email']) && !empty($_POST['password'])){ if ($account=login($_POST['email'], $_POST['password'])){ $_SESSION['account'] = $account; header("Location: kaiinn_mypage.php"); // ログイン失敗時の表示 } else { $errorMessage = "ログインに失敗しました。"; } } else { $errorMessage = "メールアドレスとパスワードを入力してください。"; } } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>login</title> <link rel="stylesheet" type="text/css" href="stylesheet/log_in.css"> <link rel="stylesheet" type="text/css" href="stylesheet/log_in_suma.css"> </head> <body> <div class="style_log_in_top"> <p>log in</p> </div> <div class="form"> <?php if($login){ ?> echo "ログインしました。"; <?php } else { ?> <?php echo $errorMessage; ?> <input type="text" name="email" value="" placeholder="e-mail"><br> <input type="password" name="password" value="" placeholder="password"><br> <input class="button" type="submit" name="login" value="LOG IN"> <?php } ?> </div> </body> </html>
database.php
<?php // ログイン処理 function login($email, $password){ $db = new PDO('mysql:dbname=konasa;host=localhost;charset=utf8;root;root'); $sql = "SELECT * FROM user_id WHERE email = :email AND password = :password"; $stt = $db->prepare($sql); $stt->bindParam(':email', $email); $stt->bindParam(':password', $password); $stt->execute(); while($row=$stt->fetch()){ $result['id'] = $row['id']; $result['name'] = $row['name']; $result['email'] = $row['email']; $result['password'] = $row['password']; } if(isset($result)){ return $result; } } // ログイン認証 function authCheck($email, $password){ $db = new PDO('mysql:dbname=konasa;host=localhost;charset=utf8;root;root'); $sql = "SELECT * FROM user_id WHERE email = :email AND password = :password "; $stt = $db->prepare($sql); $stt->bindParam(':email', $email); $stt->bindParam(':password', $password); $stt->execute(); while($row=$stt->fetch()){ $result['id'] = $row['id']; $result['name'] = $row['name']; $result['email'] = $row['email']; $result['password'] = $row['password']; } if(isset($result)){ return $result; } } ?>
auth.php
<?php session_start(); require_once('database.php'); // セッションにアカウント情報がある場合 if(isset($_SESSION['account'])){ // 認証処理 $account = authCheck($_SESSION['account']['email'], $_SESSION['account']['password']); if(isset($account)){ // ログインフラグをtrueにする $login = true; // セッションにユーザー情報を格納 $_SESSION['account'] = $account; } else { // ログインフラグをfalseにする $login = false; // セッションを破棄 unset($_SESSION['account']); } // セッションにアカウント情報がない場合 } else { // ログインフラグをfalseにする $login = false; } ?>
補足情報(FW/ツールのバージョンなど)
php 7.3.8
すみません、色々調べながら学習しているのですが、分かりません。
回答3件
あなたの回答
tips
プレビュー