Задать вопрос
@Denis1111

Не получается авторизация?

Здравствуйте! У меня с проверкой пароля пользователя:
$data = $_POST;
В файле singup.php:
$user = R::dispense('users');
			$user->login = $data['login'];
			$user->email = $data['email'];
			$user->password = password_hash($data['passoword'], PASSWORD_DEFAULT);
			R::store($user);


В файле login.php :

$data = $_POST;

if (isset($data['do_login'])) {
	$errors = [];
	$user = R::findOne('users', 'login = ?', [$data['login']]);

	if ($user) {
		if (password_verify($data['password'], $user->password)) {
			$_SESSION['logged_user'] = $user;
			echo '<div style="color: green;">Вы успешно авторизованы можете перейти на <a href="/">главную страницу</a></div><hr/>';
		} else {
			$errors[] = 'Неверный пароль!';
		}
	} else {
		$errors[] = 'Пользователь с таким логином не найден!';
	}

	if (!empty($errors)) {
		echo '<div style="color: red;">'.array_shift($errors).'</div><hr/>';
	} 
}


Проблема заключается в том, что password_verify не работает. Пробовал md5() тоже не помогло. Может кто знает в чём проблема? У меня проходит авторизация только если поле пароля не заполнено, а если я ввожу правильный пароль то пишет что типа пароль неверный. Вопрос: почему?!??!
  • Вопрос задан
  • 255 просмотров
Подписаться 2 Простой 12 комментариев
Решения вопроса 1
@eloki
Всего по-маленьку
У вас опечатка в password_hash($data['passoword']
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Lopar
@Lopar
системный администратор
Рискну предположить, что в $user->password (в проверке в login.php) приходит пустая строка. В результате, если пароль пуст, проверка хэша пустоты к пустоте возвращает true, а если не пуст — проверка существующего хэша к пустоте возвращает false и вы ловите ошибку.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы