Средства удаления записи
Осталось создать средства удаления ненужных высказываний из таблицы sentences . Что ж, и такое иногда приходится проделывать...
Чтобы удалить ненужную запись, нам также понадобится серверная страница. Мы поместим на этой странице содержимое удаляемой записи (это хороший тон Web -программирования) и кнопку, запускающую процесс удаления записи. А для перехода на эту страницу мы поместим на странице Sentences.asp еще одну гиперссылку.
Откройте страницу Sentences.asp . Поставьте текстовый курсор в четвертую ячейку второй строки таблицы и наберите текст "Удалить". Выделите только что введенное слово и наберите в поле ввода интернет-адреса редактора свойств такой текст:
DeleteSentence . asp ? ID =
Далее переключитесь в режим отображения кода и перетащите из панели Bindings в место, находящееся точно после знака "=", поле id набора записей. Интернет-адрес гиперссылки примет такой вид:
Мы уже знаем, что означает этот код.
DeleteSentence.asp?ID=<%=(Sentences.Fields.Item("ID").Value)%>
Теперь сохраните и закройте страницу Sentences.asp . Создайте новую серверную страницу, введите в нее поясняющий текст и сохраните под именем DeleteSentence.asp в папке Admin . Но не закрывайте только что созданную страницу — мы ей сейчас займемся.
Сначала нужно создать набор записей, из которого будет взята запись для отображения на этой странице. Этот набор также должен содержать одну-единственную запись, поэтому нам придется задать фильтр по значению поля счетчика id таблицы Sentences , которое должно равняться значению параметра гиперссылки id , переданному от страницы Sentences.asp . Кроме того, этот набор записей должен быть сложным, аналогичным тому, что мы создали на странице
Sentences.asp . Создайте его, а если у вас возникнут затруднения, обратитесь к спасительной главе 17. Текст SQL- запроса будет таков :
SELECT Sentences.ID, Content, Name FROM Sentences, Categories
WHERE Sentences.ID, = MMColParam AND Sentences.Category=Categories.ID
Здесь MMColParam — имя параметра SQL -запроса, соответствующего параметру гиперссылки id . Его значение , соответственно , будет
Request . QueryString (" ID ").
Теперь поместим на страницу динамический текст, привязанный к полю content набора записей. В следующем абзаце наберем слово "Категория", поставим неразрывный пробел и поместим динамический текст, привязанный к полю Name .
В следующем абзаце создадим форму и назовем ее Delete . Эта форма нужна нам для того, чтобы поместить кнопку, запускающую процесс удаления записи. Поместим же эту кнопку в форму. И сохраним страницу.
Теперь нам нужно создать поведение Delete Record . Для этого выберем одноименный пункт в меню серверных поведений панели Server Behaviors . На экране появится диалоговое окно Delete Record .
Выберите в раскрывающемся списке Connection базу данных, в списке Delete From Table — таблицу, запись которой будет удалена, а в списке Select Record From — набор записей, из которого будет взята запись для отображения ее содержимого на странице. В нашем случае это будет соответственно Library , Sentences и Sentences (таблица и набор записей у нас называются одинаково).
В поле ввода Unique Key Column задается поле набора записей, по которому нужная нам запись будет однозначно идентифицироваться. В нашем случае — это ключевое поле id . Если это числовое поле (а поле id — числовое), включите флажок Numeric , в противном случае — отключите его.
В раскрывающемся списке Delete By Submitting выбирается кнопка, после нажатия которой произойдет удаление записи.
В поле ввода After Deleting , Go To вводится интернет-адрес страницы, на которую будет осуществлен переход после успешного удаления записи. Вве дите в него Sentences.asp . Вы также можете щелкнуть кнопку Browse и выбрать нужную страницу в диалоговом окне Select File .После ввода всех данных не забудьте нажать кнопку ОК. Сохраните страницу DeleteSentence.asp и проверьте ее. Введите какуюнибудь запись и попробуйте ее удалить. Если она почемуто не удалится, проверьте, все ли вы сделали правильно.
Страница входа на сайт
Поскольку наш сайт будет поддерживать разграничение доступа, нам нужно обязательно сделать страницу входа на сайт. А, кроме того, нам необходимо создать в базе данных Library.asp таблицу, которая будет хранить список зарегистрированных посетителей.
Первым делом нужно, разумеется, создать таблицу, чтобы нам было с чего начинать создание страницы входа. Эта таблица будет содержать следующие поля:
Name — имя посетителя (текстовое, 20 символов, ключевое);
Password — пароль посетителя (текстовое, 20 символов);
Grants — права посетителя (текстовое, 20 символов).
С первыми двумя полями все ясно. Поговорим о третьем поле — Grants . Dreamweaver , точнее, его поведения, "отвечающие" за разграничение доступа, принимают текстовые значения, говорящие о правах посетителя. Таких значений может быть, как минимум, три:
" Administrator " — администратор сайта, полный доступ ко всем данным сайта;
" user " - посетитель, доступ к открытым данным сайта, предназначенным для "обычных" посетителей сайта;
" Guest " — "гость" сайта, минимальный доступ к данным сайта.
Основываясь на этих значениях, поведения Dreamweaver принимают решение, допускать ли посетителя до какой-либо страницы сайта. Конечно, вы можете задать свои значения, но эта троица присутствует практически во всех списках доступа.
Чтобы не усложнять чрезмерно наш сайт, давайте ограничимся двумя типами прав посетителей: администратором (значение " Administrator " поля Grants ) и обычным посетителем (значение " user "). Администратор будет один и может править любые данные, сохраненные в базе Library.asp , a обычный посетитель сможет только их просматривать.
Итак, мы создали новую таблицу. Но подождите ее сохранять. Задайте для поля Grants значение по умолчанию " user ", чтобы вновь зарегистрировав шиеся посетители сразу же получили соответствующие права доступа. Вот теперь можете закрывать и сохранять новую таблицу. Назовите ее users .
После этого откройте только что созданную таблицу и введите в нее одну запись. Значения ее полей будут такими:
поле Name — " Admin ";
поле Password — " Admin " (не будем заботиться о секретности пароля - все равно наш сайт учебный);
поле Grants — " Administrator ".
Теперь можно приступать к созданию страницы входа на сайт. Введите в нее поясняющий текст и назовите Login.asp . Причем сохраните ее в корневой папке сайта, а не в папке Admin , — мы используем ее для входа на сайт и администраторов, и обычных посетителей.
Теперь нам нужно создать форму с двумя полями ввода — соответственно, для ввода имени и пароля. Ну и, конечно, понадобится кнопка отправки данных. Создайте форму и назовите ее 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 .
Введя все данные, нажмите кнопку ОК.
Вы, наверно, подумали, что сейчас мы будем проверять вновь созданную страницу в работе. Но делать это пока еще рано. Нам нужно защитить остальные страницы от несанкционированного доступа, т. е. попытки войти на них, миновав страницу входа на сайт. Без этого наши старания по защите сайта от "случайных людей" пойдут насмарку.