如何从MySQL数据库中获取字符串以与PasswordVerify()配合使用?

时间:2019-04-24 16:42:49

标签: php mysql

因此,我有一个存储ID,用户名和密码的数据库。密码是使用php的password_hash()函数存储的。该部分工作正常,并且已成功将其与哈希一起存储在数据库中。现在,我想使用password_verify()函数。我似乎无法正确地从数据库中获取字符串值,以将其用于该功能。

由于我已经在其中存储了一些东西,因此数据库($db)的设置正确。 数据库中的列仅是ID,用户名和密码。 $ username和$ password是用户登录时填写的内容。

<?php
    if (count($errors) == 0) { // Everything correct, so verify pw
        $sql = $db->query("SELECT password FROM users WHERE username='$username'");
        if ($sql->num_rows > 0 ){
            $hashedpass = $sql->fetch_array();
            if (password_verify($password, $hashedpass['password'])); {
                $msg = "Username and password are correct";
            } else {
                $msg = "Incorrect";
        } else {
            $msg = "Incorrect";
    }
?>

2 个答案:

答案 0 :(得分:0)

已在此处获取数据,使$hashedpass成为数组:

$hashedpass = $sql->fetch_array();

然后您将使用表中的列名与$hashedpass['password']进行比较:

password_verify($password, $hashedpass['password'])

另外

Little Bobby your script is at risk for SQL Injection Attacks. 。甚至escaping the string都不安全!

答案 1 :(得分:0)

$hashedpass = $sql->fetch_array();

为您提供一个具有所选列名的关联数组。

您应该通过选择正确的元素来获取值-

$hashedpass['password']