Password_verify() возвращает False с правильным паролем

#php #database #mongodb

#php #База данных #mongodb

Вопрос:

Я пытаюсь создать страницу входа в систему, используя PHP и MongoDB. Во время входа в систему я беру пароль как <input type="text" name="password" placeholder="Password"> и в коде PHP, который я использую для проверки password_verify . Несмотря на то, что я ввожу правильный пароль, я получаю неверный пароль в качестве вывода.

 if(isset($_POST['login'])){
        print_r($_POST);


        $email = $_POST['email'];
        $upass = $_POST['password'];
        $criteria = array("email"=> $email);
        $query = $usercollection->findOne($criteria);
        var_dump($query);
        if(empty($query)){
            echo "Email ID is not registered.";
            echo "Either <a href='register.html'>Register</a> with the new Email ID or <a href='loginuser.html'>Login</a> with an already registered ID";
        }
        else{

            $pass = $query["password"];
                if(password_verify($upass,$pass)){
                $var = setsession($email);
                print_r($_SESSION);
                echo "Password match";

                if($var){

                    /*header("Location: home.php");*/ echo "Login success";
                }
                else{
                    echo "Some error";
                }
            }
            else{
                echo "Password not match";
                echo "You have entered a wrong password";
                echo "<br>";
                echo "Either <a href='register.html'>Register</a> with the new Email ID or <a href='loginuser.html'>Login</a> with an already registered ID";
            }
        }
    }
 

Комментарии:

1. Покажите нам, как хранится пароль.

2. Покажите нам, что делает password_verify .

3. Со строковым типом данных.

4. @Sanket я могу в значительной степени гарантировать, что проблемы нет password_verify .

5. @Sanket Еще раз, покажите нам, как хранится пароль.

Ответ №1:

password_verify() сопоставляет ваш введенный пароль с хэшем, хранящимся в базе данных. Убедитесь, что вы сохранили свой пароль как хэш в базе данных с помощью функции password_hash()

Комментарии:

1. Как сохранить пароль в формате хэша в MongoDB?

2. покажите php-код, который сохраняет ваш пароль в БД.

3. if(isset($_POST['Register'])){ $user= array( 'fname' => $_POST['fname'], 'lname' => $_POST['lname'], 'email' => $_POST['email'], 'contactnumber' => $_POST['contactnumber'], 'password' => generate_password_hash($_POST['password']), );

4. $hospital->patients->insertOne($user);

5. что делает generate_password_hash ?