Афиширование inurl c board cgi cmd. Технологии Интернет

Дешевый Заменитель Clarinex Силденафил Aska Cgi Дешевый заменитель clarinex ... Дешевый заменитель clarinex силденафил add cgi . 2552 голосов. Дешевые Pfizer Виагры Bbs Cgi Mode - remgruzshina.ru ... силденафил bbs cgi mode что было... Дешевый Заменитель Clarinex Силденафил Aska Cgi Дешевый ... Независимая экспертиза - Дешевый Сиалис Cbbs Cgi Mode ... cbbs cgi mode дешевый заменитель clarinex силденафил bbs cgi mode ... аптека дешевый сиалис bbs cgi ... Дешевый Заменитель Clarinex Силденафил Inurl Joyful Cgi Дешевый заменитель clarinex ... Силденафил Inurl Joyful Cgi Дешевый заменитель clarinex силденафил bbs cgi mode . ... Дешевый Заменитель Clarinex Силденафил Add Cgi Дешевый заменитель clarinex силденафил aska cgi Дешевый ... и акции.Дешевый сиалис cbbs cgi mode ... Дешевый Заменитель Clarinex Силденафил Inurl Guest Cgi Pageid Дешевый заменитель clarinex ... clarinex силденафил inurl guest cgi pageid ... clarinex силденафил bbs cgi mode ... Дешевый Заменитель Clarinex Силденафил Inurl C Board Cgi Cmd ... Стерлитамак - Страна Красоты, салоны красоты... Отзывы о компаниях. Нурия - салон... Дешевый Заменитель Clarinex Силденафил Bbs Кирпич и бетон; Лесоматериалы; Прочие строительные товары и услуги; Товары для организации... Дешевый Заменитель Clarinex Силденафил Vbulletin Дешевый Заменитель Clarinex ... заменитель clarinex силденафил bbs cgi mode что было... Камагра Жидких Bbs Cgi Mode - russiancontour.com На самом деле Герасим не утопил Муму. Ибо кто рассказал эту историю Тургеневу, если Герасим...

КотокафеМира - Дешевые Pfizer Виагры Bbs Inaka Jsp

Дешевый заменитель clarinex ... Дешевый заменитель clarinex силденафил bbs inaka jsp. дешевый ... Дешевый Заменитель Clarinex Силденафил Inurl Addguest Html ... Минеральная вода в косметологии. Минеральная вода - прекрасное натуральное средство для... Дешевый Заменитель Clarinex Силденафил Inurl Apeboard Plus Cgi Обучение английскому языку, обучение за границей... Для самых маленьких; Индивидуальные... Дешевый Заменитель Clarinex Силденафил Inurl Gbook Php A Дешевый заменитель clarinex ... Clarinex Силденафил Inurl Guest Cgi Pageid Дешевый сиалис cbbs cgi mode Дешевый ... Купить Виагру 100 Мг Бирмингеме Inurl Bbs Cgi Купить виагру 100 мг бирмингеме bbs cgi : Одна из самых новых... Войти на форум. Главная форума. Индия Дешевый Сиалис Inurl Sign Php Дешевый Заменитель Clarinex ... Inurl Bbs Cgi Купить... Силденафил Aska Cgi Дешевый ... Дешевый Заменитель Clarinex Силденафил Inurl Fsguest Html Дешевый заменитель clarinex ... Дешевый заменитель clarinex силденафил inurl joyful cgi » Принцип действия... Дешевый Заменитель Clarinex Силденафил Addurl Aspx дешевый заменитель clarinex силденафил ... cgi Дешевый заменитель ... дешевый заменитель clarinex ... Дешевые Pfizer Виагры C Board Cgi Cmd Дешевый заменитель clarinex силденафил inurl guestbook php Дешевый заменитель clarinex ... C Board Cgi Cmd ... Дешевые Pfizer Виагры Inurl Guestbook Html ... Заменитель Clarinex Силденафил Inurl Addguest Html Дешевый Заменитель Clarinex Силденафил Inurl C Board Cgi Cmd ...

Cgi

Дешевые Pfizer Виагры Inurl Yybbs Cgi . ... Cialis Сиалис купить левитру в городе тула Дешевый сиалис bbs CGI ... Тадалафил В Хмельницком Тадалафил в Хмельницком. Сравнить цены, купить... Тадалафил в Хмельницком. Вы хотите купить... Дешевый Заменитель Clarinex Силденафил Aska Cgi Дешевый заменитель clarinex силденафил aska cgi « Дешевый... Дешевый заменитель clarinex силденафил add ... Дешевые Pfizer Виагры Add Cgi - rsk-legion.ru Дешевые pfizer виагры inurl guestbook html Где Я Могу Заказать Виагру Inurl Add Cgi ... силденафил, ... bbs cgi ... Купить Камагра Без Prescripton Великобритании Inurl Light Cgi Камагра Жидких Bbs Cgi Mode ... Дешевый Заменитель Clarinex Силденафил Add Cgi Дешевый заменитель clarinex ... Купить Виагру 100 Мг Бирмингеме Add Html ... addurl aspx Дешевый заменитель clarinex силденафил ... Камагра Жидких Bbs Cgi Mode ... Пан силденафил ... Дешевый Сиалис Board Cgi Id - style-ultramarine.ru Салон красоты "Стайл Ультрамарин" ... Дешевый сиалис addguest cgi : Форум! | Импотенция лечить дома... Где Я Могу Заказать Виагру Inurl Sign Asp | Москва - Страна... inurl joyful cgi ... Дешевый заменитель clarinex силденафил inurl addentry php ... Камагра Жидких Bbs Cgi Mode ... "Автопартнер" - Работает Ли Сиалис Если Эрекция Отсутствует... Все для автомоек Аппараты для химчистки Полировальные машинки Пылеводососы Пылеводососы Inurl Showthread Купить Виагру - vgazele.ru Левитра в аптеках беларуси Inurl showthread купить виагру: Купить сиалис, виагру, левитра.

Наша компания предлагает вам сделать вместе с нами первый шаг навстречу счастливой полноценной жизни.Помогут вам в этом препараты, которые мы предлагаем:

  • -дженерики: , Левитры и Сиалиса, а также Попперсы сделают сексуальную сторону вашей жизни яркой и насыщенной
  • -синтетические гормоны роста : Динатроп, Ансомон и Гетропин добавят силы, энергии спортсменам и решат проблемы лишнего веса
  • -препараты и БАДы: Мориамин Форте, Tribulus terrestris, Экдистерон и Guarana вернут вам утраченную энергию, повысят выносливость организма, омолодят кожу, и восстановят работу многих внутренних органов.

Почему мы предлагаем покупать именно у нас? Причин несколько:

  • -наша компания является первым и пока единственным в России официальным представителем по продаже дженериков , силденафила, и дистрибьютором других препаратов
  • -качество наших товаров гарантируется официальными поставками препаратов
  • -для покупателей, которые смущаются от одной мысли, что слово « Виагра» в аптеке нужно будет произнести вслух, анонимный заказ товара на сайте отличная возможность приобрести нужный препарат
  • -удобная и быстрая курьерская доставка в Москве и Санкт-Петербурге, возможна почтовая рассылка препаратов в другие регионы

Покупать у нас выгодно

  • !мы постоянно проводим новые акции, позволяющие покупать дженерики Левитры, Сиалиса и Силденафил и другие по очень выгодным ценам
  • !каждому новому покупателю компания дарит дисконтную карту постоянного покупателя для приобретения препаратов с 10%-ной скидкой
  • !при заказе товара на сумму более 5 тысяч рублей, вас ждет подарок - бесплатная доставка
  • !для оптовых покупателей возможны закупки по специальным ценам при сравнительно небольших партиях товара с выпиской товарного чека
  • !участие в партнерской программе дает вам еще одну весомую скидку на стоимость товара в размере 40%

Наши сотрудники прилагают максимум усилий для того, чтобы сделать приобретение препаратов максимально удобным для покупателя

доставка товаров производится без выходных и праздничных дней до 24 часов. Для VIP клиентов: Сиалис и другие препараты для потенции, а так же доставляются круглосуточно
оплата принимаются через электронные платежные системы Яндекс Деньги, Web Money и с банковских карт Master Card или Visa для бесплатной консультации в любое время можно обратиться » по многоканальным телефонам:

  • 8 (800 )200-86-85 (по России звонок бесплатный),
  • +7 (800 )200-86-85 (Санкт-Петербург)
  • +7 (800 )200-86-85 (Москва)
Обязательно назовите добавочный номер: 1275

Индия дешевый сиалис inurl read cgi board

Если внимательно прочитать Сиалис описание, становится понятно - это не возбуждающее средство, это препарат не для повышения либидо. Дозировка Мужчинам среднего возраста рекомендуется принимать в дозе 20 мг как минимум за 16 мин до предполагаемой сексуальной активности независимо от приема пищи. Никаких гормонов, никаких возбуждающих средств. Но даже при наличии таких заболеваний препарат Сиалис принимать можно. Пациенты могут осуществлять попытку полового акта в любое время в течение 36 ч после приема для того, чтобы установить оптимальное время ответа на прием тадалфила. На обратной стороне находится информация о сроке годности и о составе препарата. Если вам нужен дженерик Сиалис, вы всегда сможете заказать его в нашей аптеке. Какие противопоказания у медикамента Сиалис? Несвоевременное лечение приапизма приводит к повреждению тканей полового члена, в результате этого может наступить долговременная потеря потенции. Противопоказания Одновременный прием препаратов, содержащих любые органические нитраты; детский и подростковый возраст до 18 лет; повышенная чувствительность к тадалафилу. Фармакокинетика После приема внутрь тадалафил быстро всасывается. Как результат - медикамент действует в течение 36 часов! В нашей аптеке сиалис, цена в Украине на который очень демократична, можно купить в любое время суток. Производство: Индия Подарок: 5 таб Дженерик Сиалис при заказе от 20 таб Бесплатный самовывоз м.

Как правильно искать с помощью google.com

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

Гугл поддерживает несколько расширенных операторов поиска, имеющими специальное значение при поиске на google.com. Типично, эти операторы изменяют поиск, или даже говорят гуглу делать полностью различные типы поиска. Например, конструкция link: является специальным оператором, и запрос link:www.google.com не даст вам нормального поиска, но вместо этого найдет все web-страницы, которые имеют связи к google.com.
альтернативные типы запросов

cache: Если Вы будете включать другие слова в запрос, то Гугл подсветит эти включенные слова в пределах кэшируемого документа.
Например, cache:www.сайт web покажет кэшируемое содержимое с подсвеченным словом "web".

link: рассматриваемый выше поисковой запрос покажет веб-страницы, на которых содержатся ссылки к указанному запросу.
Например: link:www.сайт отобразит все страницы на которых есть ссылка на http://www.сайт

related: Отобразит web-страницы, которые являются "подобными" (related) указанной web-странице.
Например, related: www.google.com перечислит web-страницы, которые являются подобными домашней странице Гугл.

info: Информация запроса: представит немного информации, которую Гугл имеет о запрашиваемой web-странице.
Например, info:сайт покажет информацию о нашем форуме =) (Армада - Форум адалт вебмастеров).

Другие информационные запросы

define: Запрос define: обеспечит определение слов, которые Вы вводите после того, как это, собранный из различных сетевых источников. Определение будет для всей введенной фразы (то есть, это будет включать все слова в точный запрос).

stocks: Если Вы начинаете запрос с stocks: Гугл обработает остальную часть сроков запроса как символы биржевых сводок, и свяжется со страницей, показывающую готовую информацию для этих символов.
Например, stocks: Intel yahoo покажет информацию о Intel и Yahoo. (Отметьте, что Вы должны напечатать символы последних новостей, не название компании)

Модификаторы Запросов

site: Если Вы включаете site: в ваш запрос, Гугл ограничит результаты теми вебсайтами, которые найдет в данном домене.
Также можно искать и по отдельным зонам, как таковое ru, org, com, etc ( site:com site:ru )

allintitle: Если Вы запускаете запрос с allintitle:, Гугл ограничит результаты со всеми словами запроса в заголовке.
Например, allintitle: google search вернет все страницы гугла по поиску как то images, Blog, etc

intitle: Если Вы включаете intitle: в вашем запросе, Гугл ограничит результаты документами, содержащими то слово в заголовке.
Например, intitle:Бизнес

allinurl: Если Вы запускаете запрос с allinurl: Гугл ограничит результаты, со всеми словами запроса в URL.
Например, allinurl: google search вернет документы с google и search в заголовке. Также как вариант можно разделять слова слэшем (/) тогда слова по обе стороны слэша будут искаться в пределах одной страницы: Пример allinurl: foo/bar

inurl: Если Вы включаете inurl: в вашем запросе, Гугл ограничит результаты документами, содержащими то слово в URL.
Например, Animation inurl:сайт

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

daterange: ищет во временных рамках (daterange:2452389-2452389), даты для времени указываются в Юлианском формате.

Ну и еще всякие интересные примеры запросов

Примеры составления запросов для Google. Для спамеров

Inurl:control.guest?a=sign

Site:books.dreambook.com “Homepage URL” “Sign my” inurl:sign

Site:www.freegb.net Homepage

Inurl:sign.asp “Character Count”

“Message:” inurl:sign.cfm “Sender:”

Inurl:register.php “User Registration” “Website”

Inurl:edu/guestbook “Sign the Guestbook”

Inurl:post “Post Comment” “URL”

Inurl:/archives/ “Comments:” “Remember info?”

“Script and Guestbook Created by:” “URL:” “Comments:”

Inurl:?action=add “phpBook” “URL”

Intitle:”Submit New Story”

Журналы

Inurl:www.livejournal.com/users/ mode=reply

Inurl greatestjournal.com/ mode=reply

Inurl:fastbb.ru/re.pl?

Inurl:fastbb.ru /re.pl? “Гостевая книга”

Блоги

Inurl:blogger.com/comment.g?”postID”"anonymous”

Inurl:typepad.com/ “Post a comment” “Remember personal info?”

Inurl:greatestjournal.com/community/ “Post comment” “addresses of anonymous posters”

“Post comment” “addresses of anonymous posters” -

Intitle:”Post comment”

Inurl:pirillo.com “Post comment”

Форумы

Inurl:gate.html?”name=Forums” “mode=reply”

Inurl:”forum/posting.php?mode=reply”

Inurl:”mes.php?”

Inurl:”members.html”

Inurl:forum/memberlist.php?”

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

Теория CGI
CGI – (Common Gateway Interface) – Общий Шлюзовый Интерфейс. Как не трудно догадаться интерфейс этот служит шлюзом между сервером (здесь я подразумеваю программу - сервер) и какой-либо внешней программой написанной для ОС на которой этот самый сервер запущен. Таким образом CGI отвечает за то, каким именно образом данные будут переданы от программы-сервера к CGI-программе и обратно. Интерфейс не накладывает никаких ограничений на то, на чем должна быть написана CGI-программа, это может быть как обычный исполнимый файл, так и любой другой файл – главное, чтобы сервер смог его запустить (в среде windows это например может быть файл с расширением, привязанным к какой-либо программе).
С момента когда Вы вызвали (например нажали кнопку формы, к которой привязан вызов CGI-программы) CGI-программу до получения вами результата в окно браузера происходит следующее:
- Вэб-клиент (например браузер) создает подключение к серверу, указанному в URL;
- Вэб-клиент посылает запрос серверу, запрос этот обычно делается с помощью двух методов GET или POST;
- Данные из запроса клиента (например значения полей формы) передаются сервером, используя CGI-интерфейс, CGI-программе, указанной в URL;
- CGI-программа обрабатывает данные клиента, полученные от сервера и генерирует на основе этой обработки ответ клиенту, который она передает по все тому же CGI-интерфейсу серверу, а он в свою очередь передает его уже непосредственно клиенту;
- Сервер разрывает соединение с клиентом.
В стандартной спецификации CGI принято, что сервер может обмениваться с программой следующими способами:
- Переменные окружения – они могут быть установлены сервером при запуске программы;
- Стандартный поток ввода (STDIN) – с его помощью сервер может передать данные программе;
- Стандартный поток вывода (STDOUT) – программа может писать в него свой вывод, передающийся серверу;
- Командная строка – в ней сервер может передать некоторые параметры программе.
Стандартные потоки ввода/вывода весьма удобны и широко используются на UNIX-системах, чего не скажешь о windows, поэтому существует спецификация CGI, разработанная специально для windows-систем так и называемая «Windows CGI». Но, естественно, и стандартные потоки ввода/вывода так же можно использовать в windows CGI программировании. Здесь я не буду затрагивать стандарт «Windows CGI», и на это существует по крайней мере две причины – первая, и самая главная – на данный момент не все http-сервера под windows поддерживают эту спецификацию (в частности мой любимый Apache 1.3.19). Вторую причину вы можете наблюдать набрав в любой поисковой системе строчку «Windows CGI». Отмечу относительно этого интерфейса лишь общие детали – все данные от сервера к клиенту передаются посредством обычного для windows *.ini файла, имя которого передается программе в командной строке. При этом все данные в файле уже заботливо разбиты по секциям сервером и вам лишь остается используя функции «GetPrivateProfile*» извлечь их оттуда. Ответ серверу передается опять же посредством файла, имя которого указано в соответствующей записи ini-файла.
Какие же данные могут быть переданы клиентом CGI-программе? – практически любые. В общем случае программе передаются значения полей формы, которые заполняет клиент, но это также могут быть и какие-либо двоичные данные, например файл с картинкой или музыкой. Данные могут быть переданы на сервер двумя различными методами – это метод GET и метод POST. Когда мы создаем форму для заполнения на нашей страничке мы явно указываем каким из приведенных методов мы хотим отправить введенные пользователем данные, делается это в основном тэге формы примерно так:
При отправке данных методом GET, данные браузером считываются из формы и помещаются следом за URL скрипта, за знаком вопроса, если значимых полей в форме несколько, то они передаются все через значёк «&», имя поля и его значение пишутся в URL через знак «=». Например запрос, сгенерированный браузером из формы при нажатии на кнопку, к которой привязан скрипт «/cgi-bin/test.exe», при учете что первое поле формы называется «your_name», второе – «your_age», может выглядеть так:
GET /cgi-bin/test.exe?your_name=Pupkin&your_age=90 HTTP/1.0
Использование метода GET имеет сразу несколько слабых сторон – первое и самое главное – т.к. данные передаются в URL то он имеет ограничение на количество этих самых передаваемых данных. Вторая слабость опять же вытекает из URL – это конфиденциальность, при такой передаче данные остаются абсолютно открытыми. Итак, хорошо если у нас в форме 2-3 небольших поля… встает вопрос что же делать если данных больше? Ответ – использовать метод POST!
При использовании метода POST данные передаются серверу как блок данных, а не в URL, что несколько развязывает нам руки для увеличения объема передаваемой информации, для вышеприведенного примера формы POST блок, посылаемый серверу будет примерно такой:

POST /cgi-bin/test.exe HTTP/1.0
Accept: text/plain
Accept: text/html
Accept: */*
Content-type: application/x-www-form-urlencoded
Content-length: 36
your_name=Pupkin&your_age=90

Как уже говорилось выше, после получения данных сервер должен преобразовать их и передать CGI программе. В стандартной спецификации CGI введенные клиентом данные при запросе GET помещаются сервером в переменную среды программы «QUERY_STRING». При запросе POST данные помещаются в стандартный поток ввода приложения, откуда могут быть им считаны. Кроме того, при таком запросе сервером устанавливаются еще две переменные среды - CONTENT_LENGTH и CONTENT_TYPE, по которым можно судить о длине запроса в байтах и о его содержании.
Помимо самих данных сервером устанавливаются и другие переменные окружения вызываемой программы, приведу некоторые из них:

REQUEST_METHOD
Описывает каким именно методом получены данные
Пример:REQUEST_METHOD=GET

QUERY_STRING
Строка запроса, если использовался метод GET
Пример:QUERY_STRING= your_name=Pupkin&your_age=90&hobby=asm

CONTENT_LENGTH
Длина в байтах тела запроса
Пример:CONTENT_LENGTH=31

CONTENT_TYPE
Тип тела запроса

GATEWAY_INTERFACE
Версия протокола CGI
Пример:GATEWAY_INTERFACE=CGI/1.1

REMOTE_ADDR
IP-Адрес удаленного хоста, то бишь клиента, нажавшего кнопочку в форме
Пример:REMOTE_ADDR=10.21.23.10

REMOTE_HOST
Имя удаленного хоста, это может быть его доменное имя или например имя компьютера в среде Windows, если таковые получены быть не могут, то поле содержит его IP
Пример:REMOTE_HOST=wasm.ru

SCRIPT_NAME
Имя скрипта, использованное в запросе.
Пример:SCRIPT_NAME=/cgi-bin/gols.pl

SCRIPT_FILENAME
Имя файла скрипта на сервере.
Пример:SCRIPT_FILENAME=c:/page/cgi-bin/gols.pl

SERVER_SOFTWARE
Программное обеспечение сервера
Пример:Apache/1.3.19 (WIN32)
Вызываемая CGI-программа может прочитать любую из переменных своего окружения, установленных сервером и использовать ее в своих интересах.
В общем-то это вкратце все, для получения более подробной информации о Общем Шлюзовом Интерфейсе смотрите специализированную документацию, это описание я сделал для того, чтобы напомнить вам, а если не знали то ввести в курс дела. Давайте попробуем что-нибудь сделать на практике.

Практическая часть
Для практики нам понадобятся как минимум 3 вещи – какой-нибудь http-сервер для Windows, все примеры я пробовал на Apache 1.3.19 для Windows, сервер бесплатный, скачать его можно с i
Да, и сервер нам понадобится не абы – какой, а настроенный для запуска cgi-скриптов! Как это делается для сервера используемого вами смотрите документацию. Вторая вещь, которая нам понадобится это, естественно, ассемблер, так же необходимо, чтобы компилятор поддерживал создание консольных WIN32 приложений, я использую Tasm, но прекрасно подойдут и Fasm и Masm и множество других *asm’ов. Ну и наконец самое главное, что потребуется это желание.
Итак, я допускаю, что сервер был вами благополучно поставлен и настроен, так, что в корневой директории документов сервера лежит файлик index.html, который замечательно показывается в браузере, когда вы набираете адрес 127.0.0.1 . Так же я учту, что где-то в дебрях папок сервера существует папочка «cgi-bin», в которой разрешен запуск скриптов.
Давайте проверим настройку сервера, а заодно и напишем небольшой скрипт. Скрипт наш будет обычным *.bat файлом. Предвижу вопросы – как? неужели? Да, это обычный командный файл, как уже говорилось выше спецификация CGI не делает различий между типами файлов, главное, чтобы сервер мог его запустить, а он в свою очередь, имел доступ к stdin/stdout и переменным окружения, bat-файл, пусть и не в полной мере, но для примера нас вполне устроит. Создадим файл примерно такого содержания:

@echo off
rem Заголовок апроса
echo Content-type: text/html
echo.
rem Тело запроса
echo "Привет!

echo "С запросом GET пришли данные: %QUERY_STRING%

Файл назовем test.bat и поместим его в директорию для запуска скриптов, скорее всего это будет директория «cgi-bin». Следующее, что нам нужно будет сделать, это каким либо образом вызвать этот скрипт, в принципе, сделать это можно напрямую набрав в окошке адреса браузера примерно следующее «http://127.0.0.1/cgi-bin/test.bat», но давайте сделаем его вызов с нашей главной странички, заодно проверим работу метода GET. Создадим в корне сервера файл index.html со следующим содержанием:

Введите данные для передачи серверу:
Данные:

Теперь при входе на сервер (http://127.0.0.1 в строке адреса браузера) должна появиться форма, наберите в ней что-нибудь и нажмите кнопку «послать», если все было сделано правильно, Вы увидите в окне браузера ответ нашего bat-скрипта. Теперь давайте посмотрим что же мы там намутили.
Как можно догадаться команда «echo» осуществляет вывод в stdout, первым делом мы передаем серверу заголовок нашего ответа – «echo Content-type: text/html». Это есть стандартный заголовок спецификации CGI, говорящий о том, что передавать мы хотим текст или документ html, существуют и другие заголовки. Очень важный момент – заголовок должен отделяться от тела ответа пустой строкой, что мы и делаем следующей командой «echo.». Дальше передается тело самого ответа – это обычный html-документ, в теле документа я для наглядности отображая одну из переменных среды, переданной нам сервером – «QUERY_STRING», как уже говорилось при методе GET (а это именно наш случай) в этой переменной передаются все введенные пользователем данные, что мы и можем наблюдать в ответе скрипта. Вы могли заметить «кавычки не к месту» в последних 2-х строках файла, сразу после «echo», стоят они там из-за специфичности bat-файлов, как можно заметить тэги html обрамляются символами «<» и «>», в тоже время эти символы служат перенаправлением ввода/вывода в bat-файлах, а посему мы не можем их здесь свободно использовать.
Рекомендую немного побаловаться с подобными bat-скриптами, это бывает очень полезно, попробуйте посмотреть другие переменные окружения. Немного скажу, отступив от темы, на UNIX-системах языки командных интерпретаторов очень сильно развиты и грань между программированием на языке командного интерпретатора и программированием на «реальном» языке программирования весьма и весьма размыта в некоторых случаях, поэтому на UNIX-системах частенько простенькие скрипты пишутся именно на языках командных интерпретаторов, но windows-интерпретатор cmd.exe или, ранее, command.com явно слабоваты для этих целей.
Теперь перейдем к самой главной задаче этой статьи, к собственно написанию CGI-программы на ассемблере. В принципе, если учесть все вышесказанное о CGI мы можем сделать вывод о том, что требует CGI-интерфейс от нашей программы:

  • Программа должна уметь читать стандартный поток ввода (stdin), чтобы получить доступ к данным, переданным методом POST;
  • Программа должна уметь писать в стандартный поток вывода (stdout), чтобы передать результат своей работы серверу;
  • Из первых двух пунктов следует, то, что для того, чтобы сервер мог передать нашей программе что-либо в stdin, а она могла ему что-либо ответить в stdout CGI-программа должна быть консольным приложением;
  • Наша программа должна уметь читать переменные своего окружения.
Этого вполне достаточно для создания полноценного CGI-приложения.
Начнем с последнего пункта. Для получения доступа к переменным окружения Windows-приложения используется функция API «GetEnvironmentStrings», функция не имеет аргументов и возвращает указатель на массив переменных окружения (ИМЯ=ЗНАЧЕНИЕ) разделенных между собой нулем, массив закрывается двойным нулем, при запуске программы сервером в окружение программы помимо стандартных переменных добавляются специфические CGI-переменные, описанные выше, при запуске программы из командной строки вы их не увидите, естественно.
Для того, что бы писать что-то в stdout или читать из stdin сначала мы должны получить хэндлы этих потоков, делается это с помощью функции API «GetStdHandle», в качестве параметра функции передается одно из следующих значений:
  • STD_INPUT_HANDLE - для stdin (стандартный ввод);
  • STD_OUTPUT_HANDLE - для stdout (стандартный вывод);
  • STD_ERROR_HANDLE - для stderr.

Функция возвратит необходимый нам для операций чтения/записи хэндл. Следующее что нам необходимо делать это писать/читать эти потоки. Делается это обычными операциями чтения/записи файлов, т.е. ReadFile и WriteFile. Тут есть одна тонкость, можно подумать, что для этих целей можно использовать WriteConsole/ReadConsole, да это действительно справедливо для консоли и будет прекрасно работать, результаты, так же как и с WriteFile будут выводиться на консоль, но продолжаться это будет пока мы не запустим нашу программу как скрипт на сервере. Происходит это потому что, когда нашу программу запускает сервер хндлы, возвращаемые функцией «GetStdHandle» уже не будут хндлами консоли как таковыми, они будут хэндлами pipe, что необходимо для связи двух приложений.
Вот небольшой пример того, как должна выглядеть CGI-программа на ассемблере:

386
.model flat,stdcall
includelib import32.lib
.const
PAGE_READWRITE = 4h
MEM_COMMIT = 1000h
MEM_RESERVE = 2000h
STD_INPUT_HANDLE = -10
STD_OUTPUT_HANDLE = -11

Data
hStdout dd ?
hStdin dd ?
hMem dd ?
header:
db "Content-Type: text/html",13,10,13,10,0
start_html:
db "Окружение CGI-программы выглядит так:
",13,10,0
for_stdin:
db "STDIN программы содержит:
",13,10,0
end_html:

Db "",13,10,0
nwritten dd ?
toscr db 10 dup (32)
db " - Тип файла",0
.code
_start:

Xor ebx,ebx
call GetStdHandle,STD_OUTPUT_HANDLE
mov hStdout,eax
call GetStdHandle,STD_INPUT_HANDLE
mov hStdin,eax

Call write_stdout, offset header
call write_stdout, offset start_html

Call VirtualAlloc,ebx,1000,MEM_COMMIT+MEM_RESERVE,PAGE_READWRITE
mov hMem,eax
mov edi,eax
call GetEnvironmentStringsA
mov esi,eax
next_symbol:
mov al,
or al,al
jz end_string
mov ,al
next_string:
cmpsb
jmp short next_symbol
end_string:
mov ,">rb<"
add edi,3
cmp byte ptr ,0
jnz next_string
inc edi
stosb
call write_stdout, hMem
call write_stdout, offset for_stdin

Call GetFileSize,,ebx
mov edi,hMem
call ReadFile,,edi, eax,offset nwritten, ebx
add edi,
mov byte ptr ,0
call write_stdout, hMem
call write_stdout, offset end_html
call VirtualFree,hMem
call ExitProcess,-1

Write_stdout proc bufOffs:dword
call lstrlen,bufOffs
call WriteFile,,bufOffs,eax,offset nwritten,0
ret
write_stdout endp
extrn GetEnvironmentStringsA:near
extrn GetStdHandle:near
extrn ReadFile:near
extrn WriteFile:near
extrn GetFileSize:near
extrn VirtualAlloc:near
extrn VirtualFree:near
extrn ExitProcess:near
extrn lstrlen:near
ends
end _start

Исполняемый файл строится командами:
tasm32.exe /ml test.asm
tlink32.exe /Tpe /ap /o test.obj
Не забудьте, что программа должна быть консольной.
Вызывать эту программу можно используя вышеописанную html-форму, нужно только поменять имя test.bat в форме на test.exe и скопировать его в /cgi-bin/ соответственно, при том можно выставить в методе запроса POST, программа его обрабатывает.
Еще хочу отметить, что можно вызывать программу и по-другому, можно создать в каталоге cgi-bin файл например test.cgi с одной единственной строчкой «#!c:/_путь_/test.exe» и вызывать в запросах его, а сервер в свою очередь будет читать первую его строчку и запускать exe-файл, для этого необходимо, чтобы в настройках http-сервера было прописано расширение *.cgi как расширение для скриптов. При таком подходе сервер запустит нашу программу с командной строкой «test.exe путь_к_test.exe» это имеет несколько плюсов – первое, это то, что человек, запускающий наш скрипт не будет даже догадываться на чем скрипт написан, второе – так-как нам передается имя файла с нашей строчкой мы можем например дописать в этот файл какие-либо настройки для нашего скрипта, что упрощает отладку, кстати именно так работают все интерпретаторы – вы успели заметить, что во всех perl/php/итд программах, присутствует подобная строка – указывающая на сам командный интерпретатор. Так вот сервер при запуске cgi-программы, если расширение программы прописано у него как скрипт в настройках читает первую строку файла, и если она оказывается описанного выше формата, то запускает указанную в строчке программу с именем этого файла ч/з пробел, допустим что в строчке указан интерпретатор перла, он получив такой подарок начинает его выполнение, т.к. комментарий в перле это символ «#», то первую строчку он пропускает и идет дальнейшее выполнение скрипта, в общем штука удобная.

Для получения достоверного результата анализ должен проводиться не менее чем через 2 недели после последнего приема антибиотиков и (или) антибактериальных препаратов.

  • Соскоб из уретры рекомендуется сдавать через 2 часа после последнего мочеиспускания, из зева и носоглотки – натощак (через 4-5 часов после последнего приема пищи, при этом необходимо исключить чистку зубов и полоскание рта), для других локусов специальной подготовки не требуется.
  • Моча. Исследованию подлежит средняя порция свободно выпущенной мочи, в количестве 3-5 мл в стерильный пластиковый одноразовый контейнер (контейнер можно получить в регистратуре) после тщательного туалета наружных половых органов без применения антисептиков. Срок доставки в лабораторию при комнатной температуре – 1-2часа, при температуре 2-8°С – 5-6 часов.
  • Сперма для бактериологического исследования собирается в стерильный пластиковый одноразовый контейнер с широким горлом путем мастурбации (контейнер можно получить в регистратуре). Срок доставки материала в лабораторию при комнатной температуре в течение 1-2 часов.
  • Мокроту рекомендуется собирать с утра, натощак после санации ротовой полости, в стерильную пластиковую посуду. Срок доставки материала в лабораторию при комнатной температуре в течение 1-2 часов, при температуре 2-8°С – 5-6 часов.
  • Забор секрета предстательной железы осуществляет врач-уролог, после предварительного массажа простаты (данная манипуляция выполняется только в Центральном офисе). Перед забором секрета предстательной железы рекомендуется половое воздержание в течение не менее 2-х дней.
  • Бактериологическое исследование грудного молока . Забор грудного молока проводится только до кормления ребенка или через два часа после его кормления грудью. Обследуемая пациентка обмывает левую и правую грудную железу теплой водой с мылом и насухо вытирает чистым полотенцем. Поверхность сосков и кончики пальцев обрабатывает ваткой, умеренно смоченной 70 % этиловым спиртом. Первая порция грудного молока, приблизительно в количестве 0,5 мл, сбрасывается. Затем, не касаясь соска руками, женщина сцеживает 0,5 – 1 мл молока из каждой железы в отдельный стерильный контейнер (контейнеры можно получить в регистратуре). Сроки доставки в лабораторию при комнатной температуре – 1-2 часа, при температуре 2-8°С – 5-6 часов.
  • Забор синовиальной жидкости для бактериологического исследования осуществляется врачом в стерильную пластиковую посуду (контейнер можно получить в регистратуре). В условиях лаборатории эта процедура не выполняется. Срок доставки материала в лабораторию при комнатной температуре в течение 1-2 часов, при температуре 2-8°С – 5-6 часов.
  • Забор раневого отделяемого для бактериологического исследования осуществляется врачом, в одноразовый контейнер со средой Эймса (контейнер можно получить в регистратуре). Срок доставки материала в лабораторию при комнатной температуре в течение 6 часов, при температуре 2-8°С – до 2 суток.
  • Желчь для бактериологического исследования собирается при зондировании, отдельно, по порциям А, В и С в три стерильные пробирки, либо во время операции с помощью шприца в одну пробирку, соблюдая правила асептики (в лаборатории эта процедура не выполняется). Срок доставки материала в лабораторию при комнатной температуре в течение 1-2 часов, при температуре 2-8°С – 5-6 часов.