Anastasia1999
@Anastasia1999
Учу php, практикуюсь

Не работает вывод ошибки при неверном пароле, как исправить?

REDBEANPHP

$data = $_POST;
	if ( isset($data['do_login']) )
	{
		$user = R::findOne('users', 'login = ?', array($data['login']));
		if ( $user )
		{
			//логин существует
			if ($data['password'] == $user->password )
			// if (md5($data['password']) == $user->password )
			{
				//если пароль совпадает, то нужно авторизовать пользователя
				$_SESSION['logged_user'] = $user;
				header("Location: ".$_SERVER["REQUEST_URI"]);
			}else
			{
				$errors[] = 'Неверно введен пароль!';
				
			}

		}else
		{
			$errors[] = 'Пользователь с таким логином не найден!';
			
			
		}
		
		if (!empty($errors) )
		{
			//выводим ошибки авторизации
			 echo '<div id="errors" style="color:red;">' .array_shift($errors). '</div><hr>';
			
			
		}

	}


Проблема такая, "Неверно введен пароль!" не выводится. В чем может быть проблема?
  • Вопрос задан
  • 87 просмотров
Пригласить эксперта
Ответы на вопрос 2
glaphire
@glaphire Куратор тега PHP
PHP developer
Делаем дебаг наименьшими усилиями:
Если принять все условия для того, чтобы такая ошибка вывелась, то она выводится без проблем:
<?php

$data = $_POST;
//if ( isset($data['do_login']) )
if (true) {
    //$user = R::findOne('users', 'login = ?', array($data['login']));
    $user = true;
    if ($user) {
        //логин существует
        //if ($data['password'] == $user->password )
        if (false) {
            //если пароль совпадает, то нужно авторизовать пользователя
            $_SESSION['logged_user'] = $user;
            header("Location: " . $_SERVER["REQUEST_URI"]);
        } else {
            $errors[] = 'Неверно введен пароль!';

        }
    } else {
        $errors[] = 'Пользователь с таким логином не найден!';
    }

    if (!empty($errors)) {
        //выводим ошибки авторизации
        echo '<div id="errors" style="color:red;">' . array_shift($errors) . '</div><hr>';
    }
}

Соответственно - надо брейкпоинтами проверить, как выполняется каждый if до этой точки. Если не заморачиваться с xdebug, то берете var_dump и смотрите значение на каждой строчке, так сможете прийти к ответу
Ответ написан
Комментировать
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
$data = $_POST;
  if ( isset($data['do_login']) ) // плохо, проверяйте что-то более внятное, например !empty($data['login']) && !empty($data['password']) ;
  {
    $user = R::findOne('users', 'login = ?', array($data['login']));
    if ( $user ) //иф юзер что? Всегда задавайте четкие условия для сравнения и проверки.
    {
      var_dump($user);
      if ($data['password'] == $user->password ) // очень плохо
      {
        var_dump($user->password);
        var_dump($data['password']);
        $_SESSION['logged_user'] = $user;
        header("Location: ".$_SERVER["REQUEST_URI"]);
      }
      else
      {
        $errors[] = 'Неверно введен пароль!';
      }
    }else
    {
      $errors[] = 'Пользователь с таким логином не найден!';
    }
    if (!empty($errors) )
    {
      //выводим ошибки авторизации
       echo '<div id="errors" style="color:red;">' .array_shift($errors). '</div><hr>';
    }
  }
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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