Cgi perl что это за программа

Общий интерфейс шлюза или CGI — это набор стандартов, которые определяют, как происходит обмен информацией между веб-сервером и настраиваемым сценарием.

Спецификации CGI в настоящее время поддерживаются NCSA, и NCSA определяет CGI следующим образом:

Общий интерфейс шлюза, или CGI, является стандартом для программ внешнего шлюза для взаимодействия с информационными серверами, такими как серверы HTTP.

Текущая версия — CGI / 1.1, а CGI / 1.2 находится в стадии разработки.

Просмотр веб-страниц

Чтобы понять концепцию CGI, давайте посмотрим, что происходит, когда мы щелкаем гиперссылку для просмотра определенной веб-страницы или URL-адреса.

  • Ваш браузер связывается с веб-сервером HTTP и запрашивает URL-адрес, т.е. имя файла.
  • Веб-сервер проанализирует URL-адрес и будет искать имя файла, если найдет этот файл, а затем отправит его обратно в браузер, в противном случае отправит сообщение об ошибке, указывающее, что вы запросили неправильный файл.
  • Веб-браузер принимает ответ от веб-сервера и отображает либо полученный файл, либо сообщение об ошибке.

Однако можно настроить HTTP-сервер так, чтобы всякий раз, когда запрашивается файл в определенном каталоге, этот файл не отправлялся обратно; вместо этого он выполняется как программа, и все, что выводит эта программа, отправляется обратно в ваш браузер для отображения. Эта функция называется Common Gateway Interface или CGI, а программы называются сценариями CGI. Эти программы CGI могут быть сценарием PERL, сценарием оболочки, программой C или C ++ и т. Д.

Perl и Ruby все? Краткая история бэкенда

Схема архитектуры CGI

Поддержка и настройка веб-сервера

Прежде чем приступить к программированию CGI, убедитесь, что ваш веб-сервер поддерживает CGI и настроен для обработки программ CGI. Все программы CGI, выполняемые HTTP-сервером, хранятся в предварительно настроенном каталоге. Этот каталог называется CGI Directory и по соглашению называется / cgi-bin. По соглашению файлы PERL CGI будут иметь расширение как.cgi.

Первая программа CGI

#!/usr/bin/perl print «Content-type:text/htmlrnrn»; print »; print »; print ‘Hello Word — First CGI Program’; print »; print »; print ‘

Hello Word! This is my first CGI program

‘; print »; print »; 1;

Вывод

Hello Word! This is my first CGI program

Линия Content-type:text/htmlrnrnявляется частью HTTP-заголовка, который отправляется браузеру для понимания содержимого. Весь HTTP-заголовок будет в следующем виде

HTTP Field Name: Field Content

Тип содержимого: текст / html r n r n

Есть несколько других важных заголовков HTTP, которые вы часто будете использовать в программировании CGI.

Content-type: String

Строка MIME, определяющая формат возвращаемого файла. Пример: Content-type: text / html

Expires: Date String

Дата, когда информация становится недействительной. Это должно использоваться браузером, чтобы решить, когда страницу нужно обновить. Допустимая строка даты должна быть в формате 01 января 1998 12:00:00 GMT.

Обзор языка программирования Perl. Особенности языка программирования Perl.

Location: URL String

URL-адрес, который должен быть возвращен вместо запрашиваемого URL-адреса. Вы можете использовать это поле для перенаправления запроса в любой файл.

Last-modified: String

Дата последней модификации ресурса.

Content-length: String

Длина возвращаемых данных в байтах. Браузер использует это значение, чтобы сообщить приблизительное время загрузки файла.

Set-Cookie: String

Установите cookie, передаваемый через строку

Переменные среды CGI

Вся программа CGI будет иметь доступ к следующим переменным среды. Эти переменные играют важную роль при написании любой программы CGI.

CONTENT_TYPE

Тип данных содержимого. Используется, когда клиент отправляет прикрепленный контент на сервер. Например, загрузка файла и т. Д.

CONTENT_LENGTH

Длина информации запроса. Доступно только для запросов POST.

HTTP_COOKIE

