Смекни!
smekni.com

Учебник Macromedia Dreamweaver (стр. 133 из 135)

Теперь нам нужно создать форму с двумя полями ввода — соответственно, для ввода имени и пароля. Ну и, конечно, понадобится кнопка отправки данных. Создайте форму и назовите ее Login. Поля ввода назовите соответственно Name и Password. He забудьте текстовые подписи, иначе посетитель вашего сайта не поймет, что куда нужно вводить. После этого сохраните страницу.

Теперь создадим поведение Log in user. Для этого выберите одноименный пункт в подменю User Authentication меню серверных поведений панели Server Behaviors. На экране появится диалоговое окно Log In User.

В раскрывающемся списке Get Input From Form выбирается форма, из которой будут взяты введенные посетителем имя и пароль. Поле ввода имени выбирается в раскрывающемся списке Username Field, а поле ввода пароля—в списке Password Field.

В раскрывающемся списке Validate Using Connection выбирается база данных, зарегистрированная в Dreamweaver. В списке Table выбирается таблица, содержащая список посетителей, в списке Username Column — поле, в котором хранятся имена посетителей, а в списке Password Column — поле, в котором хранятся пароли.

Очень часто на главной странице сайта делается гиперссылка на страницу входа (а иногда сама страница входа делается главной). В этом случае посетитель после успешного входа перенаправляется на страницу с "закрытыми" данными. В поле ввода If Login Succeeds, Go To как раз и вводится интернет-адрес страницы, на которую будет осуществлен переход, если посетитель успешно войдет на сайт. Введите в это поле имя страницы списка высказываний Admin/Sentences.asp. Вы также можете нажать кнопку Browse и выбрать нужную страницу в диалоговом окне Select File.

Иногда система разграничения доступа функционирует следующим образом. При попытке захода на не доступную "посторонним" страницу посетитель автоматически перенаправляется на страницу входа на сайт. После ввода имени и пароля, если этот посетитель занесен в список, он возвращается на страницу, на которую хотел войти изначально. Для такого случая предусмотрен флажок Go To Previous URL (if it exists). Включите его, если хотите, чтобы система разграничения доступа работала таким образом.

В поле ввода If Login Fails, Go To вводится интернет-адрес страницы, на которую будет осуществлен переход, если посетителю не удалось войти на сайт. (Такое может быть, например, из-за того, что посетитель не внесен в список или неправильно набрал имя или пароль.) Введите в это поле имя страницы входа Login.asp; таким образом, после неудачного входа посетитель окажется на той же странице. Вы также можете нажать кнопку Browse и выбрать нужную страницу в диалоговом окне Select File.

С помощью группы переключателей Restrict Access Based On вы можете задать, на основе чего производится разграничение доступа к Web-страницам. Если включен переключатель Username and Password, разграничение доступа производится на основе имени и пароля. Если же вы хотите "вовлечь" в этот процесс еще и права доступа посетителя, включите переключатель Username,Password, and Access Level. В этом случае становится доступным раскрывающийся список Get Level From, в котором вы сможете выбрать поле таблицы, выбранной в списке Table, откуда будут взяты права посетителя. В нашем случае — это поле Grants.

Введя все данные, нажмите кнопку ОК.

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

Защита страниц от несанкционированного доступа

В нашем случае стоит защитить только страницу Sentences.asp, т. к. лишь на ней отображаются какие-то данные. Остальные страницы (AddSentence.asp, EditSentence.asp и DeleteSentence.asp) выполняют вспомогательные функции и без страницы Sentences.asp работать не будут.

Итак, откроем страницу Sentences.asp. Чтобы защитить ее от непрошенных посетителей, создадим поведение Restrict Access TO Page. Выберем одноименный пункт в подменю User Authentication меню серверных поведений панели Server Behaviors. На экране появится диалоговое окно Restrict Access То Page.

С помощью группы переключателей Restrict Based On вы можете задать, на основе чего производится разграничение доступа к данной странице. Если включен переключатель Username and Password, разграничение доступа производится на основе только имени и пароля. Если же вы хотите "вовлечь" в этот процесс еще и права доступа посетителя, включите переключатель Username, Password, and Access Level. В этом случае становится доступным список Select Level(s), в котором вы сможете выбрать права для посетителей, которые смогут увидеть эту страницу.

