ресурс для начинающих веб-разработчиков
комплексные веб-услуги по созданию сайтов

Справочный материал по основным языкам программирования и верстки сайтов.

Готовая методика создания простых и сложных динамичных сайтов, с использованием PHP и MySQL.

Использование веб-редактора Adobe Dreamweaver в разработке сайтов.

Использование графических редакторов Adobe Flash, Adobe Photoshop, Adobe Fireworks в подготовке веб-графики.

Разработка веб-сайтов под "ключ".

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

О веб-проекте

О веб-проекте

В этом проекте будет реализована регистрация пользователей на веб-сайте. После решения упомянутой задачи станет возможным отслеживание интересов посетителей и отображение для них соответствующим образом настроенного содержимого. Такой подход носит название персонализации.

Данный проект дает пользователям возможность создать в веб-среде набор закладок (bookmarks) и предложить другие ссылки, которые могут заинтересовать посетителей, исходя из их поведения в предыдущих сеансах. В более обобщенном виде персонализация пользователей может применяться практически в любом веб-приложении, чтобы отобразить для них желаемое содержимое в предпочитаемом формате.

В этом, а также в последующих проектах мы начнем с обзора набора требований, подобных тем, что выдвигает закзчик сайта. Мы преобразуем эти требования в набор компонентов решения, построим схему их объединения, а затем реализуем каждый компонент.

В этом проекте будут реализованы следующие функциональные возможности:

  • Регистрация и аутентификация пользователей.
  • Управление паролями.
  • Запись предпочтений пользователей.
  • Персонализация содержимого.
  • Рекомендация содержимого в зависимости от имеющихся сведений о пользователе.

Задачи аутентификации и персонализации

В рамках этого проекта задача сводится к созданию прототипа интерактивной системы закладок, которую назовем ABCMemori и подобную, но более функционально ограниченную, системе memori.ru по адресу http://memori.ru/

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

Требования к системе можно разбить на три основных группы.

  • Во-первых, необходимо иметь возможность идентифицировать отдельных пользователей. Кроме того, следует располагать методом их аутентификации.
  • Во-вторых, необходимо иметь возможность хранения закладок для отдельного пользователя. Пользователи должны иметь возможность добавлять и удалять закладки.
  • В-третьих, требуется располагать способом рекомендации пользователям сайтов исходя из доступных сведений о клиентах.

Компоненты решения

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

Идентификация и персонализация пользователей

Как упоминалось ранее, существует несколько альтернатив аутентификации пользователей. Поскольку требуется связать с пользователем некоторую личную информацию, его входное имя и пароль будут храниться в базе данных MySQL и применяться для аутентификации.

Если необходимо предоставить пользователям возможность входить в систему, указывая свое имя и пароль, возникает потребность в следующих компонентах:

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

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

Хранение закладок

Для хранения закладок пользователя требуется создать некоторое пространство в базе данных MySQL. Необходимо реализовать следующие возможности:

  • Пользователи могут извлекать и просматривать свои закладки.
  • Пользователи могут добавлять новые закладки. Необходимо проверять, что они являются допустимыми URL-адресами.
  • Пользователи могут удалять закладки.

Рекомендация закладок

Для рекомендации закладок пользователю можно применять различные подходы. Можно выбирать наиболее популярные либо самые популярные в конкретной области закладки. В данном проекте будет реализована система рекомендаций, основанная на принципе "подобия образа мышления". Эта система выполняет поиск пользователей, имеющих ту же закладку, что и у вошедшего в систему клиента, и предлагает ему остальные закладки этих пользователей. Чтобы не рекомендовать закладки, соответствующие индивидуальным особенностям, выбираются лишь те из них, которые хранятся более чем у одного пользователя.

Для реализации упомянутых возможностей можно написать еще одну функцию.

Обзор решения

После составления ряда эскизов получилась блок-схема, показанная на рисунке.

Эта диаграмма показывает возможные логические пути в систему ABCMemory

Для каждого элемента диаграммы будет построен модуль. Некоторые из них потребуют одного сценария, а другие — двух. Кроме того, будут установлены библиотеки функций для:

  • Аутентификации пользователей.
  • Хранения и извлечения закладок.
  • Проверки данных на допустимость.
  • Соединений с базой данных.
  • Вывода в окно браузера. Генерация HTML-кода будет возложена на библиотеку функций. Это обеспечит единообразие визуального представления в рамках всего сайта. (В этом и состоит принцип API — разделение логики и содержимого.)

Кроме того, потребуется создать серверную базу данных для системы.

Проект будет рассматриваться очень подробно. Перечень подключаемых файлов приводится в таблице.

Таблица. Файлы приложения 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). Этот режим уже использовался в качестве удобного сокращения.