От автора: современные устройства не только помогают в жизни, но еще и затрудняют ее. Мой сосед три часа простоял возле собственного подъезда. И все потому, что забыл дома ключи, а приехавшая в гости теща не узнала голос собственного зятя по домофону. Или не хотела «признать»
. Сегодня мы разберемся, что такое PHP авторизация на сайте и как ее правильно организовать, чтобы ваши пользователи «не мерзли» у входа.
Стандартная авторизация
Авторизация на сайте является необходимой функцией. С ее помощью владелец ресурса может попасть в административную панель и скорректировать работу систему, а контентщик – опубликовать новый материал.
Кроме этого на многих сайтах пользователям предоставляют доступ к дополнительному функционалу, которым не могут воспользоваться обычные посетители (комментирование, размещение фотографий, специализированные инструменты). Для авторизации человек должен быть зарегистрирован в системе ресурса.
В современном интернете стандартной считается модуль авторизации на сайте, построенный на PHP и MySQL. Вся информация о пользователе, полученная во время регистрации, записывается в специальную таблицу БД MySQL. Набор сохраняемых значений на каждом сайте может варьироваться, но обязательными являются логин и пароль пользователя.
Человеку, зашедшему на любимый ресурс, нужно сообщить его системе о том, что он является зарегистрированным (постоянным) пользователем ресурса. Для этого в специальную форму посетитель вводит свой логин и пароль. Затем их значение с помощью скрипта авторизации на PHP и MySQL сравнивается с данными, сохраненными в СУБД. Если они совпадают, то пользователь получает доступ к расширенному функционалу ресурса.
Здесь еще можно упомянуть о системе ролей, реализованных во многих популярных движках. В них каждой учетной записи предоставляется доступ к определенному набору инструментов. Более подробно этот процесс описан в материалах, посвященных CMS.
Мы это проходили
Да, этот процесс мы уже рассматривали в предыдущих материалах. Но мы ни разу не упоминали о такой важной составляющей, как сессии. С их помощью пользователь может после авторизации посещать все разделы ресурса, и не проходить данную процедуру на каждой странице. Рассмотрение темы о том, как сделать авторизацию на сайте PHP, было бы не полным без изучения возможностей сессий.
Начнем, как всегда, с формы. Вот ее разметка:
1.<form method="post">2.<input type="text" name="l" placeholder="Enter your login"style="color: rgb(51,255,51)"/><br/>3.<br/>4.<input type="password" name="p" placeholder="Enter your password"style="color: rgb(51,255,51)"/><br/>5.<br/>6.<input type="submit" value="Enter" />7.</form>
Обработчик с элементами ООП и бес СУБД
Вы не ослышались: сегодняшний скрипт авторизации на PHP будет без СУБД. Точнее, это сделано намеренно, чтобы акцентировать внимание на сессиях. А для обработчика мы создадим отдельный класс и наполним его специализированными функциями.
Все переменные сессии доступны через одноименный глобальный массив PHP$_SESSION. Для начала запускаем сессию и устанавливаем «правильную» кодировку:
1.header('Content-Type: text/html; charset=utf-8');2.session_start();После этого создаем специальный класс. В нем задаем значения для пароля и логина. Затем прописываем определения функций, которые нужны для обработки данных авторизации.
1.class Authoris_sess {2.private $_lg = "user";3.private $_pass = "php";Обратите внимание, что в PHP скрипте авторизации на сайте большая часть значений переменных берется из массива $_SESSION.

Функция maybe() проверяет, была ли начата сессия и авторизирован ли пользователь в системе ресурса.
2.if (isset($_SESSION["authoris"])) {3.return $_SESSION["authoris"];4.}5.else return false;6.}С помощью auth() проводим авторизацию. Проверяем правильность введенного пароля и логина.
01.public function auth($lg, $pass) {02.if ($lg == $this->_lg && $pass == $this->_pass) {03.$_SESSION["authoris"] = true;04.$_SESSION["l"] = $lg;05.return true;06.}07.else {08.$_SESSION["authoris"] = false;09.return false;10.}11.}Функция give_login() возвращает пользовательский логин, записанный в сессии. С помощью vihod() – закрываем сессию:
01.public function give_login() {02.if ($this->maybe()) {03.return $_SESSION["l"];04.}05.}06.public function vihod() {07.$_SESSION = array();08.session_destroy();09.}Доделаем авторизацию на сайте PHP. В конце файла обработчика создаем экземпляр класса Authoris_sess и добавляем несколько проверок: валидность пароля и логина, а также нажатие на кнопку выхода (окончания сеанса).
01.$auth = new Authoris_sess();02.if (isset($_POST["l"]) && isset($_POST["p"])) {03.if (!$auth->auth($_POST["l"], $_POST["p"])) {04.echo "<p style=\"color:red;\">Неправильный пароль или логин!</p>";05.}06.}07.if (isset($_GET["exit"])) {08.if ($_GET["exit"] == 1) {09.$auth->vihod();10.header("Location: ?exit=0");11.}12.}Доводим до ума форму
В файл формы вначале «прикрепляем» обработчик. Затем проверяем, авторизирован пользователь или нет. Если да, то выводим для него кнопку окончания сессии. Если нет, то показываем форму:
01.<?php02.require("handler.php");03.if ($auth->maybe()) {04.echo "Hello, " . $auth->give_login() ;05.echo "<br/><br/><a href=\"?exit=1\">Exit</a>";06.}07.else {08.?>09.//Здесь код формы10.} ?>
Оба файла проекта можно скачать по этой ссылке. Сегодняшний материал получился интересным и без модуля PHP авторизации на другом сайте. Для сохранения и записи значений мы использовали переменные сессии. Затем их значения сохраняются на стороне сервера и «всплывают» при следующем визите. С их помощью можно повысить степень индивидуализации функционала для каждого пользователя.
Источник: http://webformyself.com/php-avtorizaciya-na-sajte-chtoby-polzovateli-ne-merzli-u-vxoda/