Верните установленные файлы cookie в виде пары ключ-значение.

HTTP_USER_AGENT

Поле заголовка запроса User-Agent содержит информацию о пользовательском агенте, создавшем запрос. Название веб-браузера.

Путь к сценарию CGI.

QUERY_STRING

Информация в кодировке URL, отправляемая с запросом метода GET.

Читайте также:
Что за программа такснет

REMOTE_ADDR

IP-адрес удаленного хоста, отправляющего запрос. Это может быть полезно для ведения журнала или для аутентификации.

REMOTE_HOST

Полное имя хоста, выполняющего запрос. Если эта информация недоступна, то REMOTE_ADDR можно использовать для получения IR-адреса.

REQUEST_METHOD

Метод, использованный для отправки запроса. Наиболее распространены методы GET и POST.

SCRIPT_FILENAME

Полный путь к сценарию CGI.

SCRIPT_NAME

Имя сценария CGI.

SERVER_NAME

Имя хоста или IP-адрес сервера.

SERVER_SOFTWARE

Название и версия программного обеспечения, на котором работает сервер.

#!/usr/bin/perl print «Content-type: text/htmlnn»; print «Environmentn»; foreach (sort keys %ENV) < print «$_: $ENV
n»; > 1;

Вывод

Environment CONTEXT_DOCUMENT_ROOT: CONTEXT_PREFIX: DOCUMENT_ROOT: GATEWAY_INTERFACE: GEOIP_ADDR: GEOIP_CONTINENT_CODE: GEOIP_COUNTRY_CODE: GEOIP_COUNTRY_NAME: HTTP_ACCEPT: HTTP_ACCEPT_ENCODING: HTTP_ACCEPT_LANGUAGE: HTTP_COOKIE: HTTP_HOST: HTTP_UPGRADE_INSECURE_REQUESTS: HTTP_USER_AGENT: HTTP_VIA: HTTP_X_FORWARDED_FOR: HTTP_X_FORWARDED_PROTO: HTTP_X_HOST: PATH: QUERY_STRING: REMOTE_ADDR: REMOTE_PORT: REQUEST_METHOD: REQUEST_SCHEME: REQUEST_URI: SCRIPT_FILENAME: SCRIPT_NAME: SCRIPT_URI: SCRIPT_URL: SERVER_ADDR: SERVER_ADMIN: SERVER_NAME: SERVER_PORT: SERVER_PROTOCOL: SERVER_SIGNATURE: SERVER_SOFTWARE: UNIQUE_ID:

Как открыть диалоговое окно «Загрузка файла»?

Иногда желательно, чтобы вы хотели предоставить вариант, при котором пользователь щелкает ссылку и для пользователя появляется всплывающее диалоговое окно «Загрузка файла» вместо отображения фактического содержимого. Это очень просто и будет достигнуто через HTTP-заголовок.

Этот заголовок HTTP будет отличаться от заголовка, упомянутого в предыдущем разделе.

Например, если вы хотите сделать FileName файл, загружаемый по указанной ссылке, его синтаксис будет следующим.

#!/usr/bin/perl # HTTP Header print «Content-Type:application/octet-stream; name=»FileName»rn»; print «Content-Disposition: attachment; filename=»FileName»rnn»; # Actual File Content will go hear. open( FILE, »

Методы GET и POST

Вы, должно быть, сталкивались со многими ситуациями, когда вам нужно было передать некоторую информацию из вашего браузера на веб-сервер и, в конечном итоге, в вашу программу CGI. Чаще всего браузер использует два метода, два из которых передают эту информацию веб-серверу. Это методы GET и POST.

Передача информации с использованием метода GET

Метод GET отправляет закодированную информацию о пользователе, добавленную к запросу страницы. Страница и закодированная информация разделяются знаком? характер следующим образом -http://www.test.com/cgi-bin/hello.cgi?key1=value1Set-Cookie:UserID=XYZ;n»; print «Set-Cookie:Password=XYZ123;n»; print «Set-Cookie:Expires=Tuesday, 31-Dec-2007 23:12:40 GMT»;n»; print «Set-Cookie:Domain=www.tutorialspoint.com;n»; print «Set-Cookie:Path=/perl;n»; print «Content-type:text/htmlrnrn»; . Rest of the HTML Content.

Здесь необязательно устанавливать атрибуты cookie, такие как Expires, Domain и Path. Примечательно, что файлы cookie устанавливаются перед отправкой волшебной строки»Content-type:text/htmlrnrn.

Получить все установленные файлы cookie очень просто. Файлы cookie хранятся в переменной среды CGI HTTP_COOKIE и будут иметь следующую форму.

key1=value1;key2=value2;key3=value3.

Вот пример того, как получить файлы cookie.

Модули и библиотеки CGI

В Интернете вы найдете множество встроенных модулей, которые предоставляют вам прямые функции для использования в вашей программе CGI. Ниже приведены важные моменты.

Japanese Spanish German French Thai Portuguese Russian Vietnamese Italian Korean Turkish Indonesian Polish Hindi

Perl Advanced

  • Perl — Программирование сокетов
  • Объектно-ориентированное программирование на PERL
  • Perl — доступ к базе данных
  • Perl — Программирование CGI
  • Perl — Пакеты и модули
  • Perl — Управление процессами
  • Perl — встроенная документация
  • Perl — Ссылки на функции

Основы Perl

  • Учебник Perl
  • Perl — Введение
  • Perl — Окружающая среда
  • Perl — Обзор синтаксиса
  • Perl — Типы данных
  • Perl — переменные
  • Perl — Скаляры
  • Perl — Массивы
  • Perl — Хэши
  • Условные операторы Perl — IF . ELSE
  • Perl — циклы
  • Perl — Операторы
  • Perl — Дата и время
  • Perl — подпрограммы
  • Perl — Ссылки
  • Perl — Форматы
  • Perl — Файловый ввод-вывод
  • Perl — Каталоги
  • Perl — обработка ошибок
  • Perl — специальные переменные
  • Perl — стандарт кодирования
  • Perl — регулярные выражения
  • Perl — отправка электронной почты

Полезные ресурсы Perl

  • Вопросы и ответы Perl
  • Perl — Краткое руководство

Источник: isolution.pro

CGI на Perl. Первые шаги.

Автор не будет себя утруждать вводным курсом PERL. Для этого в Сети огромное количество материала. Здесь делается акцент на особенности программирования скриптов на PERL.

На данный момент PERL является одним из самых лучших языков CGI-программирования для Web-серверов на базе Unix. Для других платформ этот язык тоже годится.

Любой CGI-скрипт должен формировать заголовок ответа. Как это делается на PERL? Очень просто

print «Content-Type: text/html «;

Читайте также:
Программа зум что это такое в телефоне Андроид

Такой заголовок мы формируем, если наш скрипт будет выводить данные в формате HTML.
Если наш скрипт при своем выполнении будет совершать какиелибо действия, но требуется не вывод а переадресацию на какую-нибудь страницу или сайт, то пишем

print «Location: http://kuda_nibud.tuda «;

Скрипт сделает свое дело и перенаправит пользователя на адрес указанный после Location.

Теперь несколько замечаний по размещению скриптов на сервере.
Обычно скрипты размещаются в директории cgi-bin . Хотя это не всегда так. Ваш скрипт должен иметь права на запуск в системе (это о Unix). Делается это командой chmod +x script.cgi .

А теперь можно и начинать писать скрипт, и начать следует с приветствия миру.

Итак, простейший скрипт:

#!/usr/bin/perl print «Content-Type: text/html «; print «

Hello World

«;

Первая строка указывает путь к интерпертатору PERL в системе (здесь указан путь, где обычно находится PERL в системе Unix.
Вторая строка выводит заголовок.
А вот третья строка передает браузеру данные, которые браузер обрабатывает соответственно типу, переданному в заголовке.

— ХА. — скажет многоуважаемый посетитель — А не проще ли просто набрать HTML файл без всяких там скриптов?

Проще! Но если Вам необходимо чтобы страница была динамической, зависимой от действий пользователя то увы :)))) скрипт писать придется.
Для этого необходимо обработать параметры приходящие от пользователя.

