Детальніше про виклик cgi-програм - html, css, javascript, perl, php, mysql

Після установки сеансу зв'язку Web-сервер виконає CGI-програму time.cgi і відправить броузеру результат її роботи, тобто образ нової Web-сторінки. Це приклад запуску найпростішої CGI-програми, подібної до тієї, яку ми розглядали на 17-му занятті, "Введення в CGI".

Інший спосіб запуску CGI-програми - включення її імені в код HTML-форми. Наприклад, наступна форма викликає CGI-програму process.cgi після клацання на кнопці подачі запиту Submit:

Цей метод виклику CGI-програми має додаткову перевагу: він дозволяє передавати CGI-програмі параметри для обробки. Мабуть, це властивість форм можна назвати одним з найбільш корисних.

Передача параметрів CGI-програмою

Корисність і гнучкість CGI-програм істотно зростають за рахунок передачі їм додаткових параметрів прямо з гіперпосилання. Наприклад, можна створити гіперпосилання в документі, яка запускає CGI-програму foo.cgi і передає їй два параметра X і Y, рівних деяким величинам. Для цього в дескрипторі <А HREF> потрібно задати URL спеціального виду. Формат цього URL показаний на рис. 20.1.

Кожен параметр являє собою ім'я деякого значення, яке буде передано CGI-програмою (подібно іменованого елементу HTML-форми). Під значенням параметра розуміється деяка рядок, що привласнюється цього імені. Наприклад, щоб створити гіперпосилання, після клацання на якій буде виконана CGI-програма з параметрами sign і year, яким присвоєно значення Овен і 1969 відповідно, використовується наступний HTML-код:

Усередині CGI-програми параметри обробляються функцією param модуля CGI звичайним способом:

Передати можна будь-яку кількість параметрів. Якщо потрібно передати порожній параметр (без значення), просто використовуйте одне його ім'я, подібно до того, як ми вчинили з параметром author в наступному прикладі:

Використання спеціальних символів

При виклику CGI-ггрограмм з параметрами слід знати про існування деяких спеціальних символів, які не можуть бути частиною URL. Наприклад, символ. (Знак питання) є спеціальним і відокремлює основну частину URL від списку параметрів. До числа інших спеціальних символів відносяться такі символи, як , Прогалини і лапки.

Повний список спеціальних символів наведено в документі стандартів Internet RFC 2396.

Щоб зробити один або кілька спеціальних символів частиною URL, потрібно закодувати їх спеціальним чином. Це означає, що ASCII-значення цього символу слід перетворити в двозначне шістнадцяткове число, а потім помістити перед ним символ відсотка. Результат застосування описаного "рецепта" кодування для фрази "Привіт, світ!" виглядає наступним чином (В цьому прикладі російський текст використаний тільки для наочності. При передачі ж кириличних символів у вигляді параметровURL їх потрібно закодувати точно так же, як і спеціальні символи.):

Цілком зрозуміло, що в такій частково "зашифрованої" рядку можна легко припуститися помилки і, взагалі, її вид малопривабливий. Тому в модулі CGI передбачена функція, призначена для автоматичного створення подібних рядків. На наступному прикладі показано, як отримати URL з потрібною "кодуванням" спеціальних символів.

Цей фрагмент програми створює правильно закодовану (з урахуванням вимог до URL) HTML-посилання. Зверніть увагу на те, як в цьому коді використовується модуль CGI: use CGI qw (: all escape). При використанні модуля CGI функція escape зазвичай недоступна для програми, і в разі необхідності вам доведеться вказати її в операторі use в явному вигляді.

Побудоване в результаті цієї програми значення URL матиме такий вигляд:

Останній символ в кінці URL ігнорується CGI-програмою при виділенні параметрів за допомогою функції param.

Схожі статті