我已经为此摸不着头脑两个多小时了。我研究过 stackoverflow 上的文章,包括:
而且我无法纠正我的问题。我希望能得到一些关于我有多白痴的指导:
向MySQL数据库插入数据的函数:
function insertUser($userObj) {
$query = $this->databaseConnection->getStntPrepare()->prepare(
"INSERT INTO user(username, userpassword) VALUES (?,?);");
$username = $userObj->getUsername();
$password = password_hash('testing1234', PASSWORD_BCRYPT);
$query->bind_param('ss', $username, $password);
}
通过从 MySQL 检索数据来验证用户登录:
function findUser($userObj) {
$query = $this->databaseConnection->getStntPrepare()->prepare(
"SELECT userid, userpassword
FROM user
WHERE username=?");
$pass = 'testing1234'
$query->bind_param('s', $userObj->getUsername());
$query->execute();
$query->bind_result($userid, $hash);
while ($query->fetch()) {
if (password_verify($pass, $hash)) {
echo 'Password is valid!';
} else {
echo 'Invalid password.';
}
}
}
运行时我收到“无效密码”。
当我执行以下操作而不插入数据库然后检索时:
$hash = password_hash('testing1234', PASSWORD_BCRYPT);
if (password_verify('testing1234', $hash)) {
echo 'Password is valid!';
} else {
echo 'Invalid password.';
}
我收到“密码有效!”
我相信我的问题与单引号和双引号以及密码字段中美元符号($)的解释有关,在从 MySQL 数据库存储/检索时,将其作为变量而不是文字(如其中一篇文章所建议的) - 但是我没有运气解决。以下是“testing1234”的哈希值:
$2y$10$1/oQEuYX67n.U3usxH.7tenNq7hT2dKyBSIZsy5xR3W