Если вы решили продавать содержимое сайта или просто ограничить доступ к некоторой его части по паролю, то имеется возможность контролировать этот процесс с помощью PHP. Вопрос авторизации решается в PHP элегантно и просто. Я один раз оформил нужный фрагмент кода как включаемый файл и использую его уже больше года. Здесь я приведу код в несколько сокращенной общей форме:
Функцию authFunction() пишет сам пользователь, она получает аргументами, соответственно, логин и пароль, введенные посетителем, и два необязательных параметра по наследству от authCheck(). Автор скрипта должен просто включить файл auth.inc в свою программу, написать функцию authFunction(), которая, например, будет проверять пользователя по базе данных, и вызвать функцию authCheck() перед каким-либо выводом текста страницы, как было замечено про функцию setcookie(). Написание разных authFunction() позволяет контролировать доступ посетителей из множества различных источников, таких как файлы паролей, СУБД, хэш-файлы, запросы к сетевым сервисам авторизации, и из любых на ваше усмотрение.
Такой тип авторизации самый, так сказать, железный. При посещении закрытой страницы посетителю выдается диалоговое всплывающее окно с полями имени и пароля. В дальнейшем броузер запоминает $realm и при последующем запросе пароля будет автоматически отправлять серверу пару имя/пароль. Однако это не единственный способ авторизации. Пример писать не буду, а просто потеоретизирую немного. Описанная выше система ведения пользователя вполне подойдет с небольшими модификациями. Для регистрации создадим форму с полями login и password. Обработчик формы генерирует случайный уникальный ключ и записывает с ним дату/время регистрации в хэш-файл. Вместо даты и времени годится значение функции time(), возвращающей количество секунд с 01.01.1970. Броузеру клиента выдается cookie, например, xfile со значением только что сгенерированного ключа. Каждая страница, требующая авторизации, должна проверить наличие ключа $xfile в хэш-файле и, если он есть, записать туда время обращения, не затрагивая времени регистрации.
Для отказа от авторизации достаточно удалить ключ из базы. Внешняя программа может раз в полчаса, допустим, удалять ключи, выданные 3 часа назад, и ключи, к которым не было обращения в течение 1 часа. Стойкость такой системы определяется трудностью подбора ключа-cookie за ограниченное время, так как ключи живут относительно недолго и они достаточно длинные. Ключ можно передавать не только через cookie, но и через URL как параметр скрипта.
Конечно, гениальный автор сайта сам должен решить, какой алгоритм авторизации он себе выберет, так как у обоих вариантов есть свои плюсы и минусы. Возможно, есть еще какие-либо варианты. Пишите, обсудим.
В общем-то ведение пользователя и авторизация - это ключ к созданию электронного магазина. Может быть, об этом я тоже когда-нибудь напишу.
Постоянные ссылки
При копировании ссылка на TeaM RSN обязательна!
Оставить комментарий
Вы должны войти, чтобы оставить комментарий.