Як зробити авторизацію

Нерідко буває, що необхідно розділяти відвідувачів на бажаних і небажаних, і давати можливість бачити деякі сторінки сайту тільки тим, хто має логін і пароль. Як зробити це, наприклад, на серверному скриптовій мові PHP?
Як зробити авторизацію?
Інструкція
1
Давайте організуємо найпростіший спосіб захисту сторінок від неавторизованих відвідувачів. Носієм інформації про те авторизований відвідувач будуть сесії. Сесія - це аналог кук в браузері, з тією тільки різницею, що створюються вони не у нас в комп'ютері, а на сервері. І використовуються вони для того ж, для чого і куки - для зберігання різної інформації про нас поки ми ходимо від сторінки до сторінки одного сайту. Коли ми закриваємо браузер, то сервер знищує цю сесію, а при наступному нашому заході створює нову. Цей серверний механізм ми і використовуємо для того щоб записувати в сесію авторизувався Чи вже користувач чи ні. Читаючи цю інформацію, коли відвідувач запитує сторінку, php-скрипт буде або відкривати доступ до запаролений сторінкам, або пропонувати ввести логін і пароль.

Крок 1: Створюємо сторінку для введення логіна і пароля. HTML-код форми авторизації в найпростішому варіанті може виглядати так:

Логін:

Пароль:


Сюди ж (в самий початок файлу) додамо php-код, який буде перевіряти правильність введеного відвідувачем логіна і пароля. На його початку напишемо:
session_start () -
Ця команда стартує нову сесію, якщо її ще не створено для цього відвідувача.
Потім перевіримо, чи є в сесії змінна з ім'ям 'userName' - в ній буде зберігатися ім'я, якщо відвідувач вже був авторизований. Якщо така змінна є - перенаправимо відвідувача на головну сторінку (index.php) і закінчимо виконання цього php-скрипта:
if ($ _ SESSION ['userName']) {

header ("Location: index.php") -

exit-

}
Весь інший код буде виконуватися тільки якщо користувач ще не ввів правильного логіна і пароля. Вкажемо які логін і пароль треба вважати правильними:
$ ValidName = 'Я свій!' -

$ ValidPass = 'секретний пароль'-
Потім перевіримо - чи відповідають відправлені з форми значення правильним. Оскільки у формі ми вказали метод передачі даних POST, то і читати їх слід з суперглобальні змінної $ _POST:
if ($ _ POST ['userName'] == $ validName && $ _POST ['UserPass'] == $ validPass) {

$ _SESSION ['UserName'] = $ validName-

header ("Location: index.php") -

exit-

}
Тут код у фігурних дужках {} буде виконуватися при правильних значеннях логіна і пароля. У рядку $ _SESSION ['userName'] = $ validName- ма записуємо в сесію змінну з ім'ям 'userName' містить логін тепер уже авторизованого користувача. Це і буде мітка про те, що доступ йому відкритий всюди до тих пір, поки дійсна його поточна сесія.
А на випадок якщо в форму введені неправильні дані додамо відповідне повідомлення:
else echo "
Логін або пароль невірні!
"-
Весь код, який треба зберегти файл з ім'ям login.php буде виглядати так:
lt;? php

session_start () -
if ($ _ SESSION ['userName']) {

header ("Location: index.php") -



exit-

}
$ ValidName = 'Я свій!' -

$ ValidPass = 'секретний пароль'-
if ($ _ POST ['userName'] == $ validName && $ _POST ['UserPass'] == $ validPass) {

$ _SESSION ['UserName'] = $ validName-

header ("Location: index.php") -

exit-

}

else echo "
Логін або пароль невірні!
"-



?gt;


Логін:

Пароль:

2
Крок 2: Створюємо блок авторизації - окремий файл, який буде підключатися до кожної сторінки, яка потребує захисту паролем. Цей файл буде містити тільки php-код, тому розширення у нього буде "php", А ім'я йому дамо за традицією для таких файлів - "auth", Тобто "auth.php". І тут теж відразу після відкриваючого тега lt;? php повинна йти інструкція стартувати сесію:
session_start () -
Всі змінні, які зберігаються в сесії, ми можемо прочитати з суперглобального масиву $ _SESSION. Нам потрібно перевірити значення змінної "userName" - Якщо відвідувач ще не авторизувався, то її не буде в масиві, і ми перенаправимо його на сторінку для введення логіна і пароля:
if (! $ _ SESSION ['authorized']) {

header ("Location: login.php") -

exit-

}

Весь код, який треба зберегти файл auth.php буде виглядати так:
lt;? php

session_start () -
if (! $ _ SESSION ['admin']) {

header ("Location: enter.php") -

exit-

}

?gt;

3
Крок 3: після того, як збережемо ці файли на сервері, залишиться в усі php-сторінки, які потрібно захистити від неавторизованих користувачів підключити блок авторизації. Тобто в самий початок кожного php-файлу треба буде вставити цей код:

lt;? php

require "auth.php"-

?gt;

А щоб змінити пароль доступу потрібно буде в файлі login.php змінити значення цих змінних:

$ ValidName = 'Я свій!' -

$ ValidPass = 'секретний пароль'-

$ ValidName - логін, $ validPass - пароль.



Увага, тільки СЬОГОДНІ!