Главная > РНР: настольная книга программиста
<< Предыдущий параграф Следующий параграф >>
Пред.
След.
Макеты страниц

Распознанный текст, спецсимволы и формулы могут содержать ошибки, поэтому с корректным вариантом рекомендуем ознакомиться на отсканированных изображениях учебника выше

Также, советуем воспользоваться поиском по сайту, мы уверены, что вы сможете найти больше информации по нужной Вам тематике

17.3. Авторизация посетителей сайта

Как правило, авторизация применяется на сайте прежде всего для ограничения доступа пользователей. Это обычно происходит, если вы имеете какую-либо коммерческую информацию, за доступ к которой необходимо платить, или же у вас возникла острая необходимость в использовании пароля для ограничения доступа. В общем, причин для применения авторизации может быть множество, впрочем, как и способов реализации этой задачи. Вопрос авторизации в РНР решается элементарно, как и было сказано ранее. Возможно, что РНР в этом отношении является наиболее удобным языком программирования для начинающих. При полученных знаниях вы также сможете реализовать любую поставленную задачу, связанную с авторизацией. Приведем фрагмент кода для реализации авторизации на практике. Данную программу после проверки на корректность работы вы спокойно можете внедрять в нужные вам файлы, дабы ограничить доступ кпоследним. Время использования этого кода может быть любым вплоть до года и более. Все зависит прежде всего от вас и программной необходимости. Например:

<?

if (!$auth_inc):

$auth_inc = 1;

function auth_Check($realm, $sorry = '', $tmpl= '', $tmp2 = '') {

    global $PHP_AUTH_USER;

    global $PHP_AUTH_PW;

    if {

        header("WWW - Authenticate: Basic realm = "$realm"");

        header("HTTP/1.0 401 Unauthorized");

        if ($sorry == '' )

            echo "Вам отказано в доступе!";

        else {

            include($sorry);

        }

        exit;

    }

    else {

        if (@authFunction($PHP_AUTH_USER, $PHP_AUTH_PW, $tmp1, $tmp2)) {

            $Ok = 1;

        }

        else {

            header("WWW-Authenticate: Basic realm = "$real, "");

            header("HTTP/1.0 401 Unauthorized");

            if ($sorry == '')

                echo "Вам отказано в доступе";

            else {

                include($sorry);

            }

            exit;

        }

    }

}

endif;

?>

Функцию authRinction() пишет сам пользователь, она получает аргументами, соответственно, логин, пароль, введенные посетителем, и два необязательных аргумента по наследству от authFunction() , которая, например, будет проверять пользователя по базе данных и вызывать функцию authCheck() перед каким-либо выводом текста страницы, как было замечено нами в параграфе про функции setcookie() (см. п. 9.8). Написание разных authFunction() позволяет контролировать доступ посетителей из множества различных источников, таких как файлы паролей, СУБД, хэш-файлы, запросы к сетевым сервисам авторизации и др.

Такой тип авторизации самый надежный. При посещении закрытой страницы посетителю выдается диалоговое всплывающее окно с полями имени и пароля. В дальнейшем браузер запоминает $realm и при последующем запросе пароля будет автоматически отправлять серверу пару имя/пароль. Однако это не единственный способ авторизации. Описанную выше систему ведения пользователя вполне можно использоваться в работе, внеся небольшие модификации. Для регистрации создадим форму с полями login и password. Обработчик форм генерирует случайный уникальный ключ и записывает с ним дату/время регистрации в хэш-файл. Вместо даты и времени годится значение функции time(), возвращающей количество секунд с точки отсчета, равной 01.01.1 970. Браузеру клиента выдается cookie, например xfile со значением только что сгенерированного ключа.

Каждая страница, требующая авторизации, должна проверить наличие ключа $xfile в хэш-файле и, если он есть, записать туда время обращения, не затрагивая

время регистрации. Для отказа от авторизации достаточно удалить ключ из базы. Внешняя программа может один раз в полчаса удалять ключи, выданные три часа назад, и ключи, к которым не было обращения в течение одного часа. Стойкость такой системы определяется трудностью подбора ключа cookies за ограниченное время, так как ключи существуют относительно не долго и они достаточно ные. Ключи можно передавать не только через Cookies, но и через URL как параметр скрипта.

Автор сайта должен сам решить, какой алгоритм авторизации сайта он себе выберет.

Введение авторизации — это ключ к созданию электронного магазина, электронной почты, чатов, форумов и т. д.

Categories

1
Оглавление
email@scask.ru