@shalok

Как выполнить авторизацию в аккаунта при помощи RedBeanPHP?

Хочу сделать форму регистрации и входа. С регистрацией всё прошло гладко, всё добавляется ошибки отмечаются верные.
Когда перешёл делать форму авторизацию появились проблемы. Пустые поля он прекрасно находит но когда все строки заполняются выводит ошибку что такого пользователя не найдено, всё указываю верно

<?php
require "db.php";
$data=$_POST;
$showError=False;

if(isset($data['singin'])){
$errors = array();
$showError = True;

if (trim($data['login']) == "")
{
$errors[] = 'Введите логин!';
}
if (trim($data['password']) == "")
{
$errors[] = 'Укажите пороль!';
}

$user = R::findOne('users', 'email = ?', array($data['email']));
if ($user) {
if (password_verify($data['password'], $user->password)) {
$_SESSION['user'] = $user;
}else{
$errors[] = 'Неверный пороль';
}
}else{
$errors[] = 'Пользователь не найден';
}

}
?>
  • Вопрос задан
  • 105 просмотров
Пригласить эксперта
Ответы на вопрос 1
ipatiev
@ipatiev Куратор тега PHP
Потомок старинного рода Ипатьевых-Колотитьевых
Если подумать, то почти все вопросы новичков вида "Как сделать ххх" не несут никакого смысла.
Потому что если открыть сам вопрос, то по коду будет совершенно очевидно, что человек и так прекрасно знает, "как сделать это ххх". А вопрос у него - "как разобраться, почему оно не работает?" или - в более общем виде - "научите меня программировать".

Ну ОК, давайте учиться.

Главное в программировании - это делать всё по порядку.

У вас в текущей задаче участвует примерно миллион разных действий: html форма, код, который получает из неё данные, база данных, код, который ищет данные из формы в базе.
Если вы ещё не освоились со всеми этими элементами, то не надо их писать все подряд.
Надо делать по очереди, проверяя каждый этап.
И вопрос задавать не про весь код целиком, про который вам никто никогда не скажет, почему он не работает, а про конкретный этап.

В данном случае, если у вас база данных не находит пользователя по емейлу, надо сделать что?
Правильно - исключить все посторонние этапы. То есть написать емейл руками в скрипте и проверить - находит ли его запрос.
Если не находит - то здесь же, в скрипте, вывести все емейлы, и посмотреть глазками, а есть ли он вообще в базе данных?
Если нет - то вот она, причина. Найдена самостоятельно за 5 секунд без привлечения мирового сообщества.
Если есть, но всё равно не находит - то ищем непечатные символы и опечатки. например с помощью функции urlencode(). И исправляем то что она нашла. Русскую букву c или лишний пробел.

Если написанный руками емейл находит, а пришедший из формы нет, то надо сделать что?
Правильно - посмотреть на него глазками. А похож ли он на тот который руками написан? Если похож, то снова urlencode. Если не похож - то разбираться со своей формой.

Если всё равно не работает, то надо исключить другие посторонние факторы, например библиотеки, особенно такие кривые, как redbean. И отлаживаться на чистом PDO.

Всё это очень простые логические действия, доступные даже неспециалисту.
Просто надо не смотреть на свой код с горестным выражением лица, и гадать почему он не работает. И не искать какой-то другой код, который обязательно заработает. А работать над своим кодом. Выполнять простые логичные действия.

Отдельно хочу заметить, что все описанные действия может сделать только сам программист. Обращаться за ними к посторонним людям бессмысленно. У них нету вашей базы данных, вашей формы, вашего кода. Все эти вещи можно сделать только самостоятельно. И именно это и является программированием. А не вот это вот "всё указываю верно".
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы