что такое cgi скрипты

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

Разработчики сайтов и администраторы нередко сталкиваются со скриптами CGI (микросценариями обработки текстовых данных). Они применяются при создании интерактивных страниц, содержание которых зависит от действий пользователя. Например, это могут быть формы регистрации или отправки комментариев. Также есть «невидимая» область применения – сбор и обработка информации о посетителях при помощи файлов cookies.

Что такое CGI и PERL

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

что такое cgi скрипты. 23c70d0799a91386123d740d485f836a. что такое cgi скрипты фото. что такое cgi скрипты-23c70d0799a91386123d740d485f836a. картинка что такое cgi скрипты. картинка 23c70d0799a91386123d740d485f836a. Разработчики сайтов и администраторы нередко сталкиваются со скриптами CGI (микросценариями обработки текстовых данных). Они применяются при создании интерактивных страниц, содержание которых зависит от действий пользователя. Например, это могут быть формы регистрации или отправки комментариев. Также есть «невидимая» область применения – сбор и обработка информации о посетителях при помощи файлов cookies.

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

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

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

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

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

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

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

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

что такое cgi скрипты. f66e68403117157c5cf9fa58c4919ac7. что такое cgi скрипты фото. что такое cgi скрипты-f66e68403117157c5cf9fa58c4919ac7. картинка что такое cgi скрипты. картинка f66e68403117157c5cf9fa58c4919ac7. Разработчики сайтов и администраторы нередко сталкиваются со скриптами CGI (микросценариями обработки текстовых данных). Они применяются при создании интерактивных страниц, содержание которых зависит от действий пользователя. Например, это могут быть формы регистрации или отправки комментариев. Также есть «невидимая» область применения – сбор и обработка информации о посетителях при помощи файлов cookies.

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

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

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

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

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

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

Источник

Библиотека Интернет Индустрии I2R.ru

Малобюджетные сайты.

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

Контент и авторское право.

Что такое CGI?

Е сли это программа, то она должна иметь любой приемлемый для конкретной операционной системы исполняемый формат. Программы можно писать на чем угодно: C/C++, Pascal, Java, Visual и просто Basic, delphi и т.д.

Е сли это скрипт (сценарий), то на операционной системе, под которой крутиться веб-сервер должен быть соответствующий интерпретатор сценариев: shell, perl, tcl/tk, command.com и т.д.

Механизм работы CGI программ

Б ольшинство примеров в этом руководстве написано на shell только для того, чтобы упростить изложение материала.

С огласно последним веяниям по соблюдению безопасности не рекомендуется использование shell для написания CGI скриптов.

1.1 Вызов CGI без параметров

П ростейший скрипт, выводящий текущую дату: #!/bin/sh echo Content-type: text/html echo echo «

Today is » date echo «

1.2 Передача параметров CGI скрипту или программе

П ри использовании GET параметры добавляются к запрашиваемому URL и его можно вызывать таким образом: http://какой-то_хост/cgi-bin/какой-то_скрипт?параметры что позволяет делать на такой скрипт ссылки в HTML документах. А на сервере переданные параметры присваиваются переменной QUERY_STRING.

Текст самого скрипта: #!/bin/sh echo Content-type: text/html echo echo «

Вы посылали вот это:

Н о применение метода GET для передачи параметров, содержащих конфиденциальную информацию недопустимо, т.к. в данном случае вся эта информация передается открыто.

М етод POST позволяет обеспечить конфиденциальность при передаче параметров скрипту. Но он передает параметры на стандартный поток ввода и для этого приходится использовать формы. Сервер не посылает скрипту EOF в конце передачи. Вместо этого вам придется использовать пременную окружения CONTENT_LENGTH, чтобы определить какой объем данных вам надо считать из stdin.

Пишем счетчик

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

Э та глава руководства будет скорее полезна тем, кому интересен именно механизм работы счетчиков, поскольку все прилагаемые примеры особыми «наворотами» по части настроек, администрения, и т.п. не обладают. Более «навороченые», готовые к эксплуатации счетчики ищите на Altavista, Yahoo и др. поисковых серверах. Или спрашивайте в соответствующих конференциях новостей (relcom.www.users, relcom.www.support; в фидошных эхах ru.internet.*).

2.1 Типы счетчиков


2.2 Cчетчик посещений работающий как SSI

В от тут будем считать :
(нажимайте Reload пока не надоест)

Э тот счетчик текстовый, т.е. скрипт возвращает просто текст, который и показывается. Аналогичным образом можно выводить и картинки. Для этого нужно, чтоб вместо текстовых цифр выводились тэги img src=»http://www.i2r.ru/static/260/%D0%BA%D0%B0%D1%80%D1%82%D0%B8%D0%BD%D0%BA%D0%B0_%D1%81_%D1%81%D0%BE%D0%BE%D1%82%D0%B2%D0%B5%D1%82%D1%81%D0%B2%D1%83%D1%8E%D1%89%D0%B5%D0%B9_%D1%86%D0%B8%D1%84%D1%80%D0%BE%D0%B9″. Пытливый читатель легко догадается, что количество тегов img src. равно количеству цифр в значении возвращаемом счетчиком.

В ызов этого счетчика в теле документа осуществляется командой:

2.3 Счетчик не использующий SSI

П оскольку данный тип счетчиков является самым популярным в Интернете, то алгоритм его работы рассмотрим более подробно.

Server side includes


3.1 Что такое SSI


3.2 Основные SSI директивы

CGI скрипту передаются так же значения переменных PATH_INFO и QUERY_STRING оригинального запроса клиента.

3.3 SSI переменные окружения


3.4 Настройка сервера

Д ля того, чтобы серевер знал, в каком месте в документе подставлять данные, он должен этот документ проанализировать. Анализируемые сервером документы называются server-parsed документами.

Не следует забывать и о том, что бесполезно включать вызов SSI в CGI программы, поскольку их вывод сервером не анализируется.

Для получения более детальной информации по конфигурированию вашего сервера на предмет использования SSI читайте документайию на ваш сервер.

Приложения


Приложение 1. Переменные окружения сервера

Н иже приведен список основных переменных окружения сервера с краткими описанием назначения.В данном случае сервер Apache 1.2.5 с модулем PHP/FI-2.0.1. Для других веб-серверов (MS IIS, Netscape, NCSA httpd, и т.д.) переменные могут отличаться.

Источник

Что такое cgi скрипты

CGI (от англ. Common Gateway Interface — «общий интерфейс шлюза») — стандарт интерфейса, используемого для связи внешней программы с веб-сервером. Программу, которая работает по такому интерфейсу совместно с веб-сервером, принято называть шлюзом, хотя многие предпочитают названия «скрипт» (сценарий) или «CGI-программа».

Упрощенная модель, иллюстрирующая работу CGI:

что такое cgi скрипты. cgi. что такое cgi скрипты фото. что такое cgi скрипты-cgi. картинка что такое cgi скрипты. картинка cgi. Разработчики сайтов и администраторы нередко сталкиваются со скриптами CGI (микросценариями обработки текстовых данных). Они применяются при создании интерактивных страниц, содержание которых зависит от действий пользователя. Например, это могут быть формы регистрации или отправки комментариев. Также есть «невидимая» область применения – сбор и обработка информации о посетителях при помощи файлов cookies.

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

Как работает CGI?¶

Обобщенный алгоритм работы через CGI можно представить в следующем виде:

Области применения CGI¶

Наиболее частая задача, для решения которой применяется CGI — создание интерактивных страниц, содержание которых зависит от действий пользователя. Типичными примерами таких веб-страниц является форма регистрации на сайте или форма для отправки комментария. Другая область применения CGI, остающаяся за кулисами взаимодействия с пользователем, связана со сбором и обработкой информации о клиенте: установка и чтение «печенюшек»-cookies; получение данных о браузере и операционной системе; подсчет количества посещений веб-страницы; мониторинг веб-трафика и т.п.

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

CGI — это не язык программирования! Это простой протокол, позволяющий веб-серверу передавать данные через stdin и читать их из stdout. Поэтому в качестве CGI-обработчика может использоваться любая серверная программа, способная работать со стандартными потоками ввода-вывода.

Источник

Что такое cgi скрипты

Глава 16. CGI и сбор данных

Итак, в данную главу вошли следующие разделы:

Если вы просто заполните электронный бланк, нарисованный на веб-странице, и будете плясать с бубном вокруг компьютера, вряд ли произойдет какая-то обработка данных этого бланка. Кнопка Отправить на всех формах, написанных нами в предыдущей главе, посылала данные в никуда. Дело в том, что на том конце провода, то есть на сервере, нет скрипта (то есть сценария, программы), способного обработать информацию, поступающую от пользователя. Эта глава посвящена этим са мым обработчикам. В главах 17 и 18 вы узнаете о том, что JavaScript — вполне под ходящая среда для осуществления операций над некоторыми типами данных.

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

