В этом проекте будет реализована регистрация пользователей на веб-сайте. После решения упомянутой задачи станет возможным отслеживание интересов посетителей и отображение для них соответствующим образом настроенного содержимого. Такой подход носит название персонализации.
Данный проект дает пользователям возможность создать в веб-среде набор закладок (bookmarks) и предложить другие ссылки, которые могут заинтересовать посетителей, исходя из их поведения в предыдущих сеансах. В более обобщенном виде персонализация пользователей может применяться практически в любом веб-приложении, чтобы отобразить для них желаемое содержимое в предпочитаемом формате.
В этом, а также в последующих проектах мы начнем с обзора набора требований, подобных тем, что выдвигает закзчик сайта. Мы преобразуем эти требования в набор компонентов решения, построим схему их объединения, а затем реализуем каждый компонент.
В этом проекте будут реализованы следующие функциональные возможности:
В рамках этого проекта задача сводится к созданию прототипа интерактивной системы закладок, которую назовем ABCMemori и подобную, но более функционально ограниченную, системе memori.ru по адресу http://memori.ru/
Наша система должна предоставлять пользователям возможность входить в нее и хранить персональные закладки, а также получать рекомендации относительно других сайтов, подобранных на основе предпочтений посетителей.
Требования к системе можно разбить на три основных группы.
Теперь, когда требования к системе определены, можно приступить к разработке решения и его компонентов. Рассмотрим возможные решения для каждого из трех главных требований, перечисленных ранее.
Как упоминалось ранее, существует несколько альтернатив аутентификации пользователей. Поскольку требуется связать с пользователем некоторую личную информацию, его входное имя и пароль будут храниться в базе данных MySQL и применяться для аутентификации.
Если необходимо предоставить пользователям возможность входить в систему, указывая свое имя и пароль, возникает потребность в следующих компонентах:
Мы создадим функции для реализации всех перечисленных возможностей. Большинство функций могут повторно использоваться без изменений либо с небольшими изменениями в других проектах.
Для хранения закладок пользователя требуется создать некоторое пространство в базе данных MySQL. Необходимо реализовать следующие возможности:
Для рекомендации закладок пользователю можно применять различные подходы. Можно выбирать наиболее популярные либо самые популярные в конкретной области закладки. В данном проекте будет реализована система рекомендаций, основанная на принципе "подобия образа мышления". Эта система выполняет поиск пользователей, имеющих ту же закладку, что и у вошедшего в систему клиента, и предлагает ему остальные закладки этих пользователей. Чтобы не рекомендовать закладки, соответствующие индивидуальным особенностям, выбираются лишь те из них, которые хранятся более чем у одного пользователя.
Для реализации упомянутых возможностей можно написать еще одну функцию.
После составления ряда эскизов получилась блок-схема, показанная на рисунке.
Для каждого элемента диаграммы будет построен модуль. Некоторые из них потребуют одного сценария, а другие — двух. Кроме того, будут установлены библиотеки функций для:
Кроме того, потребуется создать серверную базу данных для системы.
Проект будет рассматриваться очень подробно. Перечень подключаемых файлов приводится в таблице.
Таблица. Файлы приложения ABCMemori
Имя файла | Описание |
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). Этот режим уже использовался в качестве удобного сокращения.