СЦЕНАРІЙ АВТОРИЗАЦІЇ

Алгоритм сценарію простий. Після визначення допустимості отриманих від відвідувача яким би то не було чином (введенням у форму або в діалогове вікно авторизації) логіна і пароля відкривається сесія і в ній реєструється змінна - покажчик на успішну авторизацію, якою привласнюється певне значення. На кожній сторінці "захищеної зони" перевіряється значення отриманої з даними сесії цією змінною (а, як ви пам'ятаєте, береться воно не з тих, що відправляються браузером відвідувача даних, а із створеного в тимчасовій директорії сервера файлу з даними сесії - браузер відвідувача повідомляє лише ідентифікатор цього файлу), і якщо воно збігається з тим, що позначає успішну авторизацію, то відвідувач допускається до роботи із сторінкою, якщо ж немає - те доступ до сторінки не вирішується. На сторінці "виходу" із захищеної зони розташовується команда session_destroy ();, після виконання якої ідентифікатор сесії "забувається" сервером і передача Сценарію змінної - покажчика на успішну авторизацію більш не відбувається - до нового проходження авторизації.
Початок сценарію на сторінці перевірки логіна з паролем може бути таким:

<?php
foreach (file("passw/passwr") as $k)
{if (substr($k, 0 -2)=="$PHP_AUTH_USER $PHP_AUTH_PW")
{$rez=l;}}
if ($rez!=l) {Header("Www-authenticate: Basic realm=\"защищенная зона"\""); Header("Http/1.0 401 Unauthorized");
...текст сторінки, видатної відвідувачеві в разі натиснення ним кнопки "Відміна"...
exit, -}

або таким (якщо логін і пароль передаються з форми в змінних Slogin і Spass):

<?php
foreach (file("passw/passwr") as $k)
{if (substr($k, 0 -2)=="$login $pass"){$rez=l;
if ($rez!=l) {...текст сторінки, видатної відвідувачеві в разі введення неправильного логіна і пароля ...
exit;}

Обидва варіанти були детально розглянуті в двох попередніх розділах цієї глави. В результаті їх виконання нижченаведений текст сценарію виконуватиметься лише в тому випадку, якщо введені відвідувачем логін або пароль є у файлі логінів і паролів (що має в даному випадку ім'я "passwr").
Продовження ж сценарію досить просте. Створюємо сесію...

session_start();

...реєструємо змінну:

session_register("auth");

...і встановлюємо їй певне значення - щоб потім його і перевіряти.

$auth=1;

Власне, і все.

?>

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

<?php session_start();
if ($auth!=l)
{...текст сторінки, видатної відвідувачеві в разі спроби несанкціонованого доступу...
exit;}

...і все, що після цієї коди, буде виконане і видане відвідувачеві лише в тому випадку, якщо він успішно прошел авторизацію на першій сторінці. При заході на сторінку "захищеної зони" браузер відвідувача перешле серверу cookie з ідентифікатором сесії, а сервер візьме зі свого тимчасового сховища значення всіх змінних сесії і передасть їх сценарію.
Сторінка виходу з "захищеної зони" повинна містити код (якщо у файлі php.ini встановлений в 1 параметр session.autostart, то вказувати команду session_start () на кожній сторінці, де використовуються змінні сесії або виробляються дії з самою сесією, не обов'язково).

<?php
session_start(); session_destroy(); ?>

Після його виконання для відвідин сторінок "захищеної зони" знов буде потрібно авторизацію.
Якщо відвідувач не скористався сторінкою виходу із захищеної зони, то час, протягом якого з його браузера можна попасти на інших її сторінки, визначається налаштуваннями у файлі php.ini. За умовчанням cookie з ідентифікатором сесії, що встановлюється даному відвідувачеві, існує до закриття всіх вікон браузера, а самі дані сесії зберігаються декілька годин. Існує команда session_set_cookie_params () (детальну інформацію про неї дивитеся в Описі РНР), за допомогою якої можна встановити інший "час життя" cookie, проте для зміни налаштувань у файлі php.ini необхідно мати права адміністратора для web-сервера.
За допомогою сесій можна передавати між сторінками сайту і інші дані. Наприклад, при створенні сценарію інтернету-магазина, вітрина якого займає більш ніж одну сторінку, дані про товари, що замовляються відвідувачем, має сенс передавати по сторінках сайту в змінних сесії для подальшого їх оформлення на спеціальній сторінці як замовлення, як, власне, і робиться на більшості подібних ресурсів Мережі.
Отже, як бачите, жодних особливих секретів в технології обмеження доступу немає. Авторизація користувачів на багатьох службах хостингу, web-интерфейсов поштових систем, інтернеті-форумах зазвичай будуються на тих же принципах, що і приведені вище сценарії.
Реалізувавши дані прийоми на своєму сайті, ви можете, наприклад, сповна спокійно запрошувати до себе на роботу провідних окремих розділів вашого сайту. Всі компоненти для їх зручної і безпечної роботи у вас вже є: і "папкопотрошилка", і "закачиватель файлів", тепер ще чого і "захищена зона"... Хіба що варто додати ще і щось начеб "файлового менеджера", щоб відвідувачі могли і видаляти, і перейменовувати завантажені ними файли. Але про це -еще через пару глав.

 
На правах реклами: 1 2 Техническая поддержка сайта: оптимизация. | справка по функциям php

:: Меню ::

ГОЛОВНА

Введення

Небагато про Web-программировании

PHP: Історія. Місця. Джерела.

PHP: Основи

PHP: Вибіркове завантаження

PHP: Простий інтернет-магазин

PHP: Папкопотрошилка

PHP: Закачування файлів

PHP: Авторизація доступу

PHP: Гостьова книга

PHP: Система оцінки матеріалів

PHP: Файловий менеджер

PHP: Корисні дрібниці

PHP: Способи передачі даних між окремими сторінками

Висновок

Додаток 1. Перетвори свій сайт на портал

Додаток 2. Використовуй те, що під рукою - і не шукай завжди інше

Додаток 3. На сайті - як в "Вінде"


:: Реклама ::

  Настройка і оптимізація комп'ютера Граон знает все о флорентийской мозаике профессионально пишите

 

:: Статистика ::

  Індекс цитування

:: Навігація ::

Головна

Гостьова книга

Додати у вишукане  

 

 

 


Copyright © Asentli, 2008