PHPでログインフォームを作成しています。
さまざまなサイトで参考させていただきmysqliを使用してシステムを作成しております。
現在「Warning: Undefined variable $db_hashed_pw」
とエラーが発生して困っています。
該当のソースコード
<?php session_start(); require'password.php'; // エラーメッセージの初期化 $errorMessage = ""; // ログインボタンが押された場合 if (isset($_POST["login"])) { // 1.ユーザIDの入力チェック if (empty($_POST["userid"])) { $errorMessage = "ユーザIDが未入力です。"; } else if (empty($_POST["password"])) { $errorMessage = "パスワードが未入力です。"; } if (!empty($_POST["userid"]) && !empty($_POST["password"])) { // mysqlへの接続 $mysqli = new mysqli('localhost', 'root', ''); if ($mysqli->connect_errno) { print('<p>データベースへの接続に失敗しました。</p>' . $mysqli->connect_error); exit(); }else { $mysqli->set_charset("utf8"); } $mysqli->select_db('##'); //##はあえて非公開でお願いします。 $userid = $mysqli->real_escape_string($_POST["userid"]); $query = "SELECT userid,pass FROM kintaim WHERE userid = '".$userid."'"; $result = $mysqli->query($query); if (!$result) { print('クエリーが失敗しました。' . $mysqli->error); $mysqli->close(); exit(); } while ($row = $result->fetch_assoc()) { // パスワード(暗号化済み)の取り出し $db_hashed_pwd = $row['pass']; } // データベースの切断 $mysqli->close(); if (password_verify($_POST["password"], $db_hashed_pwd)) { // 4.認証成功なら、セッションIDを新規に発行する session_regenerate_id(true); $_SESSION["USERID"] = $_POST["userid"]; header("Location: main.php"); exit; } else { // 認証失敗 $errorMessage = "ユーザIDあるいはパスワードに誤りがあります。"; } } else { // 未入力なら何もしない } } ?>
といったような構成でシステムを作成しています。
実際にIDとパスワードを入力してログインをしても”ユーザIDあるいはパスワードに誤りがあります”と出力されたのでmySQLで登録をしたIDとパスワードでmain.phpに遷移するようにしたいです。どうかご教示お願いいたします。
問題は何でしょうか?
全体的におかしいので、質問範囲を絞ってください。