这个问题被认为是重复的,我不相信它是因为我找不到任何适合我的解决方案;但是回答的是关于错误发布 - 这个问题与代码语法错误没有任何关系;简单地说:如何获得存储的哈希密码以匹配登录屏幕上输入的密码?
我使用的是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,但这是我和我的骨架形式#39;我现在正在使用登录屏幕,这是我失去越来越多头发的日子。
以下任何提示将非常非常感谢,并提前感谢您。
我无法获取匹配的密码(使用此代码将用户插入数据库:--->)
$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>