Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用Blowfish的哈希密码是否可以与SQL一起使用?_Php_Mysql_Sql - Fatal编程技术网

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,这样他以后就不需要编辑代码了。按照您编写的方式,听起来好像你在建议不要使用密码。问题在于默认密码,而不仅仅是一个建议。