· IP-адрес сервера баз данных;
· Имя базы данных;
· Имя пользователя;
· Пароль
Один из способов взаимодействия с MySQL основан на использовании клиента командной строки MySQL. Чтобы запустить режим командной строки, нужно найти исполняемый файл. В нашем случае он находится по адресу:
G:\usr\local\mysql-5.1\bin. Запустивфайлmysql_run_to_import_dumps.exe, появитсяожиданиекомандывода (mysql>).
Для создания базы данных мы используем последовательность команд, изображенную на рис.4.
Рис. 4 Создание базы данных для веб-приложения
Рассмотрим подробнее каждую команду:
mysql> CREATE DATABASE phpweb20d; - данная команда создает базу данных под названием «phpweb20d»;
mysql> use phpweb20d – переход к использованию указанной базы данных;
grantallonphpweb20d.* tophpweb20d@localhostidentifiedby 'diplom'; - данная команда создает учетную запись пользователя phpweb20d. Ему присваиваются все права на указанную базу данных и пароль «diplom».
Установка библиотеки ZendFramework
ZendFramework представляет собой библиотеку компонентов PHP5 с открытым кодом, которую можно использовать для решения повседневных задач веб-программирования. Мы будем использовать эту библиотеку для создания веб-приложения. Поскольку она позволяет сосредоточиться на реализации возможностей web 2.0. Рассмотрим некоторые компоненты:
· Zend_Auth и Zend_Acl – используется для идентификации пользователей и проверки уровня их доступа.
· Zend_Controller – используется для обработки запросов клиентов и перенаправления запросов в соответствующие классы.
· Zend_Db – используются для связи с MyAQL-базой данных приложения
· Zend_Mail – используется для рассылки пользователям сообщений электронной почты.
· Zend_Validate и Zend_Filter – используется для проверки и коррекции данных, введенных пользователями в формах.
· Zend_Search – используется для полнотекстового поиска.
Для того, чтобы использовать данную библиотеку для создания приложения, нужно скачать с официального сайта (http://framework.zend.com/) установочный пакет и скопировать папку Zend в каталог include нашего веб приложения. Поскольку в файле конфигурации уже прописан путь до каталога include, в дальнейшем можно обращаться к компонентам библиотеки следующим образом: require_once('Zend/имя_файла.php');
Установка системы управления шаблонами
Для того, чтобы веб-приложение позволяло генерировать страницы на основании шаблонов, нужно установить систему управления шаблонами. Для этих целей мы будем использовать
SmartyTemplateEngine – систему управления шаблонами, написанную для PHP, которая позволяет легко отделять вывод данных и визуальную презентацию от внутренних операций приложения. Все, что увидит пользователь на экране, содержится в файле шаблона (.tpl). После обработки запроса пользователя, этот файл будет выведен на экран через посредничество системы Smarty. Файл шаблона состоит из последовательности текстовых заменителей, используемых для динамического вывода веб-контента.
Код системы Smarty можно загрузить с официального сайта (http://www.smarty.net/). Далее нужно скопировать содержимое папки libsв подкаталог Smarty каталога include.
Чтобы пользоваться системой Smarty, необходимо сконфигурировать следующие свойства каждого созданного объекта Smarty:
· Значение template_dir задает местонахождение всех шаблонов приложения. Ранее, при создании структуры каталогов приложения и файла его рабочих настроек, в качестве этого каталога был указан G:\home\localhost\www\phpweb20\templates
· Значение compile_dir задает каталог, в который система Smarty будет помещать скомпилированные шаблоны.
Поскольку в шаблонах используется собственный метаязык, каждый такой шаблон компилируется в код PHP для ускорения последующего выполнения.
При каждом изменении файла шаблона система автоматически перекомпилирует его и помещает в этот каталог. Каталог compile_dirдолжен быть доступен для записи веб-серверу. Для этой цели будем использовать каталог: G:\home\localhost\www\phpweb20\data\tmp\templates_c
Далее, с целью программной реализации настроек, мы последовательно создаем файлы, код которых находится в приложении 2 (листинг1.1 – 1.10). Результатом реализации данного программного кода является главная страница сайта, которая автоматически создается по шаблону.
Таким образом, в этом параграфе мы начали непосредственную разработку веб-приложения. Настроив рабочую среду, мы создали структуру приложения: разместили файлы в системе каталогов, задали общие настройки и параметры соединения с базой данных, подключили обработку запросов, настроили вывод веб-страниц с помощью системы Smarty.
Рис. 5 Главная страница будущего веб-приложения
2.2 Учетные записи и личные страницы пользователей. Реализация средств web 2.0
В данном параграфе мы добавим в приложение средства аутентификации и авторизации пользователей с помощью компонента Zend_Auth из библиотеки ZendFramework. В числе этих средств – таблицы базы данных для хранения информации о пользователях. План работы по данному направлению разработки веб-приложения выглядит следующим образом:
1. Создание таблицы пользователей в базе данных
2. Программная реализация аутентификации пользователей
3. Регистрация, вход и выход пользователей
Создание таблицы пользователей в базе данных
Поскольку в приложении предусмотрено хранение учетных записей множества пользователей, данные записи надо привести к организованной структуре. Для этого создадим таблицу базы данных под названием users. Каждая запись таблицы соответствует одному пользователю и содержит информацию о пользователе. Для каждого пользователя в базе данных будут храниться следующие ключевые параметры:
· User_id – целое число, используемое для внутреннего представления пользователя, его идентификационный номер;
· Username – уникальный буквенный идентификатор пользователя, используемый для входа на сайт. Это имя будет публичным – оно отображается в записях блога и других видах общедоступного контента сайта вместо настоящих имен, которые пользователи обычно скрывают;
· Password – строка символов, по которой выполняется аутентификация пользователя.
· User_type – строка, обозначающая классификацию пользователя по системе типов и категорий (администратор, пользователь или гость).
Поскольку таблица users не содержит никакой информации о самих пользователях, то для хранения этой информации нужно создать еще одну таблицу. Она будет называется users_profile. Вводя новую таблицу для хранения информации о пользователях, мы получаем возможность ее неограниченно расширять, не затрагивая таблицу users. Каждая запись в такой таблице будет соответствовать одному значению одного параметра пользовательского профиля. Таблица будет иметь три столбца:
· User_id – ссылка на пользователя, то есть запись в таблице users;
· Profile_key – имя параметра, который хранится в данной записи;
· Profile_value – значение параметра. Если значение поля Profile_key равно e-mail, текущее поле будет содержать сам адрес.
Для создания двух связанных таблиц, нужно использовать команды SQL, приведенные на рис.6.
Прокомментируем каждую команду:
· Usephpweb20 – обратить к базе данных phpweb20;createtableusers – создать таблицу users, аналогично создается таблица users_profile; user_idserialnotnull – устанавливает тип serialдля поля user_id. Это счетчик, который автоматически будет меняться для каждой записи данного поля, не может быть пустым; Usernamevarchar(255) notnull – поле username может иметь до 255 символов в длину. Поля password и user_type будут иметь длину 32 и 20 символов соответственно.
Рис. 5 Команды sql для создания двух связанных таблиц
· primary key (user_id) – полеuser_idявляетсяключевым
· unique (username) – полеusername уникальное, то есть его значения для разных пользователей не могут повторяться.
· type = InnoDB – тип таблицы определен таким образом, чтобы была возможность создавать реляционные связи по внешним ключам.
· primary key (user_id, profile_key) – поля user_id, profile_key уникальны.
· foreign key (user_id) references users (user_id) – даннаятаблицасвязанастаблицейusersпоключевомуполюuser_id
Программная реализация аутентификации пользователей
Для аутентификации пользователей, то есть проверке вводимых им регистрационных данных используется программный компонент Zend_Auth библиотеки ZendFrameWork. Чтобы пользователь прошел аутентификацию, он должен предоставить контрольную информацию. В нашем случае такой информацией является поле password таблицы users. Проверка идентификационных данных и контрольной информации путем сравнения их с информацией из базы данных выполняется адаптером. Чтобы подключить данный компонент, мы последовательно набираем программный код, находящийся в листингах 2.1 – 2. 3 (приложение 2).
Регистрация, вход и выход пользователей