这个问题被标记为重复,我不相信它是因为我没有找到任何适合我的解决方案;但注意到的答案是关于错误发布的——这个问题与代码语法错误无关;简单地说:如何获取存储的散列密码以匹配在登录屏幕上输入的密码?
我正在使用 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>