Програмування CGI у Delphi та Kylix

Delphi , Інтернет та Мережі , CGI та Cookies

Автор:Paul TOTHПереклад з французької:Valery VotintsevWEB-сайт: http://www.sources.ru

У цьому посібнику пояснюється, як програмувати CGI на Delphi та Kylix. Автор буде радий Вашим зауваженням та побажанням!

Для роботи з CGI вам знадобиться Web-сервер (для Delphi – під Windows, а для Kylix – під Linux).

Автор тестував свої програми на сервері Lotus Domino під NT і на сервері Apache під Mandrake 7.0 (linux).

Автор використовував Delphi 2.0, проте це керівництво застосовно і для Delphi 3,4,5, 6. та Kylix!

Якщо ви плануєте використовувати ISAPI/NSAPI DLL, краще буде програмувати на Delphi 5/6; Однак цей посібник залишається дуже корисним, якщо Ви бажаєте розібратися в тому, як функціонує CGI.

Посилання на CGI-програму:

На сторінці HTML (або безпосередньо в рядку URL браузера) ви розміщуєте посилання на вашу програму. Ось кілька прикладів

Що таке cgi-bin:

cgi-bin - це псевдонім каталогу на сервері, який вказує на реальний каталог, де розміщені всі CGI програми.

Під Windows: c:\internet\delphi\cgi Під Linux: /home/httpd/cgi-bin

Коли користувач натискає на посилання, що вказує на CGI-програму, сервер запускає цю програму і очікує від неї відповіді.

Найпростішим варіантом CGI програми може служити консольна програма, яка схожа на DOS-програму, проте працює під Windows 95/NT, або під Linux.

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

Приклад найпростішої CGI-програми:

Розберемо рядки, що виводяться програмою:

1) WriteLn('Content-type: text/html'); - Content-type -це опис типу виведених даних (у разі - тексту HTML)

2) WriteLn; - Виведення порожнього рядка ОБОВ'ЯЗКОВО, для того, щоб відокремити "заголовок" документа від вмісту цього документа.

3) WriteLn('Усім привіт!'); - Тут виводиться саме тіло документа, тобто. те, що ми побачимо, якщо натиснемо у браузері "Файл - Перегляд у вигляді HTML"

Все, що виводиться командою WRITELN, направляється у "пристрій стандартного виведення" STDOUT і відправляється сервером до браузера користувача.

Цікаво, що під Windows можна написати CGI-програму навіть за допомогою .BAT-файлу!

Зверніть увагу, що спеціальні символи, що використовуються в DOS (такі, як " ", "&". ), необхідно передувати знаком "^".

Не забувайте про це під час написання CGI з .BAT файлами.

Методи GET та POST

Існує принаймні два методи передачі параметрів CGI-програмі.

Натиснувши на "GO" (тут кликати не треба, це просто приклад!), Ви запускаєте на сервері програму "program.exe" передаючи серверу запит у вигляді: http://www.ваш_сервер/cgi-bin/program.exe?toto =titi

Ви бачите, що відразу за ім'ям програми слід знак питання і параметр, що передається в програму. У змінну QUERY_STRING якраз і буде вміщено все, що знаходиться після символу "?". Зауважимо, що так само можна задати параметри і в звичайному засланні: .

І останнє уточнення: якщо запит містить кілька параметрів, вони відокремлюються один від одного амперсандом &. Крім того, деякі символи у значеннях параметрів (наприклад, &) повинні бути представлені в шістнадцятковій формі %hh, де "hh" - шістнадцятковий код символу в таблиці ANSI. Наприклад, символ амперсанда "&" має бути представлений у вигляді "%26".

Уявіть, що вам потрібно на сайті yahoo.com знайти результати пошуку за ключовими словами cgi та delphi, для чого у вікні пошуку ви вводите "cgi+delphi". Тоді в результаті вашого запиту буде згенеровано наступну URL: http://search.yahoo.com/bin/search?p=cgi+%2B+delphi Таким чином, ви звернетеся до програми "search" і задайте значення параметра "p" рівним " cgi + delphi", при цьому символ "+" буде автоматично замінений браузером на %2B, а пробіли - на +.

Насамкінець я пропоную вашій увазі маленьку CGI-програму, яка просто виводить те, що відбувається на сервері:

Примітка: Крім стандартного виведення інформація паралельно виводиться ще й у лог-файл.

Ми вже знаємо, що CGI-програма відсилає серверу заголовок, що не відображається браузером:

Крім того, ваш сервер автоматично додає до цього заголовка ще й свої власні повідомлення.

Допустимо, ви запитуєте у браузері URL http://yahoo.com. У цьому випадку ви отримаєте від сервера наступну відповідь:

Отримавши такий заголовок, браузер перезапитує у сервера нову URL http://www.yahoo.com, і у відповідь отримує таке:

HTTP/1.0 200 OK Контент-Length: 9332 Завантаження: Wed, 18 Mar 1998 08:00:03 GMT Content-Type: text/html Yahoo!