不能使password_verify()工作

时间:2017-12-19 16:04:01

标签: php sql

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

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

1 个答案:

答案 0 :(得分:1)

< p>所以它现在有效! < / p为H. < p>登录代码:< / p> < pre>< code> $ 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“用户名或密码不匹配”;     } // ... < /代码>< /预> &LT p为H.;<代码> VARCHAR(255)< /代码>似乎要做的伎俩,但我不得不删除所有记录并注册新用户。这似乎也可以解决问题。< / p>