У меня есть веб-приложение, созданное с помощью Laravel. Я работаю над другим сайтом, но не с Laravel. Мне нужно аутентифицировать пользователей на этом новом сайте с помощью таблицы пользователей в базе данных сайта Laravel. Пароли хэшируются с помощью bcrypt.
Я пытался проверить пароли, прежде чем пользователи смогут войти в систему, но, похоже, я что-то упускаю. Кто-нибудь может помочь?
<?php
if (isset($_POST['login'])) {
$user = mysqli_real_escape_string($_POST['email']);
$pass = mysqli_real_escape_string($_POST['password']); //input entered
$dpass = password_hash('$pass', PASSWORD_DEFAULT)."\n";
echo $dpass;
$query = mysqli_query($conn, "SELECT * FROM users WHERE `email` = '$user' AND `password` ='$pass'");
$numrows = mysqli_num_rows($query);
if ($numrows != 0) {
while ($row = mysqli_fetch_assoc($query)) {
$dbemail = $row['email'];
$dbpassword = $row['password'];
}
if ($user === $dbemail && password_verify($pass, $dbpassword)) {
session_start();
$_SESSION['email'] = $username;
// Redirect Browser
header("Location:mentor.php");
}
} else {
echo "<div class='alert alert-danger alert-dismissible'>
<a href='#' class='close' data-dismiss='alert' aria-label='close'>×</a>
<strong>Warning!</strong> Invalid credentials.
</div>";
}
}
?>
$user === $dbemail
бесполезно (вы уже проверяете это условие в своем запросе) +password ='$pass'
также бесполезно в запросе, вы должны удалить это условие из запроса - вам нужно найти строку на основе электронной почты поле отдельно, а затем проверьте, соответствует ли хешированный пароль в строке БД паролю, введенному пользователем - person Alon Eitan   schedule 05.09.2020