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

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

Нерідко буває, що необхідно розділяти відвідувачів на бажаних і небажаних, і давати можливість бачити деякі сторінки сайту тільки тим, хто має логін і пароль. Як зробити це, наприклад, на серверному скриптовій мовою 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 — пароль.

Зверніть увагу

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