PHPとMySQLを使ったログイン機能を実装したい

実現したいこと

・ログイン機能をPHPとMySQLで実装したいです。

前提

HTML、CSS、PHP、MySQLを使ってログイン機能付きのWebサイトを作成しています。 ログイン機能を実装中に以下の問題が発生しました。

発生している問題

正しく作成したフォームに入力したにもかかわらず、以下のような表示が出ています。
ユーザー名またはパスワードが違います。

該当のソースコード

PHP

1<?php2// データベース接続情報3$host = "SQLサーバーのURL";4$dbname = "データベース名";5$user = "データベースのユーザー名";6$password = "データベースのパスワード";7 8try {9 // データベースに接続10 $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8", $user, $password);11 $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);12 13 // ユーザー名を使用してユーザー情報を取得14 $stmt = $pdo->prepare("SELECT * FROM テーブル名 WHERE username = :username");15 $stmt->bindParam(":username", $_POST["username"]);16 $stmt->execute();17 $user_info = $stmt->fetch(PDO::FETCH_ASSOC);18 19 if ($user_info && password_verify($_POST["password"], $user_info["password"])) {20 // 認証成功21 echo "ログイン成功!";22 } else {23 // 認証失敗24 echo "ユーザー名またはパスワードが違います。";25 }26} catch (PDOException $e) {27 echo "データベースエラー:" . $e->getMessage();28}29?>

HTML

1<!DOCTYPE html> 2<html lang="ja"> 3 <head> 4  <meta charset="UTF-8"> 5  <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6  <link rel="stylesheet" href="./css/style.css" type="text/css"> 7  <title>タイトル</title> 8 </head> 9 <body> 10  <div class="header"> 11   <img src="./img/header_logo.png" alt="ロゴ"> 12   <h1>h1タイトル</h1> 13  </div> 14  <div class="menu"> 15   <a href="./index.html">ホーム</a> 16   <a href="about.html"></a> 17   <a href="./about_staff.html"></a> 18   <a href="./about_teacher.html"></a> 19   <a href="./access.html"></a> 20   <a href="./login.html">関係者ログイン</a> 21  </div> 22  <div class="login-form"> 23   <form action="./php/login.php" method="post"> 24    <h2>関係者ログイン</h2> 25    <label for="username">ユーザー名:</label> 26    <input id="username" name="username"> 27    <br> 28    <label for="password">パスワード:</label> 29    <input id="password" name="password" type="password"> 30    <br> 31    <button name="login" type="submit">ログイン</button> 32   </form> 33  </div> 34</body> 35</html>

CSS

1html{2background-color: lightskyblue;3}4.header{5display: flex;6}7.header>h1{8color: white;9margin: auto;10} 11.header>img{12margin: auto;13}14.menu{15display: flex;16margin: 15px;17background-color: lightblue;18}19.menu>a{20margin: 10px;21color: white;22}23.login-form{24text-align: center;25}26.login-form>h2{27background-color: blue;28color: white;29}30.about_main>img{31width: 600px;32height: auto;33}

試したこと

・サーバーのphpMyAdminを使用し、列の名前を変更
・ユーザー名とパスワードを別々に認証するように変更しようとするも、方法がわからず。
・全体のコードの書き直し(上記のは最終的に作成した物です。)

補足情報(FW/ツールのバージョンなど)

Webサーバー:ロリポップのレンタルサーバー(ライトプラン)
サーバーのPHPのバージョン:8.2.12
サーバーのMySQLのバージョン:8.0
手元の環境
OS:Windows 10 Home 22H2
開発ツール・エディタ:Visual Studio Code 1.87.0

コメントを投稿

0 コメント