<<
>>

Задание действий, обрабатывающих запросы клиента

При использовании компонента TWebModule обязательно надо задать хотя бы одно действие (action), которое обеспечит обработку запроса клиента.

1. Выберите в инспекторе объектов компонент TWebModule и щелкните на кнопке с многоточием в поле ввода свойства Actions этого компонента.

2.

Создайте новое действие. Для этого следует воспользоваться либо кнопками на панели инструментов редактора действий (кнопка Add New), либо командой Add контекстного меню редактора действий, которое открывается при щелчке правой кнопкой мыши в окне редактора действий (можно также просто нажать клавишу Ins).

3. Задайте необходимые свойства действия. Для этого следует воспользоваться инспектором объектов, в котором отображаются свойства действия, выделен­ного в окне редактора действий. У становите значение свойства Pathlnfo равным /validate. Это приведет к тому, что данное действие будет обрабатывать НТТР- запрос только в том случае, если при вызове сценария после его имени будет указана строка /validate, например:

/scripts/test.cgi/validate

Значения всех остальных свойств оставьте без изменений.

4. Задайте обработчик запроса, то есть обработчик события OnAction созданного действия. Для этого выберите в инспекторе объектов вкладку Events и дважды щелкните в поле ввода этого события. В результате будет создан шаблон про­цедуры-обработчика события OnAction.

В запросе нам требуется проанализировать информацию, введенную пользова­телем: соответствует она некоторым заданным данным или нет. Пользователь должен ввести два значения: имя и пароль. Пусть для их ввода используются текстовые поля с идентификаторами login и password соответственно. Необхо­димо получить из строки параметров, посланной клиентом, текст, введенный пользователем в каждое из этих текстовых полей, и сравнить его с заданным текстом (чтобы не усложнять задачу, будем считать, что имя пользователя и соответствующий ему пароль жестко задаются в самом веб-приложении).

В за­висимости от результата сравнения формируется ответ.

5. В качестве ответа при точном соответствии имени пользователя и пароля задан­ным значениям выведем строку Login/Password correct, при ошибочном вводе — строку Login/Password incorrect. Однако перед получением параметров следует вначале определить, каким методом выполнялась передача строки параметров — GET или POST. Это необходимо, поскольку разными методами строка парамет­ров передается по-разному: если использован метод GET — через свойства Query и QueryFields параметра Request; если же используется метод POST — через свойства Content и ContentFields этого же параметра. Таким образом, введите следующий код обработчика запроса:

procedure TWebModulel.WebModulelWebActi onltemlActi on(

Sender: TObject: Request: TWebRequest:

Response: TWebResponse: var Handled: Boolean):

// Задаем корректные имя и пароль const

login: string = 'test'; password: string = '123':

// Объявляем переменную, указывающую, корректны ли данные.

// введенные пользователем var

validate: Boolean:

begin

validate :=fal se:

II Проверяем, использован ли метод GET if Request.Method*'GET' then II Проверяем, корректны или нет данные.

II введенные пользователем

vali date :“(Request.QueryFields.Values['1ogi n']=1 ogi n) and (Request.QueryFields.Values['password']=password):

II Проверяем, использован ли метод POST if Request.Method“'POST' then И Проверяем, корректны или нет данные.

II введенные пользователем

vali date :=(Request.ContentFi elds.Values['1ogi n‘]=1 ogi n) and (Request.ContentFields.Values['password']=password); if validate then Response.Content:“

'Login/Password correct'

else

Response.Content:“

'Login/Password incorrect’

end;

Компиляция и тестирование созданного приложения

Для компиляции проекта выберите в меню IDE Delphi команду Project ► Compile (или нажмите клавиши Ctrl + F9). Если в тексте приложения не содержится оши­бок, то проект будет откомпилирован и в результате компиляции создан исполня­емый файл, имеющий расширение ехе.

Измените расширение на cgi и перепишите файл в каталог Scripts.

Для проверки разработанного сценария необходимо подготовить HTML-документ, из которого будет производиться вызов сценария. Документ должен содержать фор­му с двумя полями для ввода имени и пароля. Так как созданное приложение мо­жет обрабатывать данные, переданные как методом GET, так и методом POST, то имеет смысл включить в документ две формы, одна из которых будет использо­вать метод GET, вторая — POST. Исходный HTML-код такого документа мог бы выглядеть примерно так:

Пример CGI-приложения

Метод GET

Введите HMB:&nbsp

Введите пароль:&nbsp

сINPUT TYPE=“SUBMIT">



Метод POST

Введите HMB:&nbsp

Введите пароль:&nbsp

Файлу, содержащему приведенный код, присвойте имя default.htm и поместите его в каталог wwwroot. После этого можно запустить веб-браузер и проверить работо­способность CGI-приложения.

Как видно из рассмотренного примера, компонент TWebModule значительно упро­щает интерпретацию данных, полученных от пользователя. Однако формировать ответ приходится вручную, задавая строку Response.Content в формате HTML. Если требуется выдавать сложный ответ (хотя бы для того, чтобы результат выполне­ния сценария эстетично выглядел в окне веб-браузера), то такой подход не очень удобен. Поэтому в Delphi имеются специальные компоненты, упрощающие фор­мирование сложных HTML-документов.

<< | >>
Источник: Избачков Ю. С., Петров В. Н.. Информационные системы. 2006

Еще по теме Задание действий, обрабатывающих запросы клиента:

  1. Статья 362. Несанкционированные действия с информацией, обрабатывается в электронно-вычислительных машинах (компьютерах), автоматизированных системах, компьютерных сетях или сохраняется на носителях такой информации, совершенные лицом, имеет право доступа к ней
  2. 1. Ожидания и запросы аудитории
  3. А) НЕ КОПИТЬ, А ИНТЕЛЛЕКТУАЛЬНО ОБРАБАТЫВАТЬ ИНФОРМАЦИЮ
  4. 4. 2. ОЦЕНКА ПРОБЛЕМ КЛИЕНТОВ
  5. Безусловное уважение клиента
  6. Слушание клиента
  7. Задания, мешающие когнитивному процессу (ЗМКП), и задания, помогающие когнитивному процессу (ЗПКП)
  8. 5. 7. ОСОБЕННОСТИ КОНСУЛЬТИРОВАНИЯ ПЛАЧУЩИХ КЛИЕНТОВ
  9. 5. 5. КОНСУЛЬТИРОВАНИЕ КЛИЕНТОВ, ПРЕДЪЯВЛЯЮЩИХ ЗАВЫШЕННЫЕ ТРЕБОВАНИЯ
  10. 6.3. Клиенты и консультанты
  11. Будьте добросовестны по отношению к клиентам и к себе