簡體   English   中英

我似乎無法使 password_verify() 工作

[英]I can't seem to make password_verify() work

在將密碼存儲到數據庫之前,我會對其進行哈希處理。 當我想取回它並與用戶輸入進行比較時,我總是得到“密碼不匹配”。 我嘗試了很多修復,但似乎沒有任何效果。 可能是我的語法有問題,我不擅長 php。

if (mysqli_num_rows($result) > 0) {
    // output data of each row
    
    while($row = mysqli_fetch_assoc($result)) {
    if (password_verify($RegisteredPass, $row['pass']))
       {
           echo "tchd";
           echo "ID:".$row['id'] ."|Name:".$row['name']. "|User:".$row['user'];
           }
       else{
           echo "pass doesn`t match";
           
       }
    }
} else {
   
    echo "user not found";
}

哈希密碼

$hassedPassword = password_hash($password, PASSWORD_DEFAULT, ['cost' => 12]);

我不是很關心安全性,因為它只是一個項目。 我只需要讓它工作。

編輯

我像“重復”中那樣更改了 while 循環,但它仍然不起作用。 任何想法為什么?

$sql = "SELECT pass, id, name, user FROM unityTut WHERE user='".$RegisterUser."'";

 $result = $conn->query($sql);
        if ($result->num_rows === 1) {
            $row = $result->fetch_array(MYSQLI_ASSOC);
            if (password_verify($RegisteredPass, $row['pass'])) {

                //Password matches, so create the session
                 
                

echo "Match";

            }else{
                echo  "The username or password do not match";
            }

所以它現在起作用了!

登錄代碼:

$sql = "SELECT pass, id, name, user FROM unityTut WHERE user='".$RegisterUser."'";
$result = $conn->query($sql);
if ($result->num_rows === 1) {
    $row = $result->fetch_array(MYSQLI_ASSOC);
    if (password_verify($RegisteredPass, $row['pass'])) {
        echo "Match";
    }else{
        echo  "The username or password do not match";
    }
// ...

VARCHAR(255)似乎可以解決問題,但我必須刪除所有記錄並注冊新用戶。 這似乎也能解決問題。

暫無
暫無

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

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