11.10. Аутентификация пользователей

11.10.1. Создание страниц для регистрации

411. Откройте страницу generic_template.php. Сохраните ее как register.php. На панели инструментов присвойте ей заголовок Enisey Tours: Регистрация (поле Title). Вместо заменителя добавьте заголовок Пожалуйста, зарегистрируйтесь на сайте.

412. Удалите строку, заменяющую текст и вставьте на страницу форму. На панели Property Inspector присвойте форме имя frm_register (опции в списках Action и Method оставьте без изменений). Поместите курсор внутри формы и вставьте таблицу со следующими параметрами:

Rows: 10, Columns: 2, Width: 95%, Border thickness: 0, Cell padding: 3, Cell spacing: 0.

413. Вставьте в левый столбец таблицы: имя, фамилия, имя пользователя), пароль, адрес1, город, край, индекс, страна.

414.  Вставьте в правый столбец таблицы текстовые поля и кнопку Submit. На панели Property Inspector присвойте полям следующие имена: firstName (имя), lastName (фамилия), username (имя пользователя), pwd (пароль), address1 (адрес1), city (город), state_province (край), zip_postal (индекс), country (страна).

415. Поместите курсор в пустой ячейке слева от Submit. Нажмите кнопку Hidden Field, расположенную в категории Forms на панели Insert, чтобы вставить в ячейку скрытое поле. Присвойте ему имя userGroup, а в качестве значения укажите visitor.

Скрытые поля применяются в формах для того, чтобы пересылать заранее определенные данные. В данном случае, после подтверждения заполнения формы наряду с переменными, взятыми из полей (например, firstName=Лора), форма перешлет и переменную userGroup=visitor.

Сайт будет предназначен для трех групп посетителей – незарегистрированных посетителей, зарегистрированных посетителей и сотрудников компании Enisey Tours. У двух групп пользователей – зарегистрированных посетителей и сотрудников компании будут разные права. Сотрудники будут иметь доступ ко всем функциям управления сайтом, в отличие от зарегистрированных посетителей. Сложность заключается в том, что обе группы пользователей будут вводить данные доступа в одну и ту же форму. Таким образом, сценарий доступа должен как-то различать разные типы пользователей. Для этого в БД он проверяет, к какой группе пользователей относится тот или иной посетитель. Нужный параметр расположен в записях пользователей, которые хранятся в таблице tbl_users. Понятно, что пользователи не должны иметь возможности самостоятельно изменять свою группу, поэтому сначала каждый, кто заполняет форму доступа, относится к группе посетителей (значение visitor).

416. Нажмите Submit, а затем на панели Server Behaviors щелкните на +, чтобы добавить модель поведения Insert Record. Модель поведения Insert Record сверяет данные, введенные в форму посетителем, с полями в БД, после чего создает в базе новую запись и наполняет введенными данными.

417. В окне Insert Record выберите соединение conn_enisey и таблицу tbl_users. В поле After inserting go to (После вставки перейти к) укажите страницу login.php. В списке Submit values from должно быть выбрано значение frm_register.

418. В диалоговом окне Columns все элементы слева должны соответствовать элементам справа и все они должны относиться к одному типу. В данном случае названия полей в формах соответствуют названиям полей в БД, однако это не обязательно. Названия полей в форме могут отличаться от названия полей в БД. Однако если они имеют одинаковые имена, сопоставление производится автоматически. Если имена отличаются, придется вручную сопоставить поля формы с соответствующими полями таблицы. Если точно следовать пункту 414 лишних полей оказаться не должно, за исключением случая если во время присвоения имен полям формы не была допущена опечатка.

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

420. Выделите Submit и добавьте серверную модель поведения Check New Username (Проверить имя нового пользователя), которая содержится в подменю User Authentification меню Server Behavior. Эта серверная модель поведения будет проверять, окажется ли введенное имя пользователя единственным в базе данных.

421. В окне Check New Username в списке Username выберите пункт username. В поле If already exists, go to (если уже существует, перейти к) укажите страницу  registration_failed.php. Нажмите OK. Это позволяет проверить, были ли данные, введенные в поле username, прежде добавлены в базу.

422. Сохраните register.php и загрузите ее на сервер. Тестировать страницу пока не нужно.

423. Используя generic_template.php создайте новую страницу registration_failed.php. В поле Title, расположенном на панели инструментов, присвойте странице заголовок Enisey Tours: регистрация прошла неудачно.  Далее введите текст:

Неудачная регистрация

Выбранное имя уже существует. Пожалуйства, вернитесь на страницу регистрации  и выполниет регистрацию заново используя другое имя.

424. Создайте на слове регистрации ссылку на страницу register.php.