不能使password_verify()工作

问题描述 投票:-2回答:1

好的,我希望它不重复,但其他帖子对我没有帮助。

我在密码存入DB之前对其进行哈希处理。当我想要取回它并与用户输入进行比较时,我总是得到“密码不匹配”。我尝试了很多修复,但似乎没有任何工作。可能问题在于我的语法,我对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";
            }
php sql
1个回答
1
投票

所以它现在有效!

登录代码:

$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)似乎要做的伎俩,但我必须删除所有记录并注册新用户。这似乎也成功了。

© www.soinside.com 2019 - 2024. All rights reserved.