簡體   English   中英

php mysql bcrypt和密碼不匹配

[英]php mysql bcrypt and password doesn't match

我無法安全地驗證用戶名和密碼。 在檢查數據庫中是否存在電子郵件地址之后,我檢查輸入的密碼是否也與數據庫中的密碼匹配,但是我的密碼未通過驗證。

這是我的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可能一直在嘗試訪問錯誤的關聯列。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM