質問: "ユーザIDあるいはパスワードに誤りがあります。"; } }else { // 未入力なら何もしない } } ?> ``` このコードを使いログインチェックを行ったところ、 名前とパスワードの両方にデータベース上に存在しない適当な文字列を入力すると Notice: Undefined variable: db_hashed_pwd in C:\xampp\htdocs\20\function.php on line 97 ユーザIDあるいはパスワードに誤りがあります。 このようにエラーとechoの中身が出ます。 解決方法お教えいただけませんでしょうか。 よろしくお願いいたします。
回答: db_hashed_pwdを定義すればいいのではないかと。 ``` connect_errno) { echo('データベースへの接続に失敗しました。' . $mysqli->connect_error); exit(); } // データベースの選択 $mysqli->select_db($db['dbname']); // 入力値のサニタイズ $userid = $mysqli->real_escape_string($_POST['login_name']); // クエリの実行 $query = "SELECT * FROM `sample01` WHERE `name` = '" . $userid . "'"; $result = $mysqli->query($query); if (!$result) { echo('クエリーが失敗しました。' . $mysqli->error); $mysqli->close(); exit(); } while ($row = $result->fetch_assoc()) { // パスワード(暗号化済み)の取り出し $db_hashed_pwd = $row['password']; } // データベースの切断 $mysqli->close(); // 3.画面から入力されたパスワードとデータベースから取得したパスワードのハッシュを比較します。 //if ($_POST["password"] == $pw) { if (password_verify($_POST['login_password'], $db_hashed_pwd)) { // 4.認証成功なら、セッションIDを新規に発行する session_regenerate_id(true); $_SESSION['user'] = $_POST['login_name']; header("Location: index.php"); exit; } else { // 認証失敗 echo $errorMessage = "ユーザIDあるいはパスワードに誤りがあります。"; } } else { // 未入力なら何もしない } } ?> ```