gpt4 book ai didi

PHP - password_verify 问题

转载 作者:可可西里 更新时间:2023-11-01 07:08:14 26 4
gpt4 key购买 nike

我已经为此挠头 2 个多小时了。我研究过关于 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

最佳答案

问题出在数据库中 - 与 password_verify 或 password_hash 无关。数据类型有最大字符数(仅定义为 40,因为我在创建表时被 MySQL 定义为)。移动到 60,没有更多问题。

关于PHP - password_verify 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19891355/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com