header('Location:/gallery.php'); exit; } // Если логина нет в БД или проваллась проверка связки логин/пароль, переходим на страницу авторизации } else { header('Location:/auth.php'); exit; } } else { header('Location:/auth.php'); exit; } // Если сессии с залогиненым пользователем нет, проверяем наличие запомненных данных в куках } elseif (!empty($_COOKIE['lUser']) && !empty($_COOKIE['lPassword'])) { // Делаем стандартные проверки на существование логина в БД и проверку связки логин/пароль if (checkLoginExistence($_COOKIE['lUser'])) { if (checkLoginCryptPassword($_COOKIE['lUser'], $_COOKIE['lPassword'])) { $_SESSION['lUser'] = $_COOKIE['lUser']; $_SESSION['lPassword'] = $_COOKIE['lPassword']; if (!empty($_COOKIE[$_SESSION['lUser']])) { header('Location:' . $_COOKIE[$_SESSION['lUser']]); exit; } else { header('Location:/gallery.php'); exit; } // Если проверки провалились, идем на страницу авторизации } else { header('Location:/auth.php'); exit; }
function checkSessionCookie() { // Проверяем есть существет ли сессия с именем залогиненого пользователя и зашифрованным паролем if (!empty($_SESSION['lUser']) && !empty($_SESSION['lPassword'])) { // Проверяем наличие такого логина в БД (Вдруг заблокровали или удалили) if (checkLoginExistence($_SESSION['lUser'])) { // Проверяем связку логина/пароль с тем что хранится в БД if (checkLoginCryptPassword($_SESSION['lUser'], $_SESSION['lPassword'])) { // Если проверки прошли удачно и в куках есть запись о последней странице посещенной пользователем, переходим на нее if (!empty($_COOKIE[$_SESSION['lUser']])) { // Проверяем положение по основной странице, без GET запросов if (explode('?', $_SERVER['REQUEST_URI'])[0] != "/") { setcookie($_SESSION['lUser'], $_SERVER['REQUEST_URI'], time() + 60 * 60 * 24 * 7, '/'); } else { header('Location:' . $_COOKIE[$_SESSION['lUser']]); exit; } } else { // Если записи в куках о последней странице нет, переходим на страницу галереи header('Location:/gallery.php'); exit; } // Если логина нет в БД или проваллась проверка связки логин/пароль, переходим на страницу авторизации } else { header('Location:/?action=authentication'); exit; } } else { header('Location:/?action=authentication'); exit; } // Если сессии с залогиненым пользователем нет, проверяем наличие запомненных данных в куках } elseif (!empty($_COOKIE['lUser']) && !empty($_COOKIE['lPassword'])) { // Делаем стандартные проверки на существование логина в БД и связки логин/пароль if (checkLoginExistence($_COOKIE['lUser'])) { if (checkLoginCryptPassword($_COOKIE['lUser'], $_COOKIE['lPassword'])) { $_SESSION['lUser'] = $_COOKIE['lUser']; $_SESSION['lPassword'] = $_COOKIE['lPassword']; if (!empty($_COOKIE[$_SESSION['lUser']])) { // Проверяем положение по основной странице, без GET запросов if (explode('?', $_SERVER['REQUEST_URI'])[0] != "/") { setcookie($_SESSION['lUser'], $_SERVER['REQUEST_URI'], time() + 60 * 60 * 24 * 7, '/'); } else { header('Location:' . $_COOKIE[$_SESSION['lUser']]); exit; } } else { header('Location:/gallery.php'); exit; } // Если проверки провалились, идем на страницу авторизации } else { header('Location:/?action=authentication'); exit; } } else { header('Location:/?action=authentication'); exit; } } else { header('Location:/?action=authentication'); exit; } }
function checkLoginPassword($login, $password) { // Проверяем наличие логина в БД if (checkLoginExistence($login)) { // Логины хранятся в БД в нижнем регистре $login = mb_strtolower($login); // Создаем подключени е БД и проверяем его. Если подключения нет прекращаем всю работу и выводим ошибку $galleryDbConnect = mysqli_connect('localhost', 'root', '', 'gallery_db'); if (!$galleryDbConnect) { die(mysqli_connect_error()); } // Получаем пароль для указаного пользователя $query = "SELECT password FROM users WHERE login = '******'"; $result = mysqli_fetch_array(mysqli_query($galleryDbConnect, $query))[0]; // Сверяем пароль и устанавливаем данные сессии, в случае успешной проверки. В случае неудачи возвращаем ошибку if (password_verify($password, $result)) { setSessionData($login); } else { header('Location:/auth.php?action=errorWrongUserData'); } } else { header('Location:/auth.php?action=errorWrongUserData'); } }
case 'errorLoginPasswordLength': $message = 'Ошибка!<br>Длина имени пользователя должна быть не менее четырех символов<br>Длина парля должна быть не менее шести символов'; break; default: $message = ''; break; } include $docRoot . '/templates/main.php'; // Если сообщений об ошибках нет и получены логин, пароль и его проверка, обрабатываем данные } elseif (isset($_POST['login']) && isset($_POST['password']) && isset($_POST['passwordVerification'])) { // Делаем проверку на минимальную длину логина и пароля if (strlen($_POST['login']) > 3 && strlen($_POST['password']) > 5) { // Логин должен состоять только из латиницы, цифр и символа подчеркивания if (preg_match("/^[a-z0-9_]+\$/i", $_POST['login'])) { // Проверка на существование введеного пароля в БД, если такой уже есть, возвращаем ошибку if (!checkLoginExistence($_POST['login'])) { // Пароль и его повторный ввод должны совпадать if ($_POST['password'] == $_POST['passwordVerification']) { // Создаем хеш пароля и записываем данные логина и хеша пароля в БД $passwordHash = password_hash($_POST['password'], PASSWORD_DEFAULT); writeAuthDataToDB($_POST['login'], $passwordHash); // В случае неудачных проверок генерируем ссылки с сообщениями об ошибках } else { header('Location:/?action=registration&message=errorWrongPassword'); exit; } } else { header('Location:/?action=registration&message=errorUserAlreadyExist'); exit; } } else {