Php 使用Blowfish的哈希密码是否可以与SQL一起使用?
我已使用以下方法对密码进行哈希运算:Php 使用Blowfish的哈希密码是否可以与SQL一起使用?,php,mysql,sql,Php,Mysql,Sql,我已使用以下方法对密码进行哈希运算: <?php $hashed_password = password_hash($password , PASSWORD_BCRYPT); ?> 但现在,当我尝试使用以下代码将其添加到数据库时,查询失败: $query = "INSERT INTO user ( email, hashed_password, first_name, last_name, address, birthday, news
<?php
$hashed_password = password_hash($password , PASSWORD_BCRYPT);
?>
但现在,当我尝试使用以下代码将其添加到数据库时,查询失败:
$query = "INSERT INTO user
( email, hashed_password, first_name, last_name, address, birthday,
newsletter
)
VALUES
( '{$email}', '{$hashed_password}', '{$fname}', '{$lname}', '{$address}',
'{$birthdate}', '{$newsletter}'
)";
if($result = mysqli_query($connection, $query))
{
//Success!
header("Location: login-page.php");
exit;
}
else
{
//Display error Message.
echo "<p>User creation failed.</p>";
}
$query=“插入用户
(电子邮件、哈希密码、名、姓、地址、生日、,
新闻稿
)
价值观
(“{$email}”、“{$hashed_password}”、“{$fname}”、“{$lname}”、“{$address}”,
“{$birthdate}”,“{$newsletter}”
)";
if($result=mysqli_query($connection,$query))
{
//成功!
标题(“位置:login page.php”);
出口
}
其他的
{
//显示错误消息。
echo“用户创建失败。”;
}
我能听到下面的回声。包括$connection。那么我哪里出错了?尝试使用PASSWORD\u DEFAULT而不是PASSWORD\u BCRYPT,并确保数据库中的密码字段设置为60个字符 像这样试试
error_reporting(1);
ini_set('error_reporting', E_ALL);
$hashed_password = password_hash($password , PASSWORD_DEFAULT);
$query = mysqli_query($connection, "INSERT INTO user ( email, hashed_password, first_name, last_name, address, birthday, newsletter )
VALUES ( '$email', '$hashed_password', '$fname', '$lname', '$address', '$birthdate', '$newsletter' )") or die(mysqli_error());
if ($query)
{
//Success!
//header("Location: login-page.php");
//exit();
echo "<p>User creation success.</p>";
}
else
{
//Display error Message.
echo "<p>User creation failed.</p>";
}
错误报告(1);
ini_集合(“错误报告”,E_全部);
$hashed\u password=password\u hash($password,password\u DEFAULT);
$query=mysqli\u query($connection,“插入用户(电子邮件、哈希密码、名、姓、地址、生日、时事通讯))
值(“$email”、“$hashed_password”、“$fname”、“$lname”、“$address”、“$birthdate”、“$newsletter”)或die(mysqli_error());
如果($query)
{
//成功!
//标题(“位置:login page.php”);
//退出();
echo“用户创建成功。”;
}
其他的
{
//显示错误消息。
echo“用户创建失败。”;
}
问题是,我在数据库中有一个字段没有调用,该字段没有默认值错误说明什么我指定我得到的错误是回音;因此,查询返回voidPassword哈希,生成的字符可能不是SQL安全的。使用准备好的语句。在当前版本的PHP中,PASSWORD\u DEFAULT==PASSWORD\u BCRYPT
。您是否阅读了PHP.net上的文档?当然<代码>密码\u默认值可以随PHP版本更改,是的,但目前它们是等效的。另外,除非OP使用的是密码\u需要\u重新设置
,使用PASSWORD\u DEFAULT
除了用更新后的算法内部决定在将来将PASSWORD\u DEFAULT
更改为的值散列新密码外,没有什么作用。他最好将其设置为PASSWORD\u DEFAULT,这样他以后就不需要编辑代码了。按照您编写的方式,听起来好像你在建议不要使用密码。问题在于默认密码,而不仅仅是一个建议。