ПредишенСледващото

Ако проектирате форми, рано или късно ще трябва да се създаде заявка от сървъра за обработка. Не изпадайте в паника. Няма нищо магическо в програмирането на сървъра страна, и това не е твърде трудно. С известно постоянство и малко практика ще бъде избиване приложения за обработка.

Най-важният съвет, който можем да дадем за формуляра за програмиране, което лесно се помни - да копирате работата на други хора. Напиши обработка на формуляр за кандидатстване от нулата много трудно. Копирайте е на ход и да го променя за нуждите на своята форма - много legche.K щастие, сървърни продавачите знаят това и обикновено доставят пробите се обработват от формуляра за кандидатстване, заедно със сървъра. Копаем малко CGI-SRC директория, и вие ще намерите няколко полезни примери, които могат да се копират и да се прилагат.

Не е необходимо да се възпроизвежда дори да разчита на всички добрата работа, която идва с вашия сървър, и не можем да осигурим пълно ръководство за програмиране форми. Всичко, което можем да направим - е да предложи прости примери GET- и пост-приложение, което ви дава представа за естеството на тази работа и, може би побутване в правилната посока.

Преди да започнем, моля, имайте предвид, че не всички сървъри са еднакво причиняват тези приложения.


Нашите примери обхващат широк клас от сървъри, които са настъпили от оригиналния HTTP сървър, създаден в средата на НДСО (Национален център за суперкомпютърни приложения, Националния център за суперкомпютърни приложения). Те също трябва да се работи с много популярни и лесно достъпни с Apache. Във всички случаи потърси обяснение от документацията на сървъра. Подробна информация може да се намери в книгите: «CGI програмиране с Perl» Скот Gulich (Scott Guelich), Shishir Gundavarama (Shishir Gundavaram) и Гюнтер Birzneksa (Гюнтер Birznieks), «Webmaster в орехова черупка» 2 Стивън Speynauera (Stephen Spainhour) и Робърт Eckstein (Робърт Eckstein), издадена от издателство «O'Reilly».

Една алтернатива на CGI-програмен модел е Java-servletov3 описан в книгата «Сървлет Програмиране» 4, от перото на Jason Hunter (Jason Hunter) и Уилям Крауфорд (William Crawford) (O'Reilly). Servlets могат да се използват за лечение на двете GET- и пост-форми, въпреки че те са посветени на по-общи въпроси. В тази книга, не е пример за сървлети.

Извеждане на резултати
Преди да започнем, ние трябва да обсъдим как прилагането излиза от страна на сървъра.


Всички заявления от сървъра предава резултатите обратно на сървъра (по-нататък - за потребители), като ги naravlyaya на стандартния изход на заявлението като файл в MIME- кодиран. Следователно, на първа линия на изхода трябва да бъде MIME-тип съдържание ЕВРОВОК. Ако молбата Ви връща HTML-документ, на първия ред е:

Вторият ред трябва да бъде напълно изпразнен. Вашата кандидатура може да се върне на съдържанието на друг вид - просто добавете правилното MIME-тип. Снимки GIF, например, се предхожда от:

Действително текст, който не трябва да се тълкува като HTML, може да се върне като:

Това често е полезно, когато трябва да се върне на изхода на другите отбори, генериране на обикновен текст, вместо HTML.

Когато www.kumquat.com сървърни процеси този URL, това е приложение, наречено самосвални получите, съхранявани в CGI-бен директория.


Всичко, което идва след въпросителен знак, преминал към заявлението като параметри.

Освен това, това не може да е различна, в зависимост GET URL тип характер на. Докато формата се поставя в името на URL / стойност двойки могат да причинят приложение GET URL тип, съдържащ само стойностите. По този начин:

това е валидно предизвикателство за параметрите, разделени от "плюс" (+). Такъв разговор обикновено се срещат, когато приложение референцията е маркер за търсене на документи. Потребителят написали параметри в полето за въвеждане, на прилагането от сървъра като анонимните параметри, разделени от "плюс".

Ако се обадите на GET-прилагане с именувани параметри, сървърът ще изпрати тези настройки заявление по един начин. Неназовани параметри се предават по различен начин.

Използването на параметри с имена с Get-приложения
Именувани параметри са преминали през Get-приложения, за да се създаде QUERY_STRING променлива и да го зададете като стойност на цялата тази част от URL адреса, който е последван от въпросителен знак. Ако вземем предишния пример QUERY_STRING стойност е:

Вашата кандидатура трябва да получи тази променлива, а Изберете име / стойност двойки. За щастие, повечето от сървърите се доставят заедно с редица стандартни програми, които изпълняват тази работа, така че една проста програма, С просто да показват настройки може да изглеждат така:

#include
#include
#define MAX_ENTRIES 10000
typedef структура знак * Val;
> Влизане;
знак * makeword (знак * линия, знак стоп);
Чар Х2С (Чар * какво);
нищожен unescape_url (Чар * URL);
нищожен plustospace (Чар ул *);
Основната (междинно argc, знак * argv [])
INT num_entries, I;
знак * QUERY_STRING;
/ * Връща стойността на променливата на QUERY_STRING среда * /
QUERY_STRING = getenv ( "QUERY_STRING");
/ * Екстракт параметри за изграждане на маса на записи * /
за (num_entries = 0; QUERY_STRING [0]; num_entries ++) записи [num_entries] .val = makeword (QUERY_STRING, '');
plustospace (записи [num_entries] .val);
unescape_url (записи [num_entries] .val);
публикации [num_entries] .name =
makeword (записи [num_entries] .val, "=");
>
/ * Издаване на "риба" на HTML * /
ФОРМАТ ( "Content-Type: текст / HTML \ Н");
ФОРМАТ ( "\ п");
ФОРМАТ ();
ФОРМАТ ();
ФОРМАТ ( "именувани параметри \ Н");
ФОРМАТ ( "");
ФОРМАТ ();
ФОРМАТ ( "Въвели сте следните опции: \ N");
ФОРМАТ ( "
    \ N "); / * Издаване параметри, получени от потребителя * /
    за (I = 0; и \ п ");
    ФОРМАТ ( "\ п");
    >

В реални приложения, трябва да поставите валидна кодове обработка параметър след освобождаването им и преди генериране на HTML.

Разбира се, вие също трябва да се промени HTML-текст, издаден в съответствие с функцията на вашата кандидатура.

Използването на неназовани параметри GET-приложения
Неназовани параметри се предават на заявлението, както параметрите на командния ред. Това прави за развитието на заявление от сървъра почти тривиално. Ето една проста команда последователност, настройките за печат:

#! / Bin / CSH -f
#
# Дисплей на дефинирани от потребителя параметри като GET неназован
ехо "Content-Type: текст / HTML"
ехо
ехо ''
ехо ''
ехо "Заключение неназовани параметри"
ехо ''
ехо ''
ехо "Ти попита следното:"
ехо "
    "
    foreach аз ($ *)
    ехо "
  • '$ I
    endecho "
"
ехо ''
изход 0

Ние отново следват същия принцип: тип извод заглавието на документа, включително и съдържанието на MIME-тип, за него - параметрите и стандартно завършване. За да се превърне това в реалния свят приложение, сменете foreach цикъла, че нещо наистина.

#include
#include
#define MAX_ENTRIES 10000
typedef структура знак * Val;
> Влизане;
знак * makeword (знак * линия, знак стоп);
знак * fmakeword (FILE * е, знак стоп, Int * лен);
Чар Х2С (Чар * какво);
нищожен unescape_url (Чар * URL);
нищожен plustospace (Чар ул *);
Основната (междинно argc, знак * argv [])
INT num_entries, I;
/ * Екстракт параметри от стандартния вход, за изграждане на маса на записи * /
за (num_entries = 0 ;! feof (стандартния вход); num_entries ++) записи [num_entries] .val = fmakeword (стандартния вход, '', CL);
plustospace (записи [num_entries] .val);
unescape_url (записи [num_entries] .val);
публикации [num_entries] .name =
makeword (записи [num_entries] .val, "=");
>
/ * Издаване на "риба" на HTML * /
ФОРМАТ ( "Content-Type: текст / HTML \ Н");
ФОРМАТ ( "\ п");
ФОРМАТ ();
ФОРМАТ ();
ФОРМАТ ( "именувани параметри \ Н");
ФОРМАТ ( ""); ФОРМАТ ();
ФОРМАТ ( "Въвели сте следните опции: \ N");
ФОРМАТ ( "
    \ N ");
    / * Издаване параметри, получени от потребителя * /
    за (I = 0; и \ п ");
    ФОРМАТ ( "\ п");
    >

Като други примери, тази програма е много полезен за проверка на параметрите предавани на сървъра на приложения, докато не сте запознати с форми и отстраняване на грешки приложения. Тя може да се използва като основа за други приложения, като поставите съответния код за обработка след списъка на параметрите е изградена, и чрез промяна на изхода на програма за изпращане на потребителя да съответните резултати.

Свързани статии

Подкрепете проекта - споделете линка, благодаря!