php mysql bcrypt和密码不匹配

美国广播公司

我无法安全地验证用户名和密码。在检查数据库中是否存在电子邮件地址之后,我检查输入的密码是否也与数据库中的密码匹配,但是我的密码未通过验证。

这是我的user_login.php文件:

require_once "../include/Constants.php";

$conn = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);

if($_SERVER['REQUEST_METHOD']=='POST')
{
    $username = $_POST['username'];
    $password = $_POST['password'];

    //filter this variable for security

    $password = strip_tags(mysqli_real_escape_string($conn, trim($password)));

    $query = "SELECT * FROM students WHERE s_id = '".$username."' ";
    $tbl = mysqli_query($conn, $query);
    if(mysqli_num_rows($tbl)>0)
    {
        //when email is matched it also need to verify the password
        $row = mysqli_fetch_array($tbl);
        $password_hash = $row['password'];
        if(password_verify($password, $password_hash))
        {
            echo "success";
        }
        else
        {
            echo "failed login"."<br/>";
            echo $password_hash."<br/>";
            echo $password;
        }
    }
    else
    {
        echo "email failed";
    }

由于某些原因,密码和使用bcrypt加密的密码不匹配。我找不到我做错了。如果您对解决方案有一些了解,请提供帮助。谢谢!

放克四十尼纳

就目前而言,您将需要更改mysqli_fetch_array()
mysqli_fetch_array($tbl, MYSQLI_ASSOC),因为仅此一项将获取错误的数组类型。

如果没有特定参数,则它(mysqli_fetch_array())默认为MYSQLI_BOTH,是一个关联数组和数字数组。PHP可能一直在尝试访问错误的关联列。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章