Параметры в CGI-скрипт передаются с помощью переменных окружения.

Для исследования переменных окружения напишем небольшой скрипт

#!/usr/bin/perl print «Content-Type: text/html «; print «Environment «; print » «; print «Your request is:$ENV
«; print «Variables: «; print «REQUEST_METHOD=$ENV «; print «QUERY_STRING=$ENV «; print «CONTENT_LENGTH=$ENV «; print «CONTENT_TYPE=$ENV «; print «GATEWAY_INTERFACE=$ENV «; print «REMOTE_ADDR=$ENV «; print «REMOTE_HOST=$ENV «; print «SCRIPT_NAME=$ENV «; print «SCRIPT_FILENAME=$ENV «; print «SERVER_NAME=$ENV «; print «SERVER_PORT=$ENV «; print «SERVER_PROTOCOL=$ENV «; print «SERVER_SOFTWARE=$ENV «; print «HTTP_ACCEPT=$ENV «; print «HTTP_USER_AGENT=$ENV «; print » «;

При запуске этот скрипт выдаст Вам значения переменных окружения.
Можете набрать этот скрипт и поэкспериментировать с запросами.

Наверное самым главным в CGI скрипте является обработка полученного запроса и выполнение действий в соответствии с этим запросом. Конечно, если Вы используете простенькие запросы типа http://kudato.tuda/cgi-bin/script.cgi?zapros то особого анализа не требуется, здесь просто нужно считать переменную QUERY_STRING и уже потом в зависимости от содержания строки совершать какието действия.

Но если запрос будет выглядить так http://kudato.tuda/cgi-bin/script.cgi?par1=1par3=6 или Вы собираетесь обрабатывать данные из форм методом POST , то просто необходимо анализировать данные и преобразовывать их в «удобоваримый» формат.
Предлагаемый автором способ преназначен исключительно для демонстрации работы с переменными окружения. В реальной жизни следует использовать более удобный и надёжный модуль CGI.pm, входящий в стандартную поставку любого дистрибутива Perl, который к тому же обладает многими другими полезными в CGI-программировании функциями. И уж ни в коем случае не следует изобретать велосипед, пытаясь написать свой обработчик запроса, т.к. (раз вы читаете эту статью) написать лучше, чем написан CGI.pm у вас пока вряд-ли получится.

После включения этого кода в Ваши скрипты Вам остается только использовать хэш $input указывая в фигурных скобках имя параметра. Например значение $input будет равно «1», $input будет равно «val» итд.

Использование модуля CGI, как уже ранее говорилось предпочтительнее, удобнее и безопаснее.

Доступ к параметрам запроса обеспечивает функция param . Без параметров эта функция возвращает массив значений, содержащих имена ключей параметра. Для получения значения по ключу, в param нужно передать имя ключа в качестве аргумента.

Следующий пример выводит полученный запрос в формате Ключ: Значение

#!/usr/bin/perl use CGI qw/:standard/; # подключаем стандартный набор модуля CGI print header;# Выводим заголовок #(вместо print «Content-Type: text/html «;) print start_html(‘Пример’); # выводим заголовок html-документа foreach $key (param) < # пробегаемся по всем параметрам запроса # помещая ключи значений в переменную $key print «$key: «; # выводим имя ключа $value = param($key); # считываем значение ключа print $value,»» # и выводим его на экран > print end_html;

Теперь, если вы запустите этот небольшой скрипт (предварительно назвав его params.cgi ) таким образом http://some-server.com/cgi-bin/params.cgi?a=1b=2 , скрипт ее обработал и выдал выше показанный результат.

Читайте также:
Программа files x86 что это

Источник: www.internet-technologies.ru

Иллюстрированный самоучитель по Perl

