Розробка CGI у Delphi, VR-online – безкоштовний електронний журнал для всіх
Опубліковано Kewa2008 в ПТ, 12/11/2010 - 18:27
Зібралися якось розумні бородаті дядьки (я так думаю у них була борода) і був розроблений загальний інтерфейс маршрутизації (Common Gateway Interface (загальний інтерфейс шлюзу) – CGI). Інтерфейс CGI дозволяє Web-серверу запускати незалежний процес, і, ґрунтуючись на вхідних даних, отриманих від користувача, обробляти цю інформацію і повертати клієнту Web-сторінку, що динамічно створюється. Ось про це і піде мова під катом.
Епоха web-дизайну, коли найважливішим вважалося не можливості сайту або його динаміка, а його статистичний вміст, нехай навіть і з великою кількістю графіки, пішла в минуле. В даний час "хорошим сайтом" визнається сайт, на якому присутній "інформаційний дизайн" (гостова книга, форум та інші "фішки", що надають динаміку сайту).
Інтернет був би повністю статичним середовищем без можливості отримувати та обробляти введення від користувачів та давати інформацію. Це підірвало б одну з обчислювальних можливостей взагалі – інтерактивну інформацію (завдяки якій користувачі налаштовують подання даних у зручному для себе вигляді, а не покладаються на жорстку структуру, визначену постачальником вмісту). Хоча сервери можуть надсилати та отримувати дані, у самого сервера функціональні можливості обмежені. Наприклад, найбільш примітивний сервер може лише надіслати потрібний файл на браузер. Сервер зазвичай не знає, що робити з тим чи іншим додатковим введенням. Щоб сервер зміг виконувати не стандартні операції (пошук і пересилання файлів на браузер), потрібно знати як можна розширити функціонал сервера.
Для організації інтерактивної взаємодії з користувачем необхідно виділити низку основних завдань:
- Організаціялічильників та систем статистичного аналізу;
- Виведення інформації, що динамічно змінюється (наприклад, поточного рейтингу або курсу валюти);
- Побудова пошукових машин;
- обробка результатів заповнення форм, інтерактивного голосування;
- Організація гостьових книг та чату.
Для вирішення перерахованих вище завдань було розроблено загальний інтерфейс маршрутизації (Common Gateway Interface (загальний інтерфейс шлюзу) – CGI). Інтерфейс CGI дозволяє Web-серверу запускати незалежний процес, і, ґрунтуючись на вхідних даних, отриманих від користувача, обробляти цю інформацію і повертати клієнту Web-сторінку, що динамічно створюється.
Приклади, розглянуті в цій статті, були тестовані на сервері Microsoft IIS. Щоб його встановити у вікні “Установка та видалення програм” необхідно вибрати пункт “Установка компонентів Windows”, у вікні, що з'явиться, поставити галочку навпроти “Internet Information Services (IIS)” і дотримуватися інструкції з встановлення. Управління Веб-вузлів, що створюються, виконується з вікна “Керування комп'ютером” (правою кнопкою на значку “Мій комп'ютер” -> Управління).
Приступимо до практики.
У першому прикладі створимо класичну програму "Привіт світ!". Розробка будь-якого проекту написаного на Delphi починається із запуску Delphi, не будемо і ми оригінальними. Після запуску створимо нову консольну програму: File->New->Other->Console Application. Після цього створиться шаблон консольної програми (Рис.1).
Головна відмінність від звичайного шаблону – інструкція , що вказує на те, що це консольна програма. Тепер потрібно написати тіло нашої програми (Лістинг 1)
Це найпростіший приклад розробки програми CGI. Головна вимога, яка зараз пред'являється до сайтів –динаміка. Тобто. необхідно навчитися отримувати введені користувачем дані, обробляти їх та повертати результат.
Тепер перейдемо до створення самого CGI-скрипту. Для цього створюємо в Delphi нову програму Web сервера: File -> New -> Other… і на вкладці New вибираємо Web Server Application. З'явиться вікно вибору формату програми, що створюється (Мал. 4). Вибираємо пункт "CGI Stand-alone executable" та натискаємо кнопку "ОК".
Для доступу до значення форми з запиту POST використовується метод ContentFields об'єкта типу TWebRequest. У випадку, коли форма надсилає дані методом GET, використовується метод QueryFields об'єкта типу TWebRequest (наприклад: Request.QueryFields.Values ['user_name'];). Текст HTML сторінки, що повертається програмою, передається у властивості Content об'єкта Response.
Помилка HTTP 405! Що робити?
Для коректної роботи програми потрібно настроїти роботу сервера. Правою кнопкою на іконці "Мій комп'ютер" -> Управління. У дереві “Керування комп'ютером (локальним)” у Web сервері знайдіть створену папку form (Мал. 6) та відкрийте властивості.
Після цього з'явиться діалогове вікно. На вкладці “Каталог” у списку “Дозволений запуск: ” вибираємо пункт “Сценарії та виконувані файли” (Мал. 7).
Фух. ось начебто і все, що я хотів вам сьогодні розповісти. Чекаю на ваші думки\пропозиції\висловлювання
UPD Повертаю посилання на вихідні коди . З.И.: Маю нахабство викладати і як практичне заняття студенти виконували ці 2 завдання У них все працювало.