PHP авторизація на сайті — щоб користувачі не мерзли біля входу

35

Від автора: сучасні пристрої не тільки допомагають у життя, але ще й ускладнюють її. Мій сусід три години простояв біля власного під’їзду. І все тому, що забув удома ключі, а приїхала в гості теща не впізнала голос власного зятя по домофону. Або не хотіла «визнати» :) . Сьогодні ми розберемося, що таке PHP авторизація на сайті і як її правильно організувати, щоб ваші користувачі «не мерзли» біля входу.

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

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

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

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

Людині, зайшов на улюблений ресурс, потрібно повідомити його системі про те, що він є зареєстрованим (постійним) користувачем ресурсу. Для цього в спеціальну форму відвідувач вводить свій логін і пароль. Потім їх значення за допомогою скрипта авторизації на PHP і MySQL порівнюється з даними, що зберігаються в СУБД. Якщо вони збігаються, то користувач отримує доступ до розширеного функціоналу ресурсу.

Тут ще можна згадати про систему ролей, реалізованих у багатьох популярних движках. У них кожного облікового запису надається доступ до певного набору інструментів. Більш детально цей процес описаний в матеріалах, присвячених CMS.

Ми це проходили

Так, цей процес ми вже розглядали в попередніх матеріалах. Але ми жодного разу не згадували про таку важливу складову, як сесії. З їх допомогою користувач може після авторизації відвідувати всі розділи ресурсу, і не проходити цю процедуру на кожній сторінці. Розгляд теми про те, як зробити авторизацію на сайті PHP, було б не повним без вивчення можливостей сесій.

Почнемо, як завжди, з форми. Ось її розмітка:

Оброблювач з елементами ООП і біс СУБД

Ви не помилилися: сьогоднішній скрипт авторизації на 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 «

Неправильний пароль або логін!

«;
}
}
if (isset($_GET[«exit»])) {
if ($_GET[«exit»] == 1) {
$auth->vihod();
header(«Location: ?exit=0»);
}
}

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

Файл форми спочатку «прикріплюємо» обробник. Потім перевіряємо, авторизований користувач чи ні. Якщо так, то виводимо для нього кнопку закінчення сесії. Якщо ні, то показуємо форму:

maybe()) {
echo «Hello,» . $auth->give_login() ;
echo «

Exit»;
}
else {
?>
//Тут код форми
} ?>

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