В этом проекте будет реализована регистрация пользователей на веб-сайте. После решения упомянутой задачи станет возможным отслеживание интересов посетителей и отображение для них соответствующим образом настроенного содержимого. Такой подход носит название персонализации.
Данный проект дает пользователям возможность создать в веб-среде набор закладок (bookmarks) и предложить другие ссылки, которые могут заинтересовать посетителей, исходя из их поведения в предыдущих сеансах. В более обобщенном виде персонализация пользователей может применяться практически в любом веб-приложении, чтобы отобразить для них желаемое содержимое в предпочитаемом формате.
В этом, а также в последующих проектах мы начнем с обзора набора требований, подобных тем, что выдвигает закзчик сайта. Мы преобразуем эти требования в набор компонентов решения, построим схему их объединения, а затем реализуем каждый компонент.
В этом проекте будут реализованы следующие функциональные возможности:
- Регистрация и аутентификация пользователей.
- Управление паролями.
- Запись предпочтений пользователей.
- Персонализация содержимого.
- Рекомендация содержимого в зависимости от имеющихся сведений о пользователе.
Задачи аутентификации и персонализации
В рамках этого проекта задача сводится к созданию прототипа интерактивной системы закладок, которую назовем ABCMemori и подобную, но более функционально ограниченную, системе memori.ru по адресу http://memori.ru/
Наша система должна предоставлять пользователям возможность входить в нее и хранить персональные закладки, а также получать рекомендации относительно других сайтов, подобранных на основе предпочтений посетителей.
Требования к системе можно разбить на три основных группы.
- Во-первых, необходимо иметь возможность идентифицировать отдельных пользователей. Кроме того, следует располагать методом их аутентификации.
- Во-вторых, необходимо иметь возможность хранения закладок для отдельного пользователя. Пользователи должны иметь возможность добавлять и удалять закладки.
- В-третьих, требуется располагать способом рекомендации пользователям сайтов исходя из доступных сведений о клиентах.
Компоненты решения
Теперь, когда требования к системе определены, можно приступить к разработке решения и его компонентов. Рассмотрим возможные решения для каждого из трех главных требований, перечисленных ранее.
Идентификация и персонализация пользователей
Как упоминалось ранее, существует несколько альтернатив аутентификации пользователей. Поскольку требуется связать с пользователем некоторую личную информацию, его входное имя и пароль будут храниться в базе данных MySQL и применяться для аутентификации.
Если необходимо предоставить пользователям возможность входить в систему, указывая свое имя и пароль, возникает потребность в следующих компонентах:
- Пользователи должны иметь возможность регистрировать имя и пароль. Необходимо определить ограничения относительно длины и формата имени и пароля. Из соображений безопасности пароли следует хранить в зашифрованном виде.
- Пользователям необходимо позволить входить в систему с указанием сведений, которые они предоставили в процессе регистрации.
- Пользователи должны иметь возможность выходить из системы после завершения работы с сайтом. Это не особенно важно для лиц, посещающих сайт из домашних компьютеров, но очень существенно с точки зрения защищенности, когда применяются компьютеры общего пользования.
- Для сайта необходима возможность проверки, вошел ли пользователь в систему, а также предоставления данных тем, кто эту процедуру выполнил.
- Пользователи должны иметь возможность изменять пароль с целью усиления защищенности.
- Пользователи иногда забывают свои пароли. Им следует предоставить возможность переустанавливать пароль без помощи администратора. Обычный метод состоит в отправке пароля пользователю по адресу электронной почты, указанному при регистрации. Это означает необходимость сохранения адреса электронной почты в процессе регистрации. Поскольку пароли хранятся в зашифрованном виде и дешифрация их невозможна, на самом деле потребуется сгенерировать новый пароль и отправить его пользователю.
Мы создадим функции для реализации всех перечисленных возможностей. Большинство функций могут повторно использоваться без изменений либо с небольшими изменениями в других проектах.
Хранение закладок
Для хранения закладок пользователя требуется создать некоторое пространство в базе данных MySQL. Необходимо реализовать следующие возможности:
- Пользователи могут извлекать и просматривать свои закладки.
- Пользователи могут добавлять новые закладки. Необходимо проверять, что они являются допустимыми URL-адресами.
- Пользователи могут удалять закладки.
Рекомендация закладок
Для рекомендации закладок пользователю можно применять различные подходы. Можно выбирать наиболее популярные либо самые популярные в конкретной области закладки. В данном проекте будет реализована система рекомендаций, основанная на принципе "подобия образа мышления". Эта система выполняет поиск пользователей, имеющих ту же закладку, что и у вошедшего в систему клиента, и предлагает ему остальные закладки этих пользователей. Чтобы не рекомендовать закладки, соответствующие индивидуальным особенностям, выбираются лишь те из них, которые хранятся более чем у одного пользователя.
Для реализации упомянутых возможностей можно написать еще одну функцию.
Обзор решения
После составления ряда эскизов получилась блок-схема, показанная на рисунке.
Для каждого элемента диаграммы будет построен модуль. Некоторые из них потребуют одного сценария, а другие — двух. Кроме того, будут установлены библиотеки функций для:
- Аутентификации пользователей.
- Хранения и извлечения закладок.
- Проверки данных на допустимость.
- Соединений с базой данных.
- Вывода в окно браузера. Генерация HTML-кода будет возложена на библиотеку функций. Это обеспечит единообразие визуального представления в рамках всего сайта. (В этом и состоит принцип API — разделение логики и содержимого.)
Кроме того, потребуется создать серверную базу данных для системы.
Проект будет рассматриваться очень подробно. Перечень подключаемых файлов приводится в таблице.
Имя файла | Описание |
---|---|
abcmemory.sql | SQL-операторы для создания базы данных ABCMemoriy |
login.php | Титульная страница система с формой входа в систему |
register_form.php | Форма регистрации пользователей в системе |
register_new.php | Сценарий обработки новыхрегистрационных записей |
forgot_form.php | Форма, заполняемая пользователями, забывшими пароль |
forgot_passwd.php | Сценарий переустановки забытых паролей |
member.php | Главная страница пользователя с предоятавлением всех текущих закладок |
add_bm_form.php | Форма для добавления новых закладок |
add_bms.php | Сценарий добавления новых закладок в базу данных |
delete_bms.php | Сценарий удаления выбранных закладок из списка, связанного с конкретным пользователем |
recommend.php | Сценарий выдачи рекомендаций, основынных на пользователях со сходными интересами |
chenge_passwd_form.php | Форма, заполняемая пользователями, желающими сменить пароль |
chenge_passwd.php | Сценарий смены пароля в базе данных |
logout.php | Сценарий выхода пользователя из приложения |
bookmark_fns.php | Набор подключаемых модулей для приложения |
data_valid_fns.php | Функция проверки допустимости данных вводимых пользователем |
db_fns.php | Функция для подключения к базе данных |
user_auth_fns.php | Функции аутентификации пользователей |
url_fns.php | Функции добавления и удаления закладок, а также выработки рекомендаций |
output_fns.php | Функции форматирующие вывод в виде HTML-кода |
abcmemori.css | Файл таблицы стилей |
images | Папка с рисунками |
Начнем с реализации базы данных MySQL, поскольку она необходима для осуществления почти всех функциональных возможностей приложения.
Затем мы приступим к исследованию кода в порядке его написания. Начнем с титульной страницы, перейдем к аутентификации пользователей, хранению и извлечению закладок, и завершим выработкой рекомендаций. Эта последовательность вполне логична — определяются зависимости и создаются в первую очередь элементы, которые впоследствии понадобятся для других модулей.
Примечание. Чтобы код проекта работал в соответствии с описанием, необходимо включить режим magic quotes. Если это не выполнено, ко вводимым данным в базу данных MySQL потребуется применить функцию addslashesl), а к извлекаемым данным — функцию stripslashesl). Этот режим уже использовался в качестве удобного сокращения.
Комментарии(0)
Для добавления комментариев надо войти в систему и авторизоватьсяКомментирование статей доступно только для зарегистрированных пользователей:Зарегистрироваться