この質問は重複として指摘されており、自分に合った解決策が見つからなかったため、重複しているとは思いません。しかし、指摘された答えはエラーの投稿に関するものです-この質問はコード構文エラーとは何の関係もありません。簡単に:ログイン画面で入力されたパスワードと一致するように、保存されたハッシュ化されたパスワードを取得するにはどうすればよいですか?
私はPHP 5.5.9を使用しています。これが私のデータベース情報です:
Apache/2.4.7 (Ubuntu) データベース クライアント バージョン: libmysql - mysqlnd 5.0.11-dev - 20120503 - $Id: bf9ad53b11c9a57efdb1057292d73b928b8c5c77 $
サーバーの種類: MySQL サーバーのバージョン: 5.5.44-0ubuntu0.14.04.1 - (Ubuntu)
PHP 拡張機能: MySQLi
私はほとんど初心者ではないということから始めています (nOOb でさえなく、MySQLi から始めています。PDO は認識していますが、これはログイン画面に現在使用しているスケルトン フォームです)。そして、ますます髪を失う日が経ちました。
以下に関するヒントは、非常に高く評価され、事前に感謝します。
一致するパスワードを取得できません (ユーザーは次のコードを使用してデータベースに挿入されます: ---> )
$password = $_POST['password'];
$hash = password_hash($password, PASSWORD_DEFAULT);
$hash 値がデータベースに挿入され、phpMyAdmin で正常に表示されます。次に、資格情報を要求する基本的な基本的なログイン画面で、常に「パスワードが一致しません」というエラーが表示されます。
<?php
require_once 'scripts/app_config.php';
require_once 'scripts/database_connection_tbt.php';
$username = mysqli_real_escape_string($db, trim($_REQUEST['username']));
$password = $_POST['password'];
// Look up the user
$query = sprintf("SELECT user_id, username, password FROM pax " .
"WHERE username = '%s' ",
$username);
$result = mysqli_query($db, $query);
$row = mysqli_fetch_assoc($result);
if ($row) {
$hash = $row['password'];
if (password_verify($password, $hash)) {
echo "<br><br>Password match <br><br>";
} else {
echo "<br><br>Password doesn't match<br><br>";
}
}
?>
<html>
<body>
<form action="" method="POST">
<label for="username" id="username">Username:</label>
<input type="text" name="username"><br><br>
<label for="password" id="password">Password:</label>
<input type="password" name="password"><br><br>
<input type="submit" value="Please God, please.">
</form>
</body>
</html>