Изначально список Select Level(s) пуст. Поэтому нам придется его заполнить. Щелкните кнопку Define, и на экране появится диалоговое окно Define Access Levels.

Большую часть этого окна занимает список уже созданных вами прав. Чтобы добавить в него новый пункт, введите его имя в поле ввода Name и нажмите кнопку со знаком "плюс". Чтобы изменить пункт, выберите соответствующее имя в списке, измените его в поле ввода Name и переключитесь на любой другой пункт списка. Если же вам требуется удалить ненужный пункт, выберите соответствующее имя и нажмите кнопку со знаком "минус". К сожалению, эту операцию вам придется выполнять почти всегда: Dreamweaver почему-то часто добавляет в список пустой пункт. Введя все права посетителей, нажмите кнопку ОК.

Введя в список Select Level(s) права посетителей, вы можете их выбрать, щелкнув мышью по нужному пункту. В нашем случае, выберите пункт Administrator. Если вам необходимо выбрать сразу несколько пунктов, щелкните по первому из них, а потом щелкайте по остальным, удерживая нажатой клавишу <Ctrl>.

В поле ввода If Access Denied, Go To вводится интернет-адрес страницы, на которую будет осуществлен переход, если посетителю запрещено входить на эту страницу или если посетитель не выполнил процедуру входа на сайт. Введите в это поле имя страницы входа Login.asp. Вы также можете нажать кнопку Browse и выбрать Нужную страницу в диалоговом окне Select File.

Введя все данные, нажмите кнопку ОК.

Вот теперь можете проверить созданную нами систему разграничения доступа. Опубликуйте сайт на Web-сервере и попробуйте открыть страницу Sentences.asp. Если она все же откроется, выполните ее перезагрузку в окне Web-обозревателя. После этого вы уж точно окажетесь на странице входа на сайте Login.asp.

Реализация выхода с сайта

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

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

Откройте страницу Sentences.asp. Поместите где-либо на ней текст "Выход с сайта". Выделите его и выберите в подменю User Authentication меню серверных поведений панели Server Behaviors пункт Log Out User. На экране появится диалоговое окно Log Out User.

С помощью набора переключателей Log Out When выбирается момент времени, когда выполняется выход посетителя с сайта. Если вы хотите, чтобы выход выполнился при щелчке по гиперссылке (это как раз наш случай), включите переключатель Link Clicked. Если же вы хотите, чтобы выход выполнился при входе на данную Web-страницу, включите переключатель Page Loads.

В поле ввода When Done, Go To вводится интернет-адрес страницы, на которую будет осуществлен переход после выполнения процедуры выхода с сайта. Введите в это поле имя страницы входа Login.asp. Вы также можете нажать кнопку Browse и выбрать нужную страницу в диалоговом окне Select File. Введя все данные, нажмите кнопку ОК.

Проверьте готовую страницу в работе. Для этого опубликуйте сайт на Web-сервере, откройте в Web-обозревателе страницу Sentences.asp, войдите на сайт и тут же выйдите с него.

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

Страницы общего доступа

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

Страница списка категорий

Давайте сделаем так, чтобы при входе на сайт посетитель мог выбрать категорию высказываний (зря мы их, что ли, вводили!). А для этого нам понадобится создать страницу списка категорий, чем мы сейчас и займемся.

Создадим новую серверную страницу ASP и сохраним ее в файле Categories.asp в корневой папке сайта. И остановимся, чтобы немного подумать.

Что нам нужно? Правильно, вывести список категорий. А еще? Нам необходимо, чтобы название каждой категории в этом списке представляло собой гиперссылку. Щелкнув по ней, посетитель сайта попадет на другую страницу, на которой будут перечислены все высказывания этой категории.

Как это сделать? Очень просто: надо воспользоваться поведением GO TO Detail Page, выполняющим переход на связанную страницу.

Создадим новый набор записей под именем categories. Задайте выборку всех записей таблицы categories. После этого задайте сортировку записей по полю Name, для чего выберите это поле в раскрывающемся списке Sort диалогового окна Recordset (см. рис. 17.15). Раскрывающийся список, расположенный правее, позволит вам задать порядок сортировки записей: по возрастанию (пункт Ascending) или по убыванию (пункт Descending).