#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
?