Как создать cgi программу

Приложение common Gateway Interface (CGI) может быть написано на любом языке программирования, который может получить доступ как к переменным среды, так и к STDIN или STDOUT. Из-за мощной возможности обработки текста языка программирования Visual Basic многие веб-разработчики хотят писать программы CGI в Visual Basic. В этой статье показаны методы написания приложений CGI в Visual Basic и представлен простой пример CGI Visual Basic.

Дополнительные сведения

Корпорация Майкрософт предоставляет примеры программирования только в целях демонстрации без явной или подразумеваемой гарантии. Данное положение включает, но не ограничивается этим, подразумеваемые гарантии товарной пригодности или соответствия отдельной задаче. Эта статья предполагает, что пользователь знаком с представленным языком программирования и средствами, используемыми для создания и отладки процедур. Специалисты технической поддержки Майкрософт могут пояснить работу той или иной процедуры, но модификация примеров и их адаптация к задачам разработчика не предусмотрена.

Как создавать VFX эффекты БЕЗ СТРАДАНИЙ? Секреты создания ГОЛЛИВУДСКОЙ ГРАФИКИ и КОМПОЗИТИНГА

Получение переменных среды

Чтобы получить переменную среды, используйте функцию Environ$ в Visual Basic следующим образом:

VALUE = Environ$(NAME)

NAME — это переменная среды, которую требуется извлечь. Его значение возвращается в VALUE .

Чтение из STDIN и запись в STDOUT

Используйте функцию Win32 ReadFile для чтения и STDIN WriteFile функцию для записи в STDOUT . Эти функции требуют предоставления дескриптора для или STDIN STDOUT . Функцию можно использовать GetStdHandle для получения дескриптора в или STDOUT STDIN . В этой статье псевдоним используется для GetStdHandle функции для упрощения вызовов функции. Ниже приведены объявления для этих функций.

Public Declare Function stdin Lib «kernel32» Alias «GetStdHandle» _ (Optional ByVal Handletype As Long = STD_INPUT_HANDLE) As Long Public Declare Function stdout Lib «kernel32» Alias «GetStdHandle» _ (Optional ByVal Handletype As Long = STD_OUTPUT_HANDLE) As Long Public Declare Function ReadFile Lib «kernel32″ _ (ByVal hFile As Long, ByVal lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, _ lpNumberOfBytesRead As Long, Optional ByVal lpOverlapped As Long = 0kernel32″ _ (ByVal hFile As Long, ByVal lpBuffer As Any, ByVal nNumberOfBytesToWrite As Long, _ lpNumberOfBytesWritten As Long, Optional ByVal lpOverlapped As Long = 0 Public Const STD_OUTPUT_HANDLE = -11 Public Const STD_OUTPUT_HANDLE = -11AUTH_TYPE» Public Const CGI_CONTENT_LENGTH As String = «CONTENT_LENGTH» Public Const CGI_CONTENT_TYPE As String = «CONTENT_TYPE» Public Const CGI_GATEWAY_INTERFACE As String = «GATEWAY_INTERFACE» Public Const CGI_HTTP_ACCEPT As String = «HTTP_ACCEPT» Public Const CGI_HTTP_REFERER As String = «HTTP_REFERER» Public Const CGI_HTTP_USER_AGENT As String = «HTTP_USER_AGENT» Public Const CGI_PATH_INFO As String = «PATH_INFO» Public Const CGI_PATH_TRANSLATED As String = «PATH_TRANSLATED» Public Const CGI_QUERY_STRING As String = «QUERY_STRING» Public Const CGI_REMOTE_ADDR As String = «REMOTE_ADDR» Public Const CGI_REMOTE_HOST As String = «REMOTE_HOST» Public Const CGI_REMOTE_USER As String = «REMOTE_USER» Public Const CGI_REQUEST_METHOD As String = «REQUEST_METHOD» Public Const CGI_SCRIPT_NAME As String = «SCRIPT_NAME» Public Const CGI_SERVER_NAME As String = «SERVER_NAME» Public Const CGI_SERVER_PORT As String = «SERVER_PORT» Public Const CGI_SERVER_PROTOCOL As String = «SERVER_PROTOCOL» Public Const CGI_SERVER_SOFTWARE As String = «SERVER_SOFTWARE» Public Declare Function Sleep Lib «kernel32» _ (ByVal dwMilliseconds As Long) As Long Public Declare Function stdin Lib «kernel32» Alias «GetStdHandle» _ (Optional ByVal Handletype As Long = STD_INPUT_HANDLE) As Long Public Declare Function stdout Lib «kernel32» Alias «GetStdHandle» _ (Optional ByVal Handletype As Long = STD_OUTPUT_HANDLE) As Long Public Declare Function ReadFile Lib «kernel32″ _ (ByVal hFile As Long, ByVal lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, _ lpNumberOfBytesRead As Long, Optional ByVal lpOverlapped As Long = 0kernel32″ _ (ByVal hFile As Long, ByVal lpBuffer As Any, ByVal nNumberOfBytesToWrite As Long, _ lpNumberOfBytesWritten As Long, Optional ByVal lpOverlapped As Long = 0=») sReadBuffer = Mid$(sReadBuffer, iPos + 1)’ Construct and send response to the client sWriteBuffer = «HTTP/1.0 200 OK» «Content-Type: text/html» vbCrLf Hello » hStdOut = stdout() WriteFile hStdOut, sWriteBuffer, Len(sWriteBuffer) + 1, lBytesWritten WriteFile hStdOut, sReadBuffer, Len(sReadBuffer), lBytesWritten End Sub

Читайте также:
Лучшая программа для чистки андроида от мусора на русском

HtmL-форма для тестирования CGI (Test.htm)

С ЧЕГО НАЧАТЬ ИЗУЧЕНИЕ 3D | CGI


Testing VB CGI Name

Действия по сборке CGI Hello.exe файла:

  1. Создайте новый проект в качестве стандартного .exe проекта.
  2. Удаление формы из проекта.
  3. Добавьте модуль в проект и приведите к проекту имя HELLO.
  4. Задайте Sub Main в качестве запуска объекта (в разделе «Свойства проекта»).
  5. Скопируйте приведенный выше код Visual Basic и вставьте его в модуль.
  6. Сделайте Hello.exe.
  • В примере кода показано, как обрабатывать HTTP-запрос POST . Для обработки запроса GET приложению CGI необходимо получить переменную QUERY_STRING среды. Переменная QUERY_STRING содержит пары «имя-значение», разделенные в Color=Red . Используется кодирование URL-адресов, все пробелы преобразуются в +, а все специальные символы, такие как ! преобразуются в значения HEX ASCII. Другими словами, строка «Hello, World!» представлена как «Hello,+World%21». В приложениях CGI Visual Basic необходимо реализовать весь код анализа.
  • Так как приложение CGI запускается службой, оно может не иметь доступа к общим сетевым ресурсам.
  • Имейте в виду, что CGI работает как служба, которая взаимодействует с сервером. Поэтому формы, элементы управления и поля сообщений визуального интерфейса совершенно не имеют смысла. По сути, окно сообщения приведет к тому, что приложение CGI перестает отвечать.
  • Обработка ошибок должна выполняться в коде CGI в Visual Basic, чтобы не отображало окно сообщения об ошибке по умолчанию. Вы можете записывать сообщения об ошибках на сервере или записывать их в браузер пользователя.
  • Отладчики Visual C могут выполнять отладку приложений, написанных на Языке Visual Basic. Таким образом, можно использовать описанные ниже методы отладки CGI. Чтобы отладить приложение Visual Basic с помощью Visual C, выберите «Компилировать в машинный код», а затем выберите «Создать символьную отладочную информацию и без оптимизации». После завершения и создания .exe Visual C может подключиться к работающему приложению CGI, написанному на Visual Basic.
  • Чтобы протестировать приложение CGI, скопируйте его в виртуальный каталог IIS с разрешениями на выполнение.
  • Имейте в виду, что ошибки или диалоговые окна среды выполнения в коде Visual Basic могут привести к тому, что приложение CGI перестает отвечать. Если приложение CGI перестает отвечать, его можно запустить в отладчике Visual Studio.

Ссылки

  • RFC 2068, протокол передачи гипертекстов
  • RFC 1738, универсальные указатели ресурсов (URL-адрес)

Источник: learn.microsoft.com

Perl и CGI-программы – особенности использования

Что такое CGI и PERL

Важно понимать, что CGI – не язык программирования, а протокол передачи данных веб-серверу через stdin и их прием из stdout. В качестве обработчика команд используется любая программа с поддержкой функций потокового ввода-вывода. Например, написанная на языке Perl. Главное, что от скрипта требуется «умение» заполнять таблицы в базе данных и получать данные из них путем подачи запроса, чего никогда не сделать средствами HTML.

Читайте также:
Как создать свою программу на основе excel

CGI и PERL

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

  1. Подходит для парсинга текстовых данных в справочных системах.
  2. Он удобен при обработке массивов непонятных данных в БД веб-ресурсов.
  3. Требуется вывод информации на экран, в файл или график на сайте.

В качестве альтернативы Perl все чаще применяется язык программирования Python, но администраторы «старой закалки» продолжают придерживаться классики создания CGI-скриптов, так как поддержка Perl «по умолчанию» имеется в большинстве дистрибутивов Linux. Поэтому программы на нем начинают работать без предварительной подготовки сервера. Формально же скрипты можно писать на чем угодно – хоть на C/C++, Pascal, Java или Visual Basic.

Комьюнити теперь в Телеграм
Подпишитесь и будьте в курсе последних IT-новостей

Использование готовых скриптов

Если CGI-скрипт уже готов (используется стандартный модуль), перед использованием его нужно скопировать на сервер хостинга. Выполняется процедура при помощи файлового менеджера в панели управления или через FTP-доступ, например программой FileZilla. Выбор расположения остается на усмотрение пользователя; к программе можно обращаться независимо от имени каталога или подкаталога, но рекомендуется придерживаться определенных стандартов.

Так, внутри скриптов обязательно указывается путь к интерпретатору используемой платформы для программирования:

  1. Perl – /usr/bin/perl.
  2. Python – /usr/local/bin/python.

Если здесь допустить ошибку, программный код исполнятся не будет. То же происходит, если в ПО предусмотрено обращение к базе данных MySQL – пользователю понадобится внести в программу путь к ней, логин и пароль доступа. При изменении последнего корректировка CGI-скрипта обязательна, иначе он перестанет работать. Местоположение файлов в популярных CMS выясняется в службе технической поддержки или в служебной документации.

Написание простейшего CGI-скрипта

При работе в среде операционной системы Windows для написания кода понадобится специальная программа. Например, подойдет специализированный текстовый редактор Notepad++ (стандартный Блокнот для таких целей не подходит). Сам код строится вокруг переменных окружения и потоков ввода-вывода информации. По сути, CGI-скрипты являются обработчиками отдельных команд и не являются «полноценной» программой.

CGI и PERL скрипты

  1. Стандартный поток ввода (stdin) – скрипт получает информацию с клавиатуры, сокета, из локального (удаленного) файла или из результатов работы основной программы.
  2. Переменные окружения (Environment Variables) – переменные, требуемые при выполнении кода скрипта. Определяются пользователем или сервером.
  3. Стандартный поток вывода (stdout) – означает вывод на экран результатов вычислений или их сохранение в файл, передача в сокет, входной поток другой программы или на принтер.

Главное, избегать использования SHELL, который снижает безопасность сайта. В качестве примера простейшего CGI-скрипта приведем код для вывода текущей даты и команду HTML, при помощи которой будет происходить обращение к программе (из любой части страницы, хоть в нескольких местах одновременно).

#!/bin/sh echo Content-type: text/html echo echo «

Today is » date echo «

»

При помощи специального виджета, установленного в CMS, или путем ручного редактирования шаблона в нужный участок HTML вставляется код:

В приведенном примере решена типовая ошибка новичков. Она заключается в отсутствии метки о типе выводимого результата (строка Content-type: text/html). После нее располагается пустая строка для указания, что следом идет непосредственно программный код.

Просмотр установленных модулей PERL

Проверить ранее подключенные PERL-модули можно командой vim. Перед ее вводом необходимо подключиться к серверу хостинга по защищенному каналу SSH. После авторизации нужно ввести в консоли:

vim modules.pl

В результате будет создан файл с указанным названием. Следующий шаг – открыть его в текстовом редакторе и изменить содержимое на следующий код:

Читайте также:
Как установить программы с одного айфона на другой

#!/usr/bin/perl -w use ExtUtils::Installed; $installed = ExtUtils::Installed->new(); foreach $module ($installed->modules())< printf «Module: %sttVersion: %sn», $module, $installed->version($module); >

Выйти из файла с сохранением и запустить его на исполнение можно командой perl ./modules.pl. Процедура по поиску подключенных CGI-скриптов востребована, еслина сайте возникают ошибки 403 или 500. Первая появляется из-за некорректной настройки прав доступа (необходимо установить на файлах скриптов доступ 755), вторая же происходит из-за сбоя транслятора Perl или из-за синтаксической/логической ошибки в самом коде. В любом случае сначала нужно убедиться в том, что скрипт подключен.

Источник: timeweb.com

СGI-программирование

Если в течение последних нескольких лет вы не сидели взаперти в деревянной хижине без злектричества, то вы наверняка слышали о World Wide Web. Web-адреса (больше известные как URL) сейчас можно найти везде: на рекламних плакатах и в титрах кинофильмов, на обложках журна-лов и на страницах других изданий, от газет до правительственных отчетов.

Многие из самых интересных Web-страниц включают разного рода формы, предназначенные для ввода данных пользователем. Вы вводите данные в такую форму и щелкаете на кнопке или рисунке. Зто действие запускает некую программу на Web-сервере, которая изучает введенные вами данные и генерирует новую выходную информацию. Иногда зта программа (широко известная как программа общего шлюзового интерфейса, или CGI-программа) представляет собой просто интерфейс к существующей базе данных; она преобразует введенные вами данные в нечто понятное для зтой базы данных, а выходную информацию базы данных — в нечто понятное для Web-броузера (обычно в HTML-форме).

CGI-программы не просто обрабатывают данные, введенные в форму. Они вызываются и тогда, когда вы щелкаете на графическом изображении, и фактически могут использоваться для отображения всего того, что «видит» ваш броузер. Web-страницы с CGI-поддержкой — зто не безликие и нудньге документы, а удивительно живые страницы с динамически изменяющимся содержимым. Именно динамическая информация делает Web интересньш и интерактивным источником информации, а не просто средством, предна-значенньш для чтения книги с терминала.

Независимо от того, во что вас, возможно, заставят поверить все зти отскакивающие шарики и прыгающие обьявления, Web содержит также большой обіем текста. Поскольку мы имеем дело с текстом, файлами, сетевыми коммуникациями и в некоторой степени с двоичными данными, то Perl идеально подходит для Web-программирования.

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

Если рассматривать зту главу как отдельное пособие, следует отметить, что ее (как и любого другого документа обьемом меньше пары сотен страниц) недостаточно для изучения более сложных тем, затронутых здесь, в частности обьектно-ориентированного программирования и методов использования различных типов ссылок и запросов в WWW. Однако, будучи средством всего лишь предварительного ознакомления с тем, что вас ждет, представленные здесь примеры и пояснення к ним, возможно, побудят вас подробнее ознакомиться с затронутыми темами и дадут вам ориентиры для выбора соответствующих учебников. А если вы любите учиться на практико, они помогут вам сразу написать некоторые полезные программы на основе тех моделей, которые здесь представлены.

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