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

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

Нерідко буває, що необхідно розділяти відвідувачів на бажаних і небажаних, і давати можливість бачити деякі сторінки сайту тільки тим, хто має логін і пароль. Як зробити це, наприклад, на серверній скриптовом мові PHP?

 

Інструкція

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

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

<form action= method= POST>

Логін: <input type= text name= userName /><br />


Пароль: <input type= password name= userPass /><br />

<input type= submit name= submit value= Увійти />

</form>

Сюди ж(у самий початок файлу) додамо 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 <br />Логін або пароль невірні!<br />;

Увесь код, який потрібно зберегти у файл з ім'ям login.php виглядатиме так:

<?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 <br />Логін або пароль невірні!<br />;


?>

<br />

<form action= method= POST>

Логін: <input type= text name= userName /><br />

Пароль: <input type= password name= userPass /><br />

<input type= submit name= submit value= Увійти />

</form>

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

session_start();

Усі змінні, які зберігаються в сесії, ми можемо прочитати з суперглобального масиву $_SESSION. Нам треба перевірити значення змінної userName - якщо відвідувач ще не авторизувався, то її не буде в масиві, і ми перенаправимо його на сторінку для введення логіна і пароля:


if(!$_SESSION['authorized']){

header(Location: login.php);

exit;

}

Увесь код, який потрібно зберегти у файл auth.php виглядатиме так:

<?php

session_start();

if(!$_SESSION['admin']){

header(Location: enter.php);

exit;

}

?>

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

<?php

require auth.php;

?>

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

$validName = 'Я свій!';

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

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

 


Надрукувати  

Схожі матеріали