1. Įvadas

  1. Formos
  2. Sąsajos (gateways)
  3. Virtualūs dokumentai
  4. Vidinis CGI darbas
  5. CGI programavimas
  6. Savikontrolės klausimai

Pažvelkite į Web puslapius, kurie jums įsiminė. Daugumoje jų rasite formas, užklausiančias registracijos duomenis ar pan., skaitliukus, rodančius kiek kartų buvo kreiptasi į puslapį, ar paslaugas, leidžiančias ieškoti informacijos duomenų bazėse. Daugumoje atvejų tai padaryta naudojant CGI (Common Gateway Interface - Standartinį Interneto Interfeisą).

CGI - tai Web serverio dalis, kuri gali bendrauti su kitomis programomis, veikiančiomis serveryje. CGI pagalba Web serveris gali iškviesti programą ir perduoti jai vartotojo duomenis (tokius kaip: vartotojo IP adresas, arba duomenys, kuriuos vartotojas perdavė naudodamasis HTML formų sintakse). Ši programa apdoroja perduotus duomenis, ir serveris gražina programos atsakymą Web klientui.

Tai būtų galima iliustruoti paveikslu Pav1.1:

Pav1.1 Paprasta CGI diagrama

CGI pagalba Web tinklas iš statinių dokumentų kolekcijos tampa interaktyvia terpe, kurioje vartotojas gali užduoti klausimus ir vykdyti programas. Apžvelkime kelis galimų programų tipus.

1.1. Formos

Formos - vienas iš daugiausiai sutinkamų CGI panaudojimo pavyzdžių. Formų interfeisas užtikrina interaktyvų procesą tarp vartotojo ir tiekėjo.

Formose naudojama daug grafinių detalių, leidžiančių pasirinkti, pažymėti arba įvesti norimą informaciją. Tai tokie elementai, kaip: tekstiniai laukai, slaptažodžių laukai, "Radio button", "Check box" ir pasirinkimo sąrašai.  Kai forma baigiama pildyti, vartotojas turi patvirtinti informaciją - nuspausti "Patvirtinimo" mygtuką (Submit button). Tada visa formos informacija perduodama serveriui, kuris vykdo atitinkamą CGI programą.

Dažniausiai formos naudojamos dviem tikslams. Dėl savo paprastumo, jas galima naudoti informacijai iš kliento gauti. Taip pat jas naudoja interaktyviam procesui tarp vartotojo ir serverio palaikyti. Pavyzdžiui, vartotojui pateikiamas sąrašas dokumentų, esančių serveryje. Savo ruožtu vartotojas perduoda serveriui užklausą informacijos paieškai. Tada vykdoma CGI programa ir atrenkami bei pateikiami vartotojui tik tie dokumentai, kurie tenkina jo nurodytus kriterijus.

Plačiau ir išsamiau apie formas pakalbėsime 4 skyriuje Formos ir CGI.

1.2. Sąsajos (gateways)

Web'o sąsajos - tai programos, kurios naudojamos pasiekti informacijai, prie kurios klientai neturi tiesioginio priėjimo. Tokios informacijos pavyzdžiu gali būti duomenų bazės. Mes negalime klientui tiesiogiai pateikti duomenų failo turinį, nes tai bus tik baitų seka. Šią informaciją reikia specialiai apdoroti.

CGI siūlo spręsti šią problemą naudojant sąsajas. Tam, kad suformuoti SQL užklausas ir nuskaityti duomenis iš DB, galima naudoti specialias programavimo kalbas (oraperl arba DBI praplėtimą Perlui). Turint norimą informaciją, ją galima apdoroti ir nusiųsti klientui. Čia CGI programa naudojama kaip sąsaja tarp kliento ir duomenų bazės.

Pav1.2  Sąsaja su duomenų baze.

Analogiškai galima kurti sąsajas kitiems interneto informacijos servisams.

1.3. Virtualūs dokumentai

Virtualūs dokumentai yra CGI šerdis. Jie kuriami dinamiškai, atsižvelgiant į kliento pareikalavimus. Galima sukurti virtualų HTML, paprastą tekstą, paveiksliuką ar net audio dokumentą. Paprasčiausio virtualaus dokumento pavyzdys gali būti šis:

Welcome to Shishir's WWW Server!
You are visiting from diamond.com. The load average on this machine is 1.25.
Happy navigating!

Šiame pavyzdyje dinaminė informacija panaudota dviejose vietose: IP vardas ir duomenų perdavimo greitis. Tai labai paprastas pavyzdys, tačiau gali būti sukurti dokumentai, kurie naudoja grafinių bibliotekų, sąsajų ir formų kombinacijas.

1.4. Vidinis CGI darbas

Tai kaipgi visas interfeisas dirba? Dauguma serverių tikisi, kad CGI programos patalpintos specialioje direktorijoje, dažniausiai vadinamoje cgi-bin ir/arba turi atitinkamą išplėtimą. Kai vartotojas atidaro URL, asocijuotą su CGI programa, klientas siunčia serveriui pareikalavimą failui. Šis pareikalavimas atrodo taip pat, kaip ir kitiems dokumentams. Skirtumas yra tas, kad kai serveris atpažįsta, kad reikalaujamas failas yra CGI programa, jis negražina vartotojui šio failo turinio, o vykdo programą. Štai kaip atrodo standartinis kliento pareikalavimas:

GET /cgi-bin/welcome.pl HTTP/1.0
Accept: www/source
Accept: text/html
Accept: image/gif
User-Agent: Lynx/2.4 libwww/2.14
From: shishir@bu.edu

GET pareikalavimas identifikuoja gražinamą failą kaip /cgi-bin/welcome.pl. Jeigu serveris sukonfigūruotas, kad failus, esančius direktorijoje /cgi-bin atpažintų kaip CGI programas, tai jis supranta, kad turi vykdyti programą vietoj jos turinio gražinimo peržiūros programai. Eilutė HTTP/1.0 identifikuoja naudojamą komunikavimo protokolą. Kliento užklausimas taip pat nurodo duomenų formatus, kuriuos gali priimti (www/source, text/html, ir image/gif), bei indentifikuoja save Lynx klientu, ir nusiunčia vartotojo informaciją. Visa šita informacija yra prieinama CGI programai.

Būdas, kuriuo CGI programos gauna duomenis, priklauso nuo serverio. UNIX'o sistemose ši informacija gaunama iš standartinio įvedimo įrenginio (STDIN) ir UNIX'o aplinkos kintamųjų. Aplinkos kintamieji pateikia tokius duomenis, kaip įvestos informacijos formatas, ilgis, informacija apie vartotoją ir t.t. Jie taip pat saugo serverio vardą, komunikacijos protokolą ir panašią informaciją.

Vykdoma CGI programa sukuria ir išveda naują dokumentą arba nurodo URL į jau esantį. UNIX'o sistemoje programa siunčia duomenis į standartinį išvedimo įrenginį (STDOUT) kaip duomenų srautą. Šis duomenų srautas susideda iš dviejų dalių: HTTP antraštės, kuri nurodo bent jau išvedamų duomenų formatą,  ir dokumento kūno. Štai galimas išvedamos informacijos pavyzdys:

Content-type: text/html

<HTML>
<HEAD><TITLE>Welcome to Shishir's WWW Server</TITLE></HEAD>
<BODY>
<H1>Welcome</H1>
.
.
</BODY>
</HTML>

1.5. CGI programavimas

CGI programavimui galima naudoti bet kokią programavimo kalbą. Tačiau kai kurios jų yra labiau pritaikytos CGI programavimui, nei kitos. Pasirenkant programavimo kalbą reikia atkreipti dėmesį į tokius dalykus:

Dėl šių priežasčių populiariausios programavimo kalbos yra Perlas, C, C++, C Shell, Tcl ir Visual Basic.

Čia visi pavyzdžiai bus pateikti naudojant Perl programavimo kalbą. Ji pasirinkta dėl :

1.6. Savikontrolės klausimai

  1. Kas tai yra CGI?
  2. Kam naudojamos formos?
  3. Kaip veikia sąsajos?
  4. Kokios virtualių dokumentų ypatybės?

Atsakymai