简体   繁体   English

我似乎无法使 password_verify() 工作

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

I hash password before it is store into DB.在将密码存储到数据库之前,我会对其进行哈希处理。 When I want to get it back and compare with user input I always get "password does not match".当我想取回它并与用户输入进行比较时,我总是得到“密码不匹配”。 I tried a lot of fixes but nothing seems to work.我尝试了很多修复,但似乎没有任何效果。 May be the problem is with my syntax, I am not good with php.可能是我的语法有问题,我不擅长 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";
}

Hashing password哈希密码

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

I am not very concern about security, because it is just for a project.我不是很关心安全性,因为它只是一个项目。 I just need to make it work.我只需要让它工作。

Edit编辑

I changed while loop as was in "duplicate", but it still does not work.我像“重复”中那样更改了 while 循环,但它仍然不起作用。 Any ideas why?任何想法为什么?

$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";
            }

So it works now!所以它现在起作用了!

Code for login:登录代码:

$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) Seems to do the trick, but I had to delete all records and register new user. VARCHAR(255)似乎可以解决问题,但我必须删除所有记录并注册新用户。 That seems to do the trick too.这似乎也能解决问题。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM