Html și cgi

O interfață comună a gateway-ului este cheia pentru site-urile Web interactive.

Astăzi vom examina serviciile utilizate pe scară largă pe Internet și vorbiți despre ce trebuie să facă administratorul rețelei pentru a face aceste servicii disponibile atât în ​​cadrul companiei dvs. (prin Intranetul corporativ), cât și pentru alți utilizatori (prin Internet). Subiectul conversației de astăzi va fi HTML și o interfață comună a gateway-ului (CGI).

Utilizând etichete simple, nu este nevoie să creezi un hyperlink între cuvinte sau expresii. Cu toate acestea, un hyperlink poate fi nu numai text, ci și imagini. Să nu fim nefondați și să ne întoarcem la următorul fragment de cod:

Acest fragment de program afișează o imagine grafică a FROG.GIF. Dacă utilizatorul indică această imagine și dă clic pe mouse, browserul Web va trimite o cerere către pagina Web (FROG.HTML) către serverul Web (www.amphibian.com).

INTERFAȚA COMUNĂ DIN GATEWAY

De la început, dezvoltatorii de Web au căutat modalități de a face serverele web interactive, pentru a permite utilizatorilor să nu primească numai, ci și să introducă informații. Modul standard de a crea astfel de informații este acum cunoscut ca interfața comună a gateway-ului. Utilizatorul cere informații de la serverul Web și utilizatorul, folosind CGI, execută programul pentru a găsi informații și returnează rezultatul utilizatorului. Pentru a face acest lucru, serverul Web generează de obicei o pagină HTML, prin introducerea mai multor instrucțiuni HTML într-o pagină deja existentă. Un server Web care utilizează CGI în acest mod poate să ruleze o varietate largă de programe.

Dacă ați folosit motorul de căutare Web pentru a găsi textul care vă interesează, atunci ați aplicat CGI. Dar CGI în sine nu este un motor de căutare. De fapt, acesta oferă interacțiunea unor programe precum motoarele de căutare cu servere Web.

Serverele HTTP (Web) sunt concepute în primul rând pentru a servi documente HTML. Fișierele CGI, cu toate acestea, nu sunt documente, ci programe. Pentru a stoca programele CGI, majoritatea serverelor utilizează un director special, denumit de obicei CGI-BIN. Serverul Web știe că fișierul stocat în directorul CGI-BIN trebuie să fie executat și nu trimis pentru redare în browserul Web al utilizatorului. Programele CGI pot fi scrise într-o varietate de limbi, inclusiv limbile DOS, BASIC, C și scripting, cum ar fi Perl. Sarcina CGI este doar de a activa programul CGI la momentul potrivit și de a transmite toate datele necesare create de utilizator sau de mediul de operare la program. Programul CGI procesează apoi datele de intrare. După executarea acestei procesări (timpul de rulare - un maxim de câteva secunde, deoarece obiectivul este interactivitatea), programul trebuie să returneze un anumit rezultat utilizatorului prin intermediul browserului său web. Pentru ca browserul să reproducă rezultatul, programul CGI trebuie să convertească rezultatul său într-un document HTML.

FORMULAR PENTRU ORICE CAZ

Formați etichetele sursă pentru codul sursă

și
(a se vedea liniile 1 și 14 din Lista 1). ACȚIUNI definește acțiunile care trebuie luate după trimiterea formularului. Cu alte cuvinte, o acțiune care determină programul CGI trebuie să ruleze pentru a procesa formularul și specificați sau adresă URL completă sau parțială a programului (în acest caz /SGI-BIN/EXAMPLE.PL). În funcție de serverul Web, puteți seta directorul implicit pentru toate programele CGI. Dacă programul pe care doriți să îl rulați este stocat în acest director, este suficient să specificați numai numele fișierului care îl conține. În caz contrar, poate fi necesar să scrieți adresa URL completă a fișierului.

METHOD este utilizat pentru a transfera datele introduse dintr-o formă într-un program CGI care prelucrează aceste date. Ceva timp mai târziu, vom discuta despre metoda prezentata aici, dar acum observăm că puteți utiliza două metode de bază: GET și POST. Dacă urmează să fie utilizate pentru transmiterea datelor din matriță în programul CGI specificat în ACTION = „/SGI-BIN/EXAMPLE.PL“, metoda GET, asigurați-vă că programul CGI este capabil să accepte datele transmise în acest mod. În plus, dacă utilizați pentru a transfera date de la metoda POST formular, asigurați-vă că programul este în așteptare pentru a primi datele sunt în conformitate cu această metodă.

În plus, în formă sunt butoanele de comutare și chiar mai multe cadre joase pentru casetele de selectare. Ambele vă permit să alegeți între mai multe posibilități, dar acestea diferă într-o anumită măsură în scopul lor. Puteți marca mai multe casete de selectare simultan, dar puteți selecta doar un buton de comutare. Pentru comparație, selectarea unui singur steag nu anulează selecția celuilalt.

Să vorbim mai întâi despre butoanele de schimbare. Butonul este definit prin specificarea RADIO ca tip de intrare. Trei linii (6 până la 8) se referă la butoanele de schimbare, fiecare dintre acestea putând fi selectate. Toate liniile conțin o combinație de NAME = "PRODTYPE", specificând un câmp logic numit PRODTYPE. Dacă este bifat primul buton, câmpul PRODTYPE va fi setat la BRIDGE. (Valoarea este determinată de combinația "VALUE =" BRIDGE ""). Rețineți, de asemenea, cuvântul cheie CHECKED în rândul 6. Când apare primul formular, butonul BRIDGE este evidențiat; cu alte cuvinte, am făcut această valoare valoarea implicită; Utilizatorul îl poate modifica făcând clic pe butoanele Router sau Switch.

Apoi apare o serie de trei casete de selectare care vă permit să alegeți ce protocol de rețea acceptă produsul (linii 9-11). Când faceți clic în caseta de validare, apare "X" indicând că caseta de selectare este ridicată; Când faceți din nou clic pe "X", dispare; steagul este eliminat.

steaguri cadru este creat prin utilizarea expresiei „INPUT TYPE =“ checkbox“. Pentru ca programul să funcționeze corect, trebuie să specificați tipul de parametru de intrare ca un singur cuvânt. Trebuie să specificați, de asemenea, numele câmpului de intrare. documentul imprimat 1 intrare numele câmpului pentru primul pavilion este definit ca . după cum se poate vedea IP, codul conține încă cuvântul cheie Înregistrate, indicând faptul că, în mod implicit această casetă de validare este marcat, utilizatorul poate șterge pur și simplu clic în caseta.

Când caseta de selectare este ridicată, valoarea implicită pentru câmpul cu acest nume este "ON". Deși acest exemplu nu este specificat, puteți utiliza în plus atributul VALUE pentru a seta o valoare, de exemplu "VERDE", dacă acest flag este bifat. În exemplul nostru, toate cele trei casete de selectare sunt selectate în mod implicit. Astfel, dacă utilizatorul nu șterge caseta de validare, formularul va reveni la IP = ON, IPX = ON și APPLETALK = ON. Dacă este selectată numai caseta de validare IP, formularul va returna numai IP = ON. Nu sunt incluse casetele de selectare corespunzătoare IPX și APPLETALK.

Linia 12 din listare 1 definește butonul SUBMIT. După completarea formularului pentru transferul acestuia în programul CGI rulat pe serverul Web, utilizatorul trebuie să facă clic pe butonul SUBMIT. După cum puteți vedea pe linia 12, butonul SUBMIT este creat atunci când specificați SUBMIT ca tip de intrare. Textul introdus pe buton poate fi setat în variabila VALUE.

Atunci când utilizatorul face clic pe butonul SUBMIT, browserul Web are unele acțiuni definite în ACȚIUNE pentru acest formular (de exemplu, ca în rândul 1 din listare 1). În acest caz, serverul Web va porni scriptul în Perl, care în exemplul nostru este denumit EXAMPLE.PL și este localizat în directorul CGI-BIN.

Cum știe serverul Web că trebuie să execute un program și nu doar să îl trimită ca răspuns la o solicitare de browser Web? Acest lucru rezultă din numele directorului în care se află programul - CGI-BIN. În majoritatea serverelor Web, acest director este rezervat în mod specific fișierelor executabile. (Puteți stoca fișiere executabile în alte directoare, dar CGI-BIN trebuie să conțină toate fișierele destinate lansării la distanță prin intermediul Webului.)

Păstrarea tuturor fișierelor executabile în directorul CGI-BIN este, de altfel, o măsură de securitate bună. Ca administrator Web, trebuie să permiteți serverului Web să execute numai programele care se află în acest director. În plus, verificați cu atenție toate programele care sunt plasate în acest director și asigurați-vă că acestea nu pot fi utilizate pentru coruperea, schimbarea fișierelor sau ocolirea măsurilor de protecție. Dacă, de exemplu, cineva poate utiliza unul dintre programele dvs. pentru a citi fișierul de parolă de sistem, protecția sistemului dvs. nu este bună.

În acest exemplu, am menționat Perl, extracția practică și limbajul de raport. Pentru cei care nu îl cunosc, să explicăm. Perl este un limbaj interpretat care a fost inițial dezvoltat pentru utilizarea pe sistemele Unix, dar acum este portat în multe alte sisteme de operare. Există un interpret Perl, de exemplu, pentru sistemele Macintosh și Windows NT. Programele în limba Perl sunt de obicei numite scripturi, deoarece, în comparație cu dezvoltarea de programe în C și alte limbi de programare standard, ele sunt create relativ rapid și simplu. Perl este mai aproape de limbajul fișierelor de comandă DOS decât de limbile de programare clasice. Perl este deosebit de bun la lucrul cu șiruri de caractere, care, așa cum ați avut deja posibilitatea de a verifica, este foarte important pentru programarea CGI.

Linia 13 a listei 1 descrie butonul Resetare. Dacă utilizatorul face clic pe acest buton, toți parametrii sunt setați la valorile implicite. În exemplul nostru, butonul de comutare Bridge și toate cele trei casete de selectare (IP, IPX și AppleTalk) vor fi evidențiate.

Când faceți clic pe butonul Trimiteți, informațiile sunt trimise serverului Web ca perechi de nume de câmpuri (numite și chei) și valori. Să presupunem că, în exemplul formularului dat de noi, utilizatorul a introdus SuperDuper ca nume de produs, a remarcat butonul router și a indicat IP și IPX ca protocoale suportate. În acest caz, când faceți clic pe butonul Trimiteți, formularul va fi transferat cu parametrii NAME = SuperDuper, IP = ON și IPX = ON. (Dacă caseta de validare AppleTalk este șters, valoarea câmpului AppleTalk ("AppleTalk = off") nu va fi pur și simplu transmisă.)

Așadar, am analizat modul în care formularele HTML primesc informații de la un utilizator Web și le transmit programului CGI ca pereche cheie / valoare. Deoarece instrucțiunea ACTION specificată în eticheta de deschidere

, indică un fișier situat în directorul CGI-BIN, serverul Web știe că fișierul specificat ar trebui să fie pornit și să nu fie afișat de browserul Web solicitant, așa cum ar fi cazul unui document HTML simplu.

Pornind de la CGI

Programele CGI sunt similare cu cele obișnuite. Ei primesc, de asemenea, informații de la STDIN sau prin intermediul variabilelor de mediu și trimit producția la STDOUT.

Pentru a înțelege principiul interacțiunii dintre browserul Web și programul CGI, trebuie să ne întoarcem puțin și să analizăm modul în care browserul transmite cereri simple HTML și modul în care serverul Web reacționează la acestea.

Să presupunem că inserați următoarea legătură hypertext în documentul HTML:

Dacă selectați această legătură, browserul inițiază următoarea solicitare pe serverul Web:

În urma antetului GET, există două anteturi Accept care indică faptul că browserul poate accepta fișiere cu text simplu sau text HTML. Dacă browserul poate accepta mai multe tipuri de date, vor apărea mai multe titluri Accept în cerere, descriind fiecare tip de date în ceea ce privește MIME (Multipurpose Internet Extensions).

Răspunsul serverului Web la această solicitare va arăta cam așa:

Antetul "Server" trimite serverului Web numele și numărul versiunii și versiunea HTTP utilizată. Alte titluri descriu tipul de conținut (în cazul nostru, acesta este text în format HTML) și lungimea (231 octeți) a documentului transmis. Browserul Web citește și procesează segmentul HTML al acestui fișier.

În cazul CGI, întreaga procedură nu este foarte diferită, cu excepția faptului că fișierul solicitat va fi în directorul CGI-BIN. Acest lucru indică serverului Web că fișierul solicitat trebuie executat și nu trimis pe browserul Web pentru a fi afișat ca document HTML.

Am menționat deja mai sus că informațiile primite de la un utilizator sau de la un browser Web pot fi trimise pe serverul Web într-unul din două moduri: prin metoda GET sau POST.

Cu ajutorul metodei GET, toate datele formularului sunt incluse în URL-ul din așa-numitul șir de interogare. De exemplu, să presupunem că avem o formă simplă care are doar două câmpuri numite COLOR și SIZE și că utilizatorul a introdus SKY BLUE și, respectiv, LARGE. Să presupunem, de asemenea, că programul CGI, care ar trebui să se ocupe de date, este un script Perl, numit EXAMPLE.PL și este localizat în directorul CGI-BIN. Faceți clic pe butonul Trimiteți și browserul, după ce a generat anterior solicitarea HTML, îl va trimite pe serverul Web.

Codul formularului HTML trebuie să conțină o instrucțiune ACTION și, de asemenea, să spună serverului Web care dintre metodele (în cazul nostru GET) va fi folosit pentru a transfera datele. Astfel, primul operator al formularului nostru va fi:

Acest lucru va permite serverului Web să găsească calea completă la programul care ar trebui să fie pornit ("/CGI-BIN/EXAMPLE.PL") și că ar trebui utilizată metoda GET. După cum sa menționat mai devreme, metoda GET utilizează un șir de interogări pentru a transfera date către programul CGI. În exemplul nostru, atunci când un utilizator face clic pe butonul Trimite, browserul său web va trimite următoarea solicitare serverului Web:

Un șir de text care urmează semnul întrebării este șirul de interogare. Ca răspuns la această solicitare, serverul începe script-ul și pune linia EXAMPLE.PL COLOR = SKY% 20BLUEsize = LARGE HTTP 1.0 în variabila de mediu QUERY_STRING.

Data viitoare vom continua să vorbim despre ce ar trebui să faceți programul dvs. CGI pentru a procesa șirul de interogare. În plus, vom vorbi despre metoda POST de transfer de date la programul CGI.

Html și cgi

Figura 1.
Un exemplu de formular HTML cu mai multe câmpuri de introducere diferite, incluzând o casetă text, butoane de schimbare și casete de selectare.

PRINT 1 - EXEMPLU FORMULAR DE CODURI HTML

DETALII PE INTERNET

Cu orice sugestii sau întrebări, vă rugăm să ne contactați

Articole similare