Назначение CGI-программы – создать новый HTML-документ, используя данные, содержащиеся в запросе, и передать его обратно клиенту. Если такой документ уже существует, то передать ссылку на него. Какой язык можно использовать для написания CGI-программ? Сам интерфейс CGI не накладывает ограничений на выбор языка программирования. Зная, какую задачу решает CGl-программа и каким образом она получает входную информацию, мы можем назвать свойства, которыми должен обладать язык CGI-программирования.

  • Средства обработки текста. Необходимы для декодирования входной информации, поступающей в виде строки, состоящей из отдельных полей, разделенных символами-ограничителями.
  • Средства доступа к переменным среды. Необходимы, так как с помощью переменных среды данные передаются на вход CG.I-программы.
  • Возможность взаимодействовать с другими программами. Необходима для обращения к СУБД, программам обработки графики и другим специальным программам.

Выбор языка зависит и от операционной системы Web-сервера. Большая часть имеющихся серверов предназначена для работы под управлением операционной системы UNIX. Учитывая эти соображения, мы можем заключить, что язык Perl, обладающий развитыми средствами обработки текста и создания сценариев, первоначально созданный для работы в ОС UNIX и перенесенный на множество других платформ, является наиболее подходящим средством создания сценариев CGI. Кроме того, CGI-програм-мирование на языке Perl имеет поддержку в виде готовых модулей CPAN, свободно доступных в сети Internet.

CGI-сценарий на языке Perl – это программа, имеющая свою специфику. Она, как правило, генерирует HTML-документ, посылаемый клиенту в виде ответа сервера. Ответ сервера, так же, как и запрос клиента, имеет определенную структуру. Он состоит из следующих трех частей:

  1. Строка состояния, содержащая три поля: номер версии протокола HTTP, код состояния и краткое описание состояния, например:

НТТР/1.0 200 OK f запрос клиента обработан успешно НТТР/1.0 404 Not Found # Документ по указанному адресу не существует

  1. Заголовки ответа, содержащие информацию о сервере и о возвращаемом HTML-документе, например:

Date: Mon, 26 Jul 1999 18:37:07 GMT # Текущая дата и время Server: Apache/1.3.6. # Имя и номер версии сервера Content-type: text/html tt Описывает медиа-тип содержимого

  1. Содержимое ответа – HTML-документ, являющийся результатом выполнения CGI-программы.

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

Content-type: text/html

Замечание
Информацию о заголовках можно найти в спецификации протокола HTTP. Мы же ограничимся еще одним примером. Если в качестве ответа клиенту посылается статический документ, например, подтверждение о получении заполненной формы, то неэффективно каждый раз создавать его заново. Лучше создать один раз и сохранить в файле. В этом случае CGI-сценарий вместо заголовка Content-type: media-type, описывающего формат данных, формирует заголовок Location: URL, указывающий серверу местонахождение документа, который следует передать клиенту.

Заголовки отделяются от содержимого документа пустой строкой.

Напишем простейший CGI-сценарий, посылающий пользователю HTML-страницу с приветствием:

#!/usr/bin/perl print «Content-type:text/htmlnn»; print «HELLOn»; print «n»; print «Bac приветствует издательство ВХВ – Санкт-Петербургп»; print «n»;

Если поместить файл hello.cgi в каталог CGI-программ Web-сервера, а затем обратиться к нему из браузера, то браузер отобразит HTML-документ, созданный программой hello.cgi (рис. 15.2).

Замечание
Большинство Web-серверов по умолчанию предполагают, что файлы GGi-сце-нариев находятся в специальном каталоге, обычно называемом cgi-bin. Можно настроить сервер таким образом, чтобы все файлы, находящиеся в определенном каталоге, он воспринимал не как обычные документы, а как выполняемые сценарии.

Можно также указать серверу, что все файлы с определенным расширением (например,.cgi) должны рассматриваться как CGI-сценарий. Когда пользователь открывает URL, ассоциированный с CGI-программой. клиент посылает запрос серверу, запрашивая файл. Сервер распознает, что запрошенный адрес является адресом CGI-программы, и пытается выполнить эту программу. Подробности конфигурирования Web-серверов можно найти в соответствующей литературе и документации на конкретный сервер.

Иллюстрированный самоучитель по Perl › Язык Perl и CGI-программирование › CGI-сценарии

Рис. 15.2. Web-страница, сформированная программой hello.cgi

Источник: samoychiteli.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru