gpt4 book ai didi

php - 无法使用 PHP 将 passwordHash 发送到 MySQL 表

转载 作者:行者123 更新时间:2023-11-29 06:39:38 25 4
gpt4 key购买 nike

我正在使用以下代码

$q = $connection->prepare("INSERT INTO users (firstName, lastName, email, passwordHash) VALUES (?,?,?,?)");

$q->bind_param('ssss', $firstName, $lastName, $email, $passwordHash);

$firstName = trim($_POST['firstName']);
$lastName = trim($_POST['lastName']);
$email = trim($_POST['email']);
//$passwordHash = '$2y$10$Q0Z2OTSOjLqXA3XWscvDxO70GfY0LdQrJ/oUfxty4APU763D0iuJW';
$passwordHash = password_hash($_POST['password'], PASSWORD_DEFAULT);
echo $passwordHash;
$q->execute();
$q->close();

当我使用注释掉的行时,语句将执行并更新表。当我使用未注释掉的passwordHash 时,数据库不会更新。我需要做一些额外的事情才能使哈希适合插入吗?从 PHP 文档来看,password_hash() 返回的是一个字符串。

最佳答案

首先,正如我在评论中所说,您应该“首先”定义变量,然后准备/执行。您现在所做的可能会产生不利影响,因此这只是“良好做法”。

$firstName = trim($_POST['firstName']); 
$lastName = trim($_POST['lastName']);
$email = trim($_POST['email']);
//$passwordHash = '$2y$10$Q0Z2OTSOjLqXA3XWscvDxO70GfY0LdQrJ/oUfxty4APU763D0iuJW';
$passwordHash = password_hash($_POST['password'], PASSWORD_DEFAULT);
echo $passwordHash;

$q = $connection->prepare("INSERT INTO users (firstName, lastName, email, passwordHash) VALUES (?,?,?,?)");

$q->bind_param('ssss', $firstName, $lastName, $email, $passwordHash);


if($q->execute()){
echo "Success!";
} else {
echo "Error: ". mysqli_error($connection);
}
$q->close();

注意:如果 password_hash()由于版本不支持,因此在您的服务器上不可用,您将需要使用密码兼容包,如其手册中所示。

(PHP 5 >= 5.5.0, PHP 7)

用户贡献的注释:

There is a compatibility pack available for PHP versions 5.3.7 and later, so you don't have to wait on version 5.5 for using this function. It comes in form of a single php file: https://github.com/ircmaxell/password_compat

当我打字时,我注意到this comment来自您:

it was running on 5.4, just updated it to use 5.5 will see if this helps. I think the hashing should be working as it does echo a hash?

就是这样。 - password_hash() 无法在 PHP 5.4 上使用。请参阅上文有关密码兼容包的信息。

还要确保密码列的长度足以容纳哈希值。手册建议255。如果低于60,就有问题;如果低于60,则有问题。太短了。

使用错误处理:(我将其包含在对您的执行的轻微编辑中)。

关于php - 无法使用 PHP 将 passwordHash 发送到 MySQL 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52356640/

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