Форма — это всего лишь руль, педали и панель приборов интерактивности; CGI-скрипты — это ее двигатель. Они отвечают на пользовательские запросы, обрабатывают данные, ведут счетчик посетителей. Таким образом, именно скрипты взаи модейапвуют с пользователями, а формы лишь отражают это взаимодействие.

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

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

Интерпретируемым языком называется такой язык программирования, который не требует для выполнения сценария или программы трансляции исходного кода в машинный. До момента запуска скрипт выглядит точно таким образом, как он был написан программистом. Только при запуске интерпретатор языка быстро переводит программу в машинные коды, распознаваемые сервером. Этот дополнительный шаг делает процесс работы сценария чуть более растянутым, но зато интерпретируемые программы гораздо проще редактировать и по необходимости обновлять.

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

Даже если вы не знакомы с Unix, думаю, вы догадались, что здесь происходит. В первой строке (# /bin/sh) описывается системная оболочка, под которую написана программа. Если бы мы писали скрипт под Windows NT, эту строку следовало бы исклю чить. (Если вам словосочетание «системная оболочка» ни о чем не говорит, то на данном этапе вы можете опустить эту строку, не задумываясь над ее содержимым.)

Во второй строке (echo «Content-type: text/html») используется команда echo. Здесь говорится о том, данные какого типа (в MIME-формате) сейчас последуют. (Команда echo — это общий прием командных файлов и сценариев для эмуляции нажатия соответствующих клавиш пользователем на клавиатуре.) Что касается MIME, то это метой доставки бинарных данных с использованием исключительно набора символов таблицы ASCII. На сегодняшний день зарегистрированы сотни форматов, но примени тельно к CGI-приложениям имеет смысл назвать два наиболее популярных: text/html (для HTML- и XHTML-вывода) и text/plain (вывод обычного текста).

Третья строка (echo » «) создает пустое пространство, сообщая серверу о том, что далее следуют данные, описанные в предыдущей строке с помощью Content-type.

Наконец, четвертая и пятая строки — это, собственно, код HTML. Через сервер он передается па браузер и интерпретируется последним так, будто просто считывается из файла.

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

Несмотря на то что так и не было принято единого соглашения между серверами, все-таки большинство CGI-npoграмм устанавливается в специально отведенные для них каталоги. Обычно это подкаталог со стандартным названием cgi-bin. Если вам не разрешают устанавливать свои программы в этот каталог, нужно утрясти этот вопрос с системным администратором или представителем поставщика услуг Интернета. У них же, видимо, придется узнавать, как инсталлировать скрипт (впрочем, процесс обычно сводится к копированию его с вашего жесткого диска на сервер в соответствующий каталог). Каталог cgi-bin не обязательно будет называться именно так, более того, он вообще может располагаться где-нибудь в довольно странном месте на сервере (например, на многих Mac-машинах, имеющих юниксоидное ядро системы CGI-скрипты хранятся в папке/Library/WebServer/CGI-Executabtes/, а обращение к ним происходит с помощью стандартного cgi-bin-ориентированного URL).

Принцип работы скриптов

Мы не будем вникать во все тонкости процесса создания скриптов, а ограничимся только базовой теорией, стоящей за ними. Вы уже знаете, что скрипты — это специализированные программы, принимающие некоторые данные и/или создающие в ответ какие-нибудь HTML-страницы. Все начинается с вызова скрипта. Для этого может, например, использоваться кнопка подтверждения на форме (вспомните предыдущую главу). Когда сервер обнаруживает вызов, он пытается найти программу для его обработки в каталоге cgi-bin и сообщает ей о том, что пришла пора немного поработать. Вначале скрипт проверит метод передачи данных. Потом отыщет имена и значения тех переменных, которые он знает. Если скрипт к тому же знает, что с этими переменными делать, он выполнит все инструкции и создаст «благодарственное письмо» пользователю за то, что тот окончил сен тяжкий труд по заполнению бланка, или же выведет на экран что-то еще в этом духе.

Скрипты можно вызывать и «напрямую», даже не имея электронного бланка на своей веб-странице. Они могут быть частью гиперссылкп или даже, к примеру, содержать URL графического файла. Такой подход используется для запуска либо очень простых скриптов, либо очень сложных. «Очень простой» скрипт может выводить «цитату дня», произвольное число или счетчик страниц. «Очень слож ный» может отвечать за большое веб-приложение, например заказ железподорож ных билетов по системе «Экспресс-2».

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

Как я получаю данные из формы

В главе 15 говорилось о том, что есть два метода передачи данных на сервер: с по мощью либо get, либо post.

Эта строка обычно ограничена одним килобайтом (1000 символов а то и еще сильнее. Поэтому данный метод не очень популярен.

Термин «строка» в программировании означает некоторый набор символов, доступ к которому осуществляется по имени переменной. В нашем случае эта переменная называется QUERY_STRING. Вы уже, наверное, догадываетесь, что нужно писать в скрипте? Правильно, нужно заставить его обработать строку, написав ее имя: QUERY_STRING.

Метод post передает данные на stdin («standard in», стандартное устройство вво да) с сохранением их в переменной CONTENT_LENGTH. Это производит тот же эффект как если бы они набирались пользователем на сервере. Задача скрипта — произве сти анализ и выделить нужные данные из всего набора.

Под анализом в данном случае подразумевается операция, аналогичная грамматическому разбору слов. Из пришедших разнородных данных нужно выбрать что-то, с чем может paбо тать компьютер. То есть выяснить структуру переменных и уяснить их значения.

Можно выделить две стадии приема данных: декодирование и анализ. Во избежание потери данных передаваемая информация кодируется на стороне браузера: например, пробелы заменяются на «+>>, а символы, не являющиеся текстовыми, заменяются знаком «%» и их шестнадцатеричным кодом. Например, восклицательный знак передается так: «%21».

Есть программы, специально предназначенные для декодирования данных, передаваемых по Сети. Для серверов Windows и Linux существует написанная для этих целей на Perl библиотека cgi-bin.pl. Mac-серверы могут использовать программу Parse для CGI-скриптов на AppleScript.

После декодирования получается входной текст следующего формата (амперсант просто отделяет пары переменных-значений друг от друга):

Пример из реальной жизни:

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

Значения, извлеченные из потока данных, будут выглядеть как-то так:

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

Вот и все, что касается основ совместной работы форм и скриптов.

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

В главе 15 мы уже упоминали об интересной возможности использования mail to: в составе URL атрибута action. Это заменяет прямое обращение к скрипту. Все, что происходит дальше, уже известно: данные кодируются и посылаются на указанный адрес e-mail (предполагается, что браузер умеет отправлять сообщения). Рассмотрим пример с использованием свойства mailto:

Когда пользователь щелкает на кнопке подтверждения отправки формы, результаты передаются не скрипту, а на указанный e-mail. Это очень полезная возможность, особенно если у вас нет доступа к каталогу CGI сервера. Обратная сторона медали, впрочем, весьма настораживает: да, мы приняли сообщение по электронной почте. Что с ним делать дальше? Как обрабатывать? Похоже, просто читать. Тоже довольно наивное заявление, потому что «просто» читать не удастся. Сейчас поясню почему.

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

что такое cgi скрипты. 16.1. что такое cgi скрипты фото. что такое cgi скрипты-16.1. картинка что такое cgi скрипты. картинка 16.1. Разработчики сайтов и администраторы нередко сталкиваются со скриптами CGI (микросценариями обработки текстовых данных). Они применяются при создании интерактивных страниц, содержание которых зависит от действий пользователя. Например, это могут быть формы регистрации или отправки комментариев. Также есть «невидимая» область применения – сбор и обработка информации о посетителях при помощи файлов cookies.

Рис. 16.1. Вот какое сообщение придет при отправке данных формы по электронной почте

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

Вторая проблема является следствием первой. Либо нужно вручную декодировать, обрабатывать и анализировать данные, либо писать специальную программу умеющую работать с редактором сообщений. И тот и другой подход, впрочем, все равно применим только для небольших сайтов с малым числом потенциальных посетителей. Основное преимущество заключается в отсутствии необходимости написания CGI-скриптов и размещения их в каталоге на сервере. А можно пред положить и более элегантное решение: написать на Visual Basic Scripting небольшую программу для автоматической обработки поступающих по электронной почте данных.

Можно отметить еще одну проблему данного подхода. Пользователь нажимает на кнопку Отправить и видит, что ничего не происходит. А ничего и не произойдет, поскольку на той стороне нет скрипта, способного хотя бы обновить страницу. В результате на странице придется разместить обычную кнопку Назад, чтобы пользователь мог уйти с вашей формы. Только, чтобы было понятно, как действовать, в такой кнопке имеет смысл написать: Нажмите здесь после отправки формы. Поскольку надпись получается довольно длинная, можно сделать просто гиперссылку.

Существует и другой вариант, более автоматизированный: использовать JavaScript для обработки нажатий кнопок и загрузки веб-страниц. Детальное описание этого метода приведено в главе 18.

Если у вас есть доступ к каталогу cgi-bin, но вы не можете самостоятельно написать скрипт, воспользуйтесь готовым шлюзом между формой и e-mail. Его можно найти, например, на сайте http://www.worldwidemart.com/ scripts/formmail.shtml. Такое решение я считаю более элегантным, поскольку после отправки формы пользователь попадает на новую веб-страницу. Кроме того, при этом вы получите данные формы в пригодном для чтения виде.

Выходная информация скрипта

Вывод данных из скрипта на внешнее устройство — дело нехитрое. Поскольку потоке stdout («стандартное устройство вывода») направляется на браузер, вам нужно написать pri nt (это касается языка Perl и некоторых других), echo (командные файлы Unix и Windows), I print (язык С) или какие-то другие команды, выводящие данные на экран, терминал или консоль. Эти команды используются для вывода HTML-кода точно так же, как если бы вы набирали их в текстовом редакторе.

Рассмотрим часть скрипта на Perl:

Помните о том, что все эти фиктивные stdin и stdout представляют собой эмуляцию нажатий виртуальным пользователем сервера кнопок клавиатуры. Что касается, в частности, вывода на stdout, то это действие заменяет собой вывод документа на неб-браузер. На самом же деле данные отсылаются на браузер удаленного компьютера, который интерпретирует их и выводит на экран.

что такое cgi скрипты. 16.2. что такое cgi скрипты фото. что такое cgi скрипты-16.2. картинка что такое cgi скрипты. картинка 16.2. Разработчики сайтов и администраторы нередко сталкиваются со скриптами CGI (микросценариями обработки текстовых данных). Они применяются при создании интерактивных страниц, содержание которых зависит от действий пользователя. Например, это могут быть формы регистрации или отправки комментариев. Также есть «невидимая» область применения – сбор и обработка информации о посетителях при помощи файлов cookies.

Рис. 16.2. Результат работы программы с применением команды printenv. Здесь показано, как можно выводить переменные окружения. Тот же самый принцип используется для вывода любых других переменных

Во многих языках программирования встретившийся в приведенном примере управляющий символ \п означает перевод каретки. В данном случае мы тем самым добиваемся размещения на одной строке исходного кода скрипта сразу нескольких строк кода на HTML. Если этот фактор учесть, то текст программы становится понятным и привычным.

Как бы ни выглядела команда, выводящая данные на stdout, с ее помощью появляется возможность автоматически генерировать веб-страницы. Тот же самый подход можно применять, определяя в скрипте переменные, значения которых должны выводиться. На рисунке 16.2 показан пример страницы, созданной с помощью команд printenv CGI-скрипта. Эти команды предназначены специально для вывода переменных окружения, которые сервер делает доступными для нужд ваших программ.

Поиск и использование скриптов

Мы не ставим своей задачей с помощью этой книги научить вас писать скрипты. Для начала можно научиться пользоваться уже готовыми. Есть множество Интер нет-ресурсов, предоставляющих такую возможность. Если повезет, вам могут по пасться скрипты, практически не требующие знания языков программирования. В таком случае вы можете отредактировать их, подогнав под свои нужды: вставить свои имена переменных, изменить дизайн автоматически создаваемых страниц и т. д. Это особенно легко сделать, если есть хорошая документация к программе.

В этом разделе вам встретятся адреса сайтов, на которых можно найти скрипты для самых разнообразных целей. Если скрипт небольшой, иногда проще написать его самому, если большой, то при наличии документации, в принципе, можно сде лать что-то на основе чужих разработок. Краткое описание языка JavaScript, при меры программ на котором также встретятся далее, можно прочесть в главе 17.

Работа с готовыми скриптами

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

Мне кажется, что лучше всего начать со следующего сайта: http://cgi.resourceindex.com. На этом сайте можно найти ссылки на сотни CGI-скриптов, как бесплатных, так и коммерческих. Здесь представлен полный спектр программ, начиная от маленьких счетчиков различных показателей и заканчивая полноценными программам управления целыми сайтами. Можно найти программку, обрабатывающую данные форм. Можно скачать скрипт, работающий с базами данных. В качестве примера советую обработчик форм под названием Form Processor с сайта FreeScripts.com (http://www. freescripts.com/scripts/).

После того как вы скачали скрипт, его неплохо бы установить в каталог cgi-bin. (Большинстно скриптов, доступных в Сети, нормально работают па Unix-серверах, однако, (тли постараться, можно найти скрипты и для Windows или Мае.)

Устанавливая скрипт, нужно задать права доступа к нему со стороны веб-сервера. В юниксоидных системах это делается с помощью команды chmod 755 scriptnam.pl вокиетерминала или командной строке. (Если эта команда вам ни о чем не говорит, проконсультируйтесь с системным администратором.) Впрочем, например, РТР-приложение тоже позволяет изменять права доступа.

Не все веб-серверы обязуют помещать CGI-скрипты в каталог cgi-bin. Некоторые позволяют хранить их в произвольном месте сервера. Но это не означает, что отпадает необходимость в установке прав доступа. Если вы работаете с Unix-сервером, наверное, вы будете задавать разные права на чтение, запись и исполнение для владельца и остальных пользователей. (Это означает, что в интересах защиты информации вы даете право изменять код скрипта только самому себе и более никому.) Опять же, советую проконсультироваться с поставщиком услуг Интернета, поскольку вопрос прав доступа следует решать, исходя из требований и возможностей сервера.

Скрипт устанавливается, какое-то время, может быть, даже работает, но рано или поздно может возникнуть необходимость в его редактировании. Обычно это делается с помощью специальных текстовых конфигурационных файлов, хранящихся где-то на сервере. В них могут определяться некоторые свойства скриптов, рабочие каталоги и другие характеристики. Что касается программы Form Processor, обсуждавшейся рапсе, она имеет несколько настроек. Одна из них касается, например, сохранения данных в файле либо отправке их по e-mail. Другая — поведения после заполнения пользователем формы.

Наряду с этими настройками в Form Processor используются скрытые поля. В них также определяются некоторые параметры, необходимые для работы скрипта. Например, электронный адрес, по которому нужно отправлять результаты:

Скрытым полям соответствует система значений атрибутов name внутри формы. Сих помощью можно установить порядок полей, показываемых пользователю. Также существуют и специальные записи (например, user_email), которые дают скрипту возможность узнать e-mail для автоматического ответа.

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

Использование готовых скриптов, выполняющихся на чужом сервере

Существует еще один подход к использованию чужих скриптов в своих целях. Он отличается тем, что скрипты размещаются не на вашем сервере, а на своем родном Там же они и выполняются.

Поскольку атрибут method формы или src (произвольного элемента) может содер жать ссылку на удаленный URL, можно обрабатывать запросы с помощью скрип тов, расположенных по любому адресу. Это особенно полезно, когда у вас нет доступа к каталогу cgi-bin своего сервера и /или ограничены по количеству или тип запускаемых с него скриптов. (Эти ограничения, впрочем, совершенно не характерны, особенно для бесплатных или недорогих серверов.) В таком случае единственное решение проблемы — это набор скриптов, хранящихся на постороннем сервере.

Сайт CGI Resource включает в себя страницу, содержащую ссылки на скрипты подобного рода (http://cgi.resourceindex.com/Remotely_Hosted/). Назначение скриптов, которые там описываются, очень разнообразное: начиная от электронных досок объявлений и заканчивая вполне полноценными онлайновыми чатами. Оче видно, многие из них предназначены для обработки форм. Для простой обработки подойдет такая программа, как Form Buddy (http://www.formbuddy.com/). Можно создать форму и использовать URL этого скрипта в качестве ее метода (method). При нажатии пользователем кнопки подтверждения данные будут отправлены по e-mail либо сохранены на сервере с возможностью доступа к ним в будущем. Скрипт может рассылать и специальные сообщения, подтверждающие факт отправки данных (в случае, если пользователь не забудет правильно указать свой e-mail). Конечно, это старый и странный метод обработки, но во многих случаях это то, что надо, особенно если нет возможности разместить скрипты на своем родном сервере.

Скрипты, запускаемые с удаленных серверов, могут быть довольно сложными. Например, Formsite.com может быть использован для создания разных форм на основе предлагаемых шаблонов. В зависимости от выбранного уровня услуг, можно либо создавать формы самостоятельно и лишь подключать к ним CGI-скриптыс этого сайта, либо разместить форму на нем. Примерно то же самое бесплатно предлагает популярный сайт http://www.narod.ru. Шаблоны Formsite.com варьируются, начиная от гостевых книг и парольной защиты некоторых объектов, заканчивая страницами заказа товаров для электронной коммерции. Как видите, подход весьма серьезный.

Вы еще не раз встретите в этой книге упоминания о готовых скриптах, особенно в главе 2: и особенно о тех из них, которые позволяют создавать приложения для общения сразу нескольких пользователей.

Создание собственных скриптов

Если вы собираетесь писать скрипты самостоятельно, для начала вам придется познакомиться с каким-нибудь подходящим языком программирования. В этом тане самым популярным является Perl. Правда, пользователи Мае, как всегда, идут своим путем и предпочитают AppleScript. Простые CGI-скрипты обычно пи-шутся на языке написания сценариев и командных файлов под Unix.

При создании скриптов можно пользоваться стандартными текстовыми редакторами. Perl является интерпретируемым языком, поэтому программы не нуждаются в компиляции перед запуском. Это означает, что для написания скриптов не требуется программная оболочка компилятора, как, например, в случае с языком С. Тем не менее нужно как-то тестировать свои программы. Проще всего для этого осуществить их локальный запуск на Perl-совместимом сервере, установив соответствующее программное обеспечение на свой компьютер (или на один из терминалов локальной сети). Разместите скрипты в каталоге cgi и начинайте тестирование.

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

Несмотря на то что изначально Perl ориентирован на работу с Unix-системами с развито]’! концепцией командной строки (в эту группу ОС входят также Linux, Free BSD и их дальние родственники типа Mac OS X), пользователи других платформ прекрасно знают, что Perl неплохо существует и на них. Классическая ОС машин Macintosh (Mac OS 9.x и более ранние версии) больше всего дружит с MacPerl (http:// mvw.macperl.com/) — программой, позволяющей писать скрипты на чуть измененном Perl. Для почитателей Windows можно предложить Indigo Perl (http://www.perl.org/). Имеете с этой программой поставляется встроенный сервер Apache, предназначенный для локального тестирования скриптов. Другая популярная программа под Windows называется ActivePerl (http://www.ActivePerl.com/Products/ActivePerl/).

Дополнительную информацию о программировании иа Perl можно получить на Perl.com. Там вы найдете обзоры, статьи, советы и некоторые интересные инструменты для работы. Среди других Интернет-ресурсов, посвященных этой теме, стоит назвать сайты Perl Mongers (http://www.perl.org) и Perl Monks (http://www.perlmonks.org/). Это две ранные группы программистов на Perl, две своеобразные тусовки, на которых люди обмениваются опытом, исходными кодами и другими ресурсами. Ознакомившись с указанными материалами, можно зайти на странички Yahoo!, посвященные Perl: http://dir.yahoo.com/Computers_and_Internet/
Programming_and_Development/Languages/Perl/.

Для написания веб-программ следует выбирать тот язык программирования, с которым хорошо ладит как ваш локальный сервер, на котором вы будете их тестировать, так и сервер, на котором будет жить ваш сайт. Если это Unix-сервер, то подойдут вышеупомянутые языки — Perl, С, языки написания сценариев. Для Windows имеет смысл воспользоваться средой Visual Basic или какой-то иной, поддерживаемой серверным ПО, — это может быть все тот же язык Perl или С. При работе
с Macintosh ваш выбор, скорее всего, падет на AppleScript, MacPerl или нечто подобное, например Frontier (http://www.userland.com/), есть и Windows-версия этого языка.

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

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

Следующая глава — это небольшое введение в JavaScript, призванное запнтересо вать вас и направить на дальнейшее изучение вопроса. В преддверии этой главы следует отметить, что JavaScript позволяет внедрять команды скриптов непосред ственно в HTML-документы, делая их более динамичными и интерактивными.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *