PHPとMySQLを使ったログイン機能の実装がうまくいかない

実現したいこと

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

前提

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

発生している問題

正しく作成したフォームに入力したにもかかわらず、以下のような表示が出ています。

ユーザー名またはパスワードが違います。

該当のソースコード

PHP

1<?php2// データベース接続情報3$host = "SQLサーバーのアドレス";4$dbname = "データベース名";5$user = "データベースログインID";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 tryusers 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{2 background-color: lightskyblue;3}4.header{5 display: flex;6}7.header>h1{8 color: white;9 margin: auto;10}11.header>img{12 margin: auto;13}14.menu{15 display: flex;16 margin: 15px;17 background-color: lightblue;18}19.menu>a{20 margin: 10px;21 color: white;22}23.login-form{24 text-align: center;25}26.login-form>h2{27 background-color: blue;28 color: white;29}30.about_main>img{31 width: 600px;32 height: auto;33}

試したこと

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

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

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

コメントを投稿

0 コメント