Делаем дебаг наименьшими усилиями:
Если принять все условия для того, чтобы такая ошибка вывелась, то она выводится без проблем:
<?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 и смотрите значение на каждой строчке, так сможете прийти к ответу