Програмування 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!