Невозможно сравнить пароли в базе данных

У меня есть база данных, которая содержит пользователя «admin» с паролем «admin». В db.phpЯ подключил RedBeaNPHP. DB : id,user,password,authority, Но я не могу сравнить пароли. Что не так?

if( empty( $errors))
{
$user = R::find( 'users', 'login = ?' , array($data['login']) );
if($user)
{
$password_db = R::find( 'users', 'password = ?' ,
array($data['password']) );
if( $password_db)
{
echo 5555;
}
} else
{
echo 'Wrong password';
}

HTML-код здесь:

<div id="login">
<h1>Auth</h1>
<form name='form-login' method="post">
<span class="fontawesome-user"></span>
<input type="text" name="user" placeholder="Username">
<span class="fontawesome-lock"></span>
<input type="password" name="password" placeholder="Password">
<input type="submit" value="Login" name="do_login">
</form>

0

Решение

Я вижу, проблема в том, что при поиске пользователя по логину вы передаете неверные данные. Учитывая, что $ data будет иметь данные поста.

Repalce

$user = R::find( 'users', 'login = ?' , array($data['login']) );
// $data['login'] is not defined.

с

$user = R::find( 'users', 'login = ?' , array($data['user']) );
0

Другие решения

Если вы читаете документацию RedBean ( https://redbeanphp.com/index.php?p=/finding ) вы увидите, что «find» возвращает Array и пустой Array, если результатов нет.
Для входа в систему я использую FindOne, который возвращает только первую строку или ноль.
Еще один совет: не будьте экономны в коде, когда говорите о входе в систему.
Сделайте любое сравнение, которое вы можете, и не забывайте о внедрении кода и SQL.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector