CGI - Common Gateway Interface

Спецвыпуск хакер, номер #002, стр. 002-068-2

http://vasya.pupkin.org/cgi-bin/guestbook.cgi?mycoolparameter=thiscoolvalue&pagetoshow=1

Есть еще некоторые ограничения, с которыми нужно бороться - нельзя указывать никакие символы, кроме аглицких букв, цифр да знака подчеркивания. Плюсы, минусы, русские буквы и т.д. представляются в виде %xx, где xx - это шестнадцатиричное значение, соответствующее символу в стандартной таблице оных. Плюсы заменяются на пробелы. Таким образом, вместо "Я тут!" получится "%FF+%F2%F3%F2!". Некоторые браузеры автоматически преобразовывают введенные строки с пробелами в такой формат. Но в любом скрипте это нужно будет преобразовывать самостоятельно. :-( Ну да это не проблема, не парься. Ничего страшного.

Чтобы скрипту было не скучно, пока он работает, сервачок устанавливает "переменные окружения". С их помощью можно, например, попробовать узнать, откуда пришел факин юзверь (его IP - если он, конечно, не пользуется анонимными прокси), метод, которым был послан запрос (их всего два - см. ниже), собственно передаваемые данные и их длину (в случае, когда используется метод передачи "POST").

Методов, которыми можно запросить данные через шлюз, всего два. Их называют "GET" и "POST". Первый метод более компактный, так как все необходимые данные и параметры посылаются прямо в строке с адресом шлюза. Естественно, что уже для гостевой книги и форума такая форма не годится - слишком большое сообщение, запхнутое в строку браузера, убьет и браузер, и желание юзера заходить на этот сайт еще когда-нибудь, так что это не прикольный метод, и к любви не располагает. Второй метод ("POST") позволяет передавать большие объемы данных, ведь для этого не используется буфер браузера. Передача осуществляется через файловые дескрипторы стандартных устройств. Звучит как заупокойная, но на самом деле все просто как мертвая лошадь. Чтобы получить данные, нужно узнать их размер (из одной из переменных окружения) и просто считать с консоли (INPUT в бейсике, blockread в Pascal, fread в C) нужное их количество. Это прикольно, удобно и, несмотря на сложность изложения, легко осваивается - как два байта перекачать.

Доктор, я буду жить? - А зачем?

К чему все эти описания стандартов и способов передачи параметров без, собственно, практики?! Но для начала скажу немного о хлебе насущном. Большинство фришных хостов, где юзерам без разбора выдают халявные странички и позволяют работать со своими собственными CGI-скриптами, поддерживают только скрипты, написанные на Perl`е, реже - на Python`е. Да и писать на этих языках, специально предназначенных для работы с текстом, гораздо удобнее, чем на Pascal или C. Кроме того, не существует Perl и Python компиляторов, поэтому все скрипты будут храниться в своем исходном виде, что иногда бывает удобно (не нужно разделять исходники и бинарники). :-) Из этих двух лэнгвичей пока что, видимо, стоит выбрать Perl. Почему? Просто большинство хостов обеспечивает доступ к Perl`у по умолчанию и только некоторые (правда, их число растет) дополнительно позволяют использовать скрипты, написанные на Python`е.

Назад на стр. 002-068-1  Содержание  Вперед на стр. 002-068-3

загрузка...
Cпец Хакер #075Cпец Хакер #074Cпец Хакер #073Cпец Хакер #072Cпец Хакер #071Cпец Хакер #070Cпец Хакер #069Cпец Хакер #068Cпец Хакер #067Cпец Хакер #066Cпец Хакер #065Cпец Хакер #064Cпец Хакер #063Cпец Хакер #062Cпец Хакер #061Cпец Хакер #060Cпец Хакер #059Cпец Хакер #058Cпец Хакер #057Cпец Хакер #056Cпец Хакер #055Cпец Хакер #054Cпец Хакер #053Cпец Хакер #052Cпец Хакер #051Cпец Хакер #050Cпец Хакер #049Cпец Хакер #048Cпец Хакер #047Cпец Хакер #046Cпец Хакер #045Cпец Хакер #044Cпец Хакер #043Cпец Хакер #042Cпец Хакер #041Cпец Хакер #040Cпец Хакер #039Cпец Хакер #038Cпец Хакер #037Cпец Хакер #036Cпец Хакер #035Cпец Хакер #034Cпец Хакер #033Cпец Хакер #032Cпец Хакер #031Cпец Хакер #030Cпец Хакер #029Cпец Хакер #028Cпец Хакер #027Cпец Хакер #026Cпец Хакер #025Cпец Хакер #024Cпец Хакер #023Cпец Хакер #022Cпец Хакер #021Cпец Хакер #020Cпец Хакер #019Cпец Хакер #018Cпец Хакер #017Cпец Хакер #016Cпец Хакер #015Cпец Хакер #014Cпец Хакер #013Cпец Хакер #012Cпец Хакер #011Cпец Хакер #010Cпец Хакер #009Cпец Хакер #008Cпец Хакер #007Cпец Хакер #006Cпец Хакер #005Cпец Хакер #004Cпец Хакер #003Cпец Хакер #002Cпец Хакер #001