예제 #1
0
파일: index.php 프로젝트: VV0LF/PHPLevel1
                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;
        }
예제 #2
0
파일: users.php 프로젝트: VV0LF/PHPLevel1
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;
    }
}
예제 #3
0
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');
    }
}
예제 #4
0
파일: index.php 프로젝트: VV0LF/PHPLevel1
         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 {