PHP авторизация на сайте — чтобы пользователи не мерзли у входа

PHP авторизация на сайте

От автора: современные устройства не только помогают в жизнь, но еще и затрудняют ее. Мой сосед три часа простоял возле собственного подъезда. И все потому, что забыл дома ключи, а приехавшая в гости теща не узнала голос собственного зятя по домофону. Или не хотела «признать» :) . Сегодня мы разберемся, что такое PHP авторизация на сайте и как ее правильно организовать, чтобы ваши пользователи «не мерзли» у входа.

Стандартная авторизация

Авторизация на сайте является необходимой функцией. С ее помощью владелец ресурса может попасть в административную панель и скорректировать работу систему, а контентщик – опубликовать новый материал.

Кроме этого на многих сайтах пользователям предоставляют доступ к дополнительному функционалу, которым не могут воспользоваться обычные посетители (комментирование, размещение фотографий, специализированные инструменты). Для авторизации человек должен быть зарегистрирован в системе ресурса.

В современном интернете стандартной считается модуль авторизации на сайте, построенный на PHP и MySQL. Вся информация о пользователе, полученная во время регистрации, записывается в специальную таблицу БД MySQL. Набор сохраняемых значений на каждом сайте может варьироваться, но обязательными являются логин и пароль пользователя.

Человеку, зашедшему на любимый ресурс, нужно сообщить его системе о том, что он является зарегистрированным (постоянным) пользователем ресурса. Для этого в специальную форму посетитель вводит свой логин и пароль. Затем их значение с помощью скрипта авторизации на PHP и MySQL сравнивается с данными, сохраненными в СУБД. Если они совпадают, то пользователь получает доступ к расширенному функционалу ресурса.

Здесь еще можно упомянуть о системе ролей, реализованных во многих популярных движках. В них каждой учетной записи предоставляется доступ к определенному набору инструментов. Более подробно этот процесс описан в материалах, посвященных CMS.

Мы это проходили

Да, этот процесс мы уже рассматривали в предыдущих материалах. Но мы ни разу не упоминали о такой важной составляющей, как сессии. С их помощью пользователь может после авторизации посещать все разделы ресурса, и не проходить данную процедуру на каждой странице. Рассмотрение темы о том, как сделать авторизацию на сайте PHP, было бы не полным без изучения возможностей сессий.

Начнем, как всегда, с формы. Вот ее разметка:

<form method="post">
    <input type="text" name="l" placeholder="Enter your login" style="color: rgb(51,255,51)"/><br/>
    <br/>
    <input type="password" name="p" placeholder="Enter your password" style="color: rgb(51,255,51)"/><br/>
    <br/>
    <input type="submit" value="Enter" />
</form>

Обработчик с элементами ООП и бес СУБД

Вы не ослышались: сегодняшний скрипт авторизации на PHP будет без СУБД. Точнее, это сделано намеренно, чтобы акцентировать внимание на сессиях. А для обработчика мы создадим отдельный класс и наполним его специализированными функциями.

Все переменные сессии доступны через одноименный глобальный массив PHP $_SESSION. Для начала запускаем сессию и устанавливаем «правильную» кодировку:

header('Content-Type: text/html; charset=utf-8');
session_start();

После этого создаем специальный класс. В нем задаем значения для пароля и логина. Затем прописываем определения функций, которые нужны для обработки данных авторизации.

class Authoris_sess {
    private $_lg = "user"; 
    private $_pass = "php";

Обратите внимание, что в PHP скрипте авторизации на сайте большая часть значений переменных берется из массива $_SESSION.

Функция maybe() проверяет, была ли начата сессия и авторизирован ли пользователь в системе ресурса.

public function maybe() {
        if (isset($_SESSION["authoris"])) {
            return $_SESSION["authoris"]; 
        }
        else return false;
}

С помощью auth() проводим авторизацию. Проверяем правильность введенного пароля и логина.

public function auth($lg, $pass) {
        if ($lg == $this->_lg && $pass == $this->_pass) {
            $_SESSION["authoris"] = true;
            $_SESSION["l"] = $lg;
            return true;
        }
        else { 
            $_SESSION["authoris"] = false;
            return false;
        }
    }

Функция give_login() возвращает пользовательский логин, записанный в сессии. С помощью vihod() – закрываем сессию:

public function give_login() {
        if ($this->maybe()) { 
            return $_SESSION["l"];
        }
    }
    public function vihod() {
        $_SESSION = array(); 
        session_destroy(); 
    }

Доделаем авторизацию на сайте PHP. В конце файла обработчика создаем экземпляр класса Authoris_sess и добавляем несколько проверок: валидность пароля и логина, а также нажатие на кнопку выхода (окончания сеанса).

$auth = new Authoris_sess();
if (isset($_POST["l"]) && isset($_POST["p"])) { 
    if (!$auth->auth($_POST["l"], $_POST["p"])) {
        echo "<p style=\"color:red;\">Неправильный пароль или логин!</p>";
    }
}
if (isset($_GET["exit"])) { 
    if ($_GET["exit"] == 1) {
        $auth->vihod();
        header("Location: ?exit=0"); 
    }
}

Доводим до ума форму

В файл формы вначале «прикрепляем» обработчик. Затем проверяем, авторизирован пользователь или нет. Если да, то выводим для него кнопку окончания сессии. Если нет, то показываем форму:

<?php
require("handler.php");
if ($auth->maybe()) {
    echo "Hello, " . $auth->give_login() ;
    echo "<br/><br/><a href=\"?exit=1\">Exit</a>";
}
else {
?>
//Здесь код формы
} ?>

Оба файла проекта можно скачать по этой ссылке. Сегодняшний материал получился интересным и без модуля PHP авторизации на другом сайте. Для сохранения и записи значений мы использовали переменные сессии. Затем их значения сохраняются на стороне сервера и «всплывают» при следующем визите. С их помощью можно повысить степень индивидуализации функционала для каждого пользователя. Но этим мы займемся как-нибудь в следующий раз :) .

Курс по программированию на языке PHP

Изучите PHP с нуля до результата!

Смотреть курс

Метки:

Комментарии Вконтакте:

Комментарии Facebook:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Я не робот.

Spam Protection by WP-SpamFree