Web - кодинг: CGI:
Простая CGI-программа
Источник:
Простая CGI-программа
Рассмотрим пример программы, содержащей все три части, а именно прием входных данных, выполнение инструкций,
составляющих собственно алгоритм программы, и генерирование выходных
данных. Пусть наша программа должна принять возраст пользователя и
ответить ему, имеет ли он право голосовать. Код этой программы приведен
ниже:
Посмотрите на те места этой программы, которые отмечены
коментариями для облегчения чтения. В самой первой строке указан путь к
интерпритатору Perl. При запуске программы Web-сервер ищет интерпритатор
Perl по этому пути и, если не находит его, выдает сообщения об ошибке.
Поиск пути к интерпритатору в первой строке
программы - это подход характерный для операционной системы UNIX.
Большинство Web-серверов работающих под управлением Windows, находят
интерпритатор на основании расширения имени файла. Но сервер Apache,
независимо от того, работает ли он под UNIX или под Windows,
использует подход системы UNIX. |
Перед тем как выполнять алгоритм программы, нужно
получить и обработать данные, введенные пользователем. В случае
использования языка Perl этот шаг очень прост. Я просто импортирую
CGI-модуль (библиотеку) с помощью команды use
CGI. Импортировав модуль и создав объект запроса (его
значение записано в переменной $query), я автоматически
преобразую данные формы в структуру данных языка Perl.
После того как данные пользователя приняты начинается их
обработка. В нашем случае она выглядит очень просто. Оператор if состоит из единственного условия:
$query->param('age') >=
18
Я проверяю значение параметра age. Если пользователь ввел значение большее
или равное 18, то программа возвращает сообщение: "Вы имеете право
голосовать!", а если значение меньше 18, то возвращается сообщение: "Вы
еще не имеете право голосовать!". Вот и весь алгоритм программы. Конечно,
настоящая программа может иметь более сложную логику.
После этого я вывожу текст страницы, которая будет передана
пользователю. Сначала с помощью метода header объекта query я печатаю заголовок типа
возвращаемых данных (CGI-программа должна генерировать такой
заголовок, а затем открывающие тэги и заголовок (<TITLE>) страницы. Для того чтобы
напечатать тело страницы, я проверяю с помощью оперетора if, является ли пользователь законным
избирателем, и печатаю соответствующие сообщение.
У вас может возникнуть вопрос, почему я использую переменную
voter, вместо того чтобы непосрадственно
печатать значение возраста пользователя. В этом случае код выгдядел бы вот
так:
Действительно, в таком случае я бы сэкономил несколько строк
кода программы. Но дело в том, что так бы смешалась логика программы и ее
вывод. В нашем случае логика программы весьма проста, но она могла бы быть
намного сложнее, например можно было бы добавить еще несколько проверок
других параметров. При использовании существующего подхода мне не нужно
менять опереторы печати, даже если придется добавлять некоторые новые
условия проверки. Всегда есть смысл разделять логику программы и выод
ее результатов.
Давайте рассмотрим форму, которая может вызывать эту
программу. В этой форме есть поле с именем age:
При перепечатке любого материала
с сайта, видимая ссылка на источник www.warayg.narod.ru
и все имена, ссылки авторов обязательны.
© 2005
|