Mis on tavaline lüüsi liides. Aktsepteerib brauserist sisendit. Serveri seadistamine CGI jaoks

Ühine lüüsi liides (CGI, vene üldine lüüsi liides) – see standardmeetod dünaamiline juhtimine kasutavate veebilehtede sisu eriprogrammid käivitamine veebiserveri poolel. Neid programme nimetatakse CGI-käsitlejateks või lüüsideks, kuid sagedamini - CGI-skriptideks, kuna... need on tavaliselt kirjutatud skriptikeeltes, peamiselt Perlis.

Kuna hüpertekst on olemuselt staatiline, ei saa veebileht kasutajaga otse suhelda. Enne JavaScripti tulekut ei olnud kasutaja toimingutele reageerimiseks muud võimalust kui nende sisestatud andmete edastamine veebiserverisse edasiseks töötlemiseks. CGI puhul toimub see töötlemine kasutades välised programmid ja skriptid, millele pääseb ligi standardse (vt RFC 3875: CGI versioon 1.1) liidese kaudu – ühise lüüsi kaudu. CGI toimimist illustreeriv lihtsustatud mudel on näidatud joonisel fig. 1.

Kuidas CGI töötab?

CGI kaudu töötamise üldistatud algoritmi saab esitada järgmiselt:

  1. Klient küsib CGI rakendust oma URI kaudu.
  2. Veebiserver võtab päringu vastu ja installib keskkonnamuutujad , mille kaudu edastatakse rakendusele andmed ja teenuseteave.
  3. Veebiserver suunab päringud ümber: standardne voog sisend (stdin) kutsutava programmi sisendisse.
  4. CGI rakendus teeb kõik vajalikud toimingud ja genereerib tulemused HTML-ina.
  5. Loodud hüpertekst tagastatakse veebiserverisse standardse väljundvoo (stdout) kaudu. Veateated saadetakse stderri kaudu.
  6. Veebiserver edastab päringu tulemused kliendile.

CGI rakendused

Levinuim ülesanne, milleks CGI-d kasutatakse, on interaktiivsete lehtede loomine, mille sisu sõltub kasutaja tegevusest. Tüüpilised näited Sellised veebilehed on saidi registreerimisvorm või kommentaaride esitamise vorm. Teine CGI kasutusvaldkond, mis jääb kasutaja suhtluse kulisside taha, on seotud kliendi kohta teabe kogumise ja töötlemisega: "küpsiste" seadistamine ja lugemine; brauseri ja operatsioonisüsteemi kohta andmete hankimine; veebilehe külastuste arvu loendamine; veebiliikluse jälgimine jne.

Neid võimalusi pakub asjaolu, et CGI-skripti saab ühendada andmebaasi või juurdepääsuga failisüsteem server. Seega saab CGI skript salvestada informatsiooni andmebaasi tabelitesse või failidesse ja sealt nõudmisel kätte saada, mida HTML-i abil teha ei saa.

TÄHELEPANU: CGI ei ole programmeerimiskeel! See on lihtne protokoll, mis võimaldab veebiserveril edastada andmeid läbi stdini ja lugeda neid stdoutist. Seetõttu mis tahes serveriprogramm, mis on võimeline töötama standardsete I/O voogudega.

Tere, Maailm!

Lihtsa CGI-skripti näide Perlis on loendis 1. Kui salvestate selle koodi faili nimega hello (nimi võib olla ükskõik milline, laiend võib olla sama), asetage fail cgi-bin serveri kataloogi (täpsemalt selles veebiserveri kataloogis , mis on mõeldud CGI rakendustele ja mis on määratud veebiserveri seadetes) ja määrake sellele failile täitmisõigused (chmod uo+x hello), siis muutub see kättesaadavaks aadressil nagu http ://serverinimi/cgi-bin/tere.

Loend 1. Näidis CGI skript (Perl)

#!/usr/bin/perl print "Sisutüüp: text/html\n\n"; printida< CGI ütleb Tere

Tere, Maailm!



HTML väljumine;

Selles koodis määrab rida #!/usr/bin/perl Perli tõlgi täieliku tee. Sisutüübi rida: text/html\n\n on http-päis, mis määrab sisutüübi (MIME-tüüp). Kahekordne reavahetusmärk (\n\n) eraldab päised kirja sisust.

Keskkonnamuutujad

Kõigil CGI rakendustel on juurdepääs veebiserveri määratud keskkonnamuutujatele. Need muutujad mängivad CGI-programmide kirjutamisel olulist rolli. Tabelis on loetletud mõned CGI jaoks saadaolevad muutujad.

Keskkonna muutujaKirjeldus
SISU TÜÜP Serverisse saadetavate andmete tüüp. Kasutatakse siis, kui klient saadab andmeid, näiteks laadib faili alla.
CONTENT_LENGTHSisu suuruse taotlemine. See muutuja on määratletud POST-päringute jaoks.
HTTP_COOKIETagastab küpsiste komplekti võtme-väärtuse paaridena.
HTTP_USER_AGENTKasutajaagendi (brauseri) teave
PATH_INFOCGI kataloogi tee
QUERY_STRINGPäringustring (URL-kodeeringuga), mille edastas GET-meetod.
REMOTE_ADDRTaotluse esitanud kliendi IP-aadress.
REMOTE_HOSTKliendi täisnimi (FQDN). (Kui see on olemas)
REQUEST_METHODMeetod, mille abil taotlus täidetakse. Kõige sagedamini HANGI või POSTITA.
SCRIPT_FILENAMENõutud skripti täielik tee (serveri failisüsteemis).
SCRIPT_NAMESkripti nimi
SERVER_NAMEServeri nimi
SERVER_ADDRServeri IP-aadress
SERVER_TARKVARATeave serveritarkvara kohta

2. loend näitab väikese Perli programmi koodi, mis prindib keskkonnamuutujate loendi. Selle töö tulemus on näidatud joonisel fig. 2.

Loetelu 2. Keskkonnamuutujad

#!/usr/bin/perl print "Sisutüüp: text/html\n\n"; printida" \n \n

Keskkond

\n"; foreach (sortimisklahvid %ENV) ( print " $_: $ENV($_)
\n"; ) print "

\n"; väljuda;

Andmeedastus: GET meetod

GET-meetodit kasutatakse URL-koodiga andmete edastamiseks päringustringi kaudu. Taotletud ressursi aadress (CGI-skript) ja sellele edastatud andmed on eraldatud märgiga "?". Sellise aadressi näide:

http://example.com/cgi-bin/script.cgi?key1=value1&key2=value2

GET-meetodit kasutatakse brauseri aadressiribale sisestatud andmete jaoks vaikimisi. Sama stringi saab genereerida ka veebivormilt andmete saatmisel (tag

), kui vormi esitamisviis pole määratud. Kogu GET-meetodil saadetud teave saadetakse selge tekstina, seega ei tohiks seda kunagi kasutada paroolide või muu sarnase teabe saatmiseks serverisse. GET-meetodil on suuruse piirang: päringustring ei tohi olla pikem kui 1024 tähemärki.

GET-meetodiga saadetud teave edastatakse päises QUERY_STRING stringina, mis koosneb vormipaaridest võti=väärtus, saab CGI skript selle hankida samanimelise keskkonnamuutuja kaudu.

Nimekiri 3. Andmete saatmine veebivormilt GET meetodil

Lihtne CGI-skriptimine: andmete saatmine GET-meetodi abil Teie nimi: nimi = "kasutaja">
Kust sa pärit oled?: nimi = "from">



Pärast andmete sisestamist loendist 3 vormile ja nuppu "Esita" klõpsamist genereeritakse selline päringutring:

http://example.com/cgi-bin/ ütle Tere?kasutaja=mingi tekst&alates=teine ​​tekst

kus: sayhello - CGI skripti nimi; user ja from on parameetrite nimed; sometext ja othertext on vastavate parameetrite kasutaja sisestatud väärtused.

4. loend on näidisskript, mis suudab töödelda loendi 3 vormiandmeid.

Nimekiri 4. Andmete saatmine veebivormilt GET meetodil

#!/usr/bin/perl local ($buffer, @pairs, $pair, $name, $value, %FORM); # Analüüsige keskkonda $ENV("REQUEST_METHOD") =~ tr/a-z/A-Z/; if ($ENV(" REQUEST_METHOD")eq" SAADA") ( $puhver = $ENV(" QUERY_STRING"); ) # Jagage päringustring võtme/väärtuse paarideks @pairs = split(/&/, $buffer); foreach $pair (@pairs) (($nimi, $väärtus) = split(/=/, $ paar); $value =~ s/%(..)/pack("C", hex($1))/nt Salvestame andmed massiivi) header print "Content-type: text/html\n\n" # Saada hüpertekstprint;< CGI ütleb Tere

Tere, $FORM(kasutaja) $FORM(from)-st!



HTML väljumine;

Andmeedastus: POST meetod

Üldiselt on POST-meetod sobivam teabe edastamiseks CGI-skripti. Edastatud andmete plokk moodustatakse samamoodi nagu GET-meetodi puhul, kuid tegelik edastamine toimub päringu põhiosas. Andmed sisestatakse kaudu CGI rakendusse standardne sisend(stdin).

Selle meetodi abil andmete saatmiseks tuleb see vormi kirjelduses (action="POST") selgelt määratleda.

Sisestuse töötlemiseks peab CGI skript lugema stdini ja selle korrektseks tegemiseks peab ta teadma muutuja CONTENT_LENGTH sõnumi suurust. Selle illustreerimiseks muutkem keskkonnaanalüüsi plokki loendis 4, asendades selle järgmise koodiga:

... # Analüüsige keskkonda $ENV("REQUEST_METHOD") =~ tr/a-z/A-Z/; if ($ENV(" REQUEST_METHOD")eq" POSTITA")( loe( STDIN, $puhver, $ENV(" CONTENT_LENGTH"}); } ...

Muutujas $ buffer salvestatud parameetrite ja nende väärtuste edasine töötlemine toimub samamoodi nagu GET-meetodi kasutamisel.

CGI eelised

Paljud CGI võimalused on nüüd dubleeritud selliste tehnoloogiatega nagu DHTML, ActiveX või Java apletid. Serveri skriptide kasutamise peamised eelised on see, et võite olla kindel, et kõik kliendid (välja arvatud harvad erandid, mis on tavaliselt seotud teatud ressurssidele juurdepääsu blokeerimisega tulemüüri tasemel) saavad serverirakendusega töötada. Kliendiprogrammid võivad olla brauseris lihtsalt keelatud või üldse mitte toetatud.

CGI puudused

Selle tehnoloogia suurimaks puuduseks on veebiserveri suurenenud jõudlusnõuded. Fakt on see, et iga kõne CGI-rakendusele põhjustab uue protsessi loomise koos kõigi sellega kaasnevate lisakuludega. Kui rakendus on kirjutatud vigadega, siis on võimalik olukord, kus see näiteks tsüklisse läheb. Brauser katkestab ühenduse ajalõpu aegumisel, kuid serveri poolel jätkub protsess seni, kuni administraator sunnib selle katkestama. Sellega seoses on kliendiskriptidel märkimisväärne eelis, kuna need hukatakse kohapeal.

CGI puuduseks on ka see, et veebiserver on teistest lahendustest vähem turvaline. Serveriressurssidele juurdepääsuõiguste ebaõige seadistamine CGI-rakendusest võib ohustada mitte ainult veebiserveri jõudlust, vaid ka infoturvet. Kuid mis tahes võrgutehnoloogiat võib definitsiooni järgi pidada potentsiaalselt ohtlikuks.

Selle lehe alaline aadress:

Andover, Massachusetts, 19. november 2003

The Commerce Group, Inc. (NYSE: CGI), Massachusettsi suurim erasõidukite kindlustuse autor ja CGI Group Inc. (CGI) (TSX: GIB.A; NYSE: GIB;), juhtiv infotehnoloogia ja äritöötlusteenuste pakkuja, teatas täna kuueaastase äriprotsesside allhanke (BPO) lepingu uuendamise allkirjastamisest, mille väärtus on 35 miljonit USA dollarit. CGI pakub Massachusettsi era- ja kommertsautoliinidele täielikke poliitikatöötlusteenuseid, samuti CGI agentuuriliidese tööriista CollaborativeEdge, rakenduste tuge ja hooldust, regulatiivset tuge, süsteeminõustamist ja dokumendihaldusteenuseid.

Gerald Fels, Commerce Groupi tegevasepresident ja finantsjuht, märkis: "Massachusettsi juhtiva erasõiduautode pakkujana on meie eesmärk pakkuda oma agentidele ja töötajatele teenuseid, mis aitavad neil oma kõrgeimal tasemel toimida. Aastate jooksul oleme arendanud tugevaid suhteid CGI-ga. Nende süsteem on töökindel ja täpne ning nende meeskond on meie sisemiste töötlemissüsteemidega väga tuttav. See on meie jaoks oluline."

CGI kindlustusäriteenuste osakonna president Serge LaPalme lisas: "Meil on väga hea meel, et saame jätkata oma suhet Commerce Groupiga, mis kestab üle 30 aasta. Commerce Group on jätkuvalt üks meie hinnatud äripartnereid ja on strateegiline meie edu, aidates oma klientidel keskenduda oma põhitegevusele, kasutame uusi tehnoloogiaid siis, kui see on mõistlik. Meie meeskond tunneb põhjalikult kindlustusvaldkonda ja riigi väga ainulaadset regulatiivset keskkonda kohandada olemasolevaid lahendusi selle pidevalt areneva sektoriga.

Teave The Commerce Group, Inc. kohta

Kindlustusvaldusfirma Commerce Group, Inc. peakorter asub Massachusettsi osariigis Websteris. Commerce Groupi vara- ja õnnetusjuhtumikindlustuse tütarettevõtete hulka kuuluvad The Commerce Insurance Company ja Citation Insurance Company Massachusettsis, Commerce West Insurance Company Californias ja American Commerce Insurance Company Ohios. Oma tütarettevõtete kaudu on Commerce Group ühendatud kindlustustegevusega 22. kohal. riigi suurim isikliku autokindlustuse grupp A.M. Parim, põhineb 2002. aasta otsekirjutatud lisatasude teabel.

CGI kohta
1976. aastal asutatud CGI on oma töötajate arvu põhjal suuruselt viies sõltumatu infotehnoloogiateenuste ettevõte Põhja-Ameerikas. CGI-s ja sellega seotud ettevõtetes töötab 20 000 spetsialisti. CGI aastane tulude jooksevmäär on praegu 2,8 miljardit CDN dollarit (1,9 miljardit USA dollarit) ja 30. septembril 2003 oli CGI tellimuste maht 12,3 miljardit CDN dollarit (9,1 miljardit USA dollarit). CGI pakub täielikke IT- ja äriprotsessiteenuseid klientidele üle maailma kontoritest Kanadas, Ameerika Ühendriikides ja Euroopas. CGI aktsiad on noteeritud TSX-il (GIB.A) ja NYSE-l (GIB) ning need on kantud TSX 100 koondindeksisse, samuti S&P/TSX Kanada infotehnoloogia ja Kanada keskmise kapitaliindeksite veebisaidile.

Interaktiivne kasutajaliides on süsteem, mis võimaldab kasutaja ja programmi vahelist suhtlust. WWW jaoks saab interaktiivse liidese määratleda kui HTML-dokumentide jada, mis rakendavad kasutajaliidest. Liidese ehitamise põhimõtteid saab tinglikult liigitada ka HTML-dokumendi genereerimise tüübi järgi:

    staatiline;

    dünaamiline.

Esimesel juhul on liidese allikaks mõnes teksti- või HTML-orienteeritud redaktoris loodud HTML-dokument. Sellest tulenevalt jääb see dokument kasutamise ajal muutumatuks. Teisel juhul on liidese allikaks cgi mooduli poolt genereeritud HTML-dokument. Järelikult on liidese muutmisel kasutamise ajal teatud paindlikkus.

Seega saame tutvustada WWW interaktiivse liidese kontseptsiooni. WWW interaktiivne liides on staatiliste või dünaamiliselt genereeritud HTML-dokumentide jada, mis rakendab kasutajaliidest.

Peaaegu iga ülesanne, mis lahendab kliendilt andmete vastuvõtmise probleemi, hõlmab liidese loomist. Kõige huvitavam on liideste ehitamine erinevatele andmebaasidele, ligipääs SQL serverile, välisseadmetelt info vastuvõtmine ja klienditööjaamade loomine. Kõik see on võimalik läbi CGI (Common Gateway Interface). Common Gateway Interface (CGI) on standard välise rakendusprogrammi liidese jaoks WWW-serveriga.

Ülaltoodud liideste loomise ülesanne on jagatud kaheks osaks (lisa 2):

    Kliendi osa. Kliendiosa loomiseks peate looma HTML-dokumendi, mis rakendab kasutajaliidest. HTML-is on see võimalik vormide kaudu.

2. Serveri osa. Serveriosa koosneb käivitatavast moodulist, mis lahendab põhiülesanded kliendiosast tulevate andmete töötlemise, HTML-vormingus vastuse genereerimise jms. Sellist moodulit nimetatakse cgi moodul.

cgi spetsifikatsioon

CGI määratleb 4 teabevoogu (lisa 3):

1) Keskkonnamuutujad tinglikult jagatud kahte tüüpi:

a) ühine igat tüüpi päringutele (määratud kõikidele taotlustüüpidele);

b) olenevalt päringumeetodist.

2) Standardne väljundvoog

CGI- moodul väljastab informatsiooni standardsesse väljundvoogu. See väljund võib olla kas cgi mooduli poolt genereeritud dokument või juhis serverile, kust vajalik dokument hankida. Tavaliselt cgi-moodul toodab oma väljundit. Selle lähenemisviisi eeliseks on see cgi-moodul ei tohiks luua iga päringu jaoks täielikku HTTP-päist.

3) Standardne sisendvoog

Taotluse meetodi korral POSTITA andmed edastatakse HTTP päringu sisuna. Ja need saadetakse standardsesse sisendvoogu. Andmed edastatakse cgi-moodulile järgmisel kujul: nimi= väärtus& nimi1= väärtus1&...& nimiN= väärtusN,

Kus nimi- muutuja nimi, väärtus- muutuja väärtus, N- muutujate arv.

CONTENT_LENGTH bait saadetakse standardsele sisendfaili deskriptorile. Server edastab cgi moodulile ka CONTENT_TYPE (andmetüüp). Server ei saada faililõpu märki pärast CONTENT_LENGTH baidi andmete saatmist või pärast seda, kui cgi-moodul on need lugenud. Keskkonnamuutujad CONTENT_LENGTH ja CONTENT_TYPE määratakse siis, kui server käivitab cgi mooduli. Seega, kui vormi täitmisel märgendi argumendiga FORM - METHOD="POST" genereeritakse andmestring firm=MMM&price=100023, määrab server CONTENT_LENGTH väärtuseks 21 ja CONTENT_TYPE väärtuseks application/x-www. -form-urlencoded ja standardi kohaselt saadab sisendvoog andmeploki.

Meetodi korral SAADA, edastatakse andmestring URL-i osana. Need. näiteks http://host/cgi-bin/script?name1=value1&name2=value2

Sel juhul võtab keskkonnamuutuja QUERY_STRING väärtuse nimi1=väärtus1&nimi2=väärtus2

4) Argumendid käsurida

CGI- serveri käsureal olev moodul võtab vastu: URL-i ülejäänud osa pärast cgi mooduli nime esimese parameetrina (esimene parameeter on tühi, kui seal oli ainult cgi mooduli nimi) ja märksõnade loendi otsinguskripti käsurea ülejäänud osa või vormiväljade vahelduvad nimed, millele on lisatud võrdusmärk ja vastavad muutujaväärtused. Märksõnad, nimed ja vormivälja väärtused saadetakse dekodeerituna (HTTP URL-i kodeeringu vormingust) ja uuesti kodeeritakse vastavalt Bourne'i shelli kodeerimisreeglitele, nii et käsureal olev cgi-moodul võtab teabe vastu ilma täiendavaid teisendusi vajamata. .

Pärast struktuuri "nimi-väärtus" moodustamist võite hakata lahendama probleeme, mille jaoks cgi moodul tegelikult loodi. Järgmine oluline punkt on HTML-dokumendi dünaamiline genereerimine cgi-mooduli poolt (mooduli töö tulemuse vormindamine). Näiteks valikutabelid andmebaasist. Selleks peab cgi moodul väljastama standardsesse väljundvoogu reast koosneva päise: Sisutüüp: tekst/html ja tühi string (kaks tähemärki CR). Pärast seda päist saate sisestada mis tahes teksti HTML-vormingus.

Veebipoodide omanikud tunnevad „elektroonilise kaubanduse“ kontseptsiooni juba ise, nad teavad juba vastust küsimusele „e-kaubandus – mis see on? Kui aga asja põhjani jõuda, koorub esile palju nüansse ja see mõiste omandab laiema tähenduse.

E-kaubandus: mis see on?

Üldkontseptsioon on järgmine: e-kaubanduse all mõistetakse teatud lähenemist äritegevusele, mis hõlmab mitmete toimingute kaasamist, mis kasutavad kaupade tarnimisel või teenuste/töö pakkumisel digitaalset andmeedastust, sealhulgas Internet.

Seega on tegemist igasuguse äritehinguga, mis tehakse elektroonilisi sidevahendeid kasutades.

Töö käik on järgmine:

  • igaüks võib olla blogija või mõni muu oma Interneti-lehe omanik) registreerub sellesse süsteemi;
  • saab oma lingi;
  • paneb oma veebilehele spetsiaalse koodi - ilmub e-kaubanduse partnerite võrgustiku valitud ametliku partneri reklaam;
  • jälgib veebisaidi konversiooni;
  • teenib teatud protsendi iga ostu eest, mille teeb teie veebisaidi külastaja, kes järgib sidusettevõtte linki.

WP e-kaubandus

Suur hulk inimesi on praegu kirglikult e-kaubanduse vastu, eelkõige soovist luua oma veebisait, ainulaadne veebipood, kus oma tooteid müüa. Selle kasvava nõudluse rahuldamiseks on arendajad keskendunud e-kaubanduse mallide loomisele. Vaatame, mis see järgmiseks on.

Üks selline malli näide on WordPressi e-kaubandus. See on WordPressi (üks kuulsamaid veebiressursside haldussüsteeme) mõeldud ostukorvi pistikprogramm, mis on mõeldud eelkõige ajaveebi loomiseks ja korraldamiseks. Seda pakutakse täiesti tasuta ja see võimaldab saidi külastajatel veebisaidil oste teha.

Teisisõnu võimaldab see plugin luua veebipoe (WordPressi baasil). Sellel e-kaubanduse pistikprogrammil on kõik vajalikud tööriistad, seaded ja võimalused, mis vastavad tänapäevastele vajadustele.

Tänu ülemaailmsele veebile saab peaaegu igaüks anda teavet veebis silmale lihtsal kujul ja seda saab laialdaselt levitada. Olete kahtlemata Internetis surfanud ja muid saite näinud ning nüüd teate ilmselt, et hirmutavad akronüümid, nagu "HTTP" ja "HTML" on lihtsalt lühend sõnadest "Web" ja "viis, kuidas teavet Internetis väljendatakse". Teil võib olla juba teatav kogemus Internetis teabe esitamisel.

Internet on osutunud ideaalseks teabe levitamise vahendiks, nagu näitab selle tohutu populaarsus ja laialdane areng. Kuigi mõned on seadnud kahtluse alla Interneti kasulikkuse ning omistavad selle laialdase arengu ja populaarsuse peamiselt pealetükkivale reklaamile, on Internet vaieldamatult oluline meedium igasuguse teabe esitamiseks. Ajakohase teabe (uudised, ilm, spordisündmuste otseülekanne) ja viitematerjali elektrooniliseks edastamiseks pole saadaval mitte ainult palju teenuseid, vaid saadaval on ka märkimisväärne hulk muud tüüpi andmeid. IRS, kes levitas kõik oma 1995. aasta maksudeklaratsiooni vormid ja muud teavet veebi kaudu, tunnistas hiljuti, et sai oma veebisaidi jaoks fännikirju. Kes oleks võinud arvata, et IRS saab kunagi fännikirju? Seda mitte sellepärast, et tema sait oli hästi kujundatud, vaid see, et see oli osutunud tõeliselt kasulikuks tööriistaks tuhandete, võib-olla miljonite inimeste jaoks.

Mis teeb veebi ainulaadseks ja nii atraktiivseks teabeteenuseks? Esiteks pakub see andmetele hüpermeediumiliidest. Mõelge oma arvuti kõvakettale. Tavaliselt väljendatakse andmeid lineaarselt, sarnaselt failisüsteemiga. Näiteks on teil mitu kausta ja iga kausta sees on kas dokumendid või muud kaustad. Veeb kasutab teabe väljendamiseks teistsugust paradigmat, mida nimetatakse hüpermeediaks. Hüpertekstiliides koosneb dokumendist ja linkidest. Lingid on sõnad, millel klõpsatakse muude dokumentide vaatamiseks või muud tüüpi teabe leidmiseks. Veeb laiendab hüperteksti mõistet, hõlmates ka muud tüüpi meediume, nagu graafika, helid, video (sellest ka nimi "hüpermeedia"). Dokumendil teksti või graafika valimine võimaldab näha valitud üksuse kohta seotud teavet mis tahes kujul.

Sellest lihtsast ja ainulaadsest teabe esitamise ja levitamise viisist saavad kasu peaaegu kõik, alates akadeemikutest, kes soovivad koheselt oma kolleegidega andmeid kasutada, kuni ärimeesteni, kes jagavad oma ettevõtte kohta teavet kõigiga. Kuigi teabe andmine on äärmiselt oluline, on viimastel aastatel paljud tundnud, et teabe saamine on sama oluline protsess.

Kuigi veeb pakub teabe jaoks ainulaadset hüpermeediumiliidest, on andmete levitamiseks palju muid tõhusaid viise. Näiteks võrguteenused, nagu failiedastusprotokoll (FTP) ja Gopheri uudisterühm, eksisteerisid ammu enne veebi. Elektronpost on olnud Internetis ja enamikus teistes võrkudes peamiseks suhtlus- ja teabevahetuse vahendiks peaaegu nende võrkude loomise algusest peale. Miks on Internet muutunud nii populaarseks teabe levitamise viisiks? Interneti multimeediaaspekt on selle enneolematule edule oluliselt kaasa aidanud, kuid selleks, et Internet oleks kõige tõhusam, peab see olema interaktiivne.

Ilma kasutajapoolse sisendi vastuvõtmise ja teabe edastamise võimaluseta oleks veeb täiesti staatiline keskkond. Teave oleks saadaval ainult autori määratud vormingus. See kahjustaks üht andmetöötluse võimalust üldiselt: interaktiivset teavet. Näiteks selle asemel, et sundida kasutajat vaatama mitut dokumenti nii, nagu ta vaataks raamatut või sõnastikku, oleks parem lubada kasutajal huvipakkuva teema märksõnu tuvastada. Kasutajad saavad kohandada andmete esitust, selle asemel, et toetuda sisupakkuja määratletud jäigale struktuurile.

Mõiste "veebiserver" võib olla eksitav, kuna see võib viidata nii füüsilisele masinale kui ka tarkvarale, mida see Interneti-brauseritega suhtlemiseks kasutab. Kui brauser küsib antud veebiaadressi, loob see esmalt Interneti kaudu ühenduse masinaga, saates veebiserveri tarkvarale dokumendi päringu. See tarkvara töötab pidevalt, ootab selliste päringute saabumist ja vastab neile.

Kuigi serverid saavad andmeid saata ja vastu võtta, on serveri enda funktsionaalsus piiratud. Näiteks kõige primitiivsem server suudab brauserisse saata ainult vajaliku faili. Server tavaliselt ei tea, mida selle või teise lisasisendiga peale hakata. Kui Interneti-teenuse pakkuja ei ütle serverile, kuidas seda lisateavet käsitleda, ignoreerib server tõenäoliselt seda sisendit.

Selleks, et server saaks peale failide otsimise ja Interneti-brauserisse saatmise teha muid toiminguid, peate teadma, kuidas serveri funktsionaalsust laiendada. Näiteks ei saa veebiserver otsida andmebaasist kasutaja sisestatud märksõna alusel ja tagastada mitut sobivat dokumenti, välja arvatud juhul, kui selline võimalus on serverisse mingil viisil programmeeritud.

Mis on CGI?

Common Gateway Interface (CGI) on serveri liides, mis võimaldab serveri funktsionaalsust laiendada. CGI-d kasutades saate interaktiivselt suhelda kasutajatega, kes külastavad teie saiti. Teoreetilisel tasemel võimaldab CGI serveril brauserist sisendit sõeluda (tõlgendada) ja kasutaja sisendi põhjal teavet tagastada. Praktilisel tasandil on CGI liides, mis võimaldab programmeerijal kirjutada programme, mis suhtlevad lihtsalt serveriga.

Tavaliselt peate serveri võimaluste laiendamiseks serverit ise muutma. See lahendus on ebasoovitav, kuna see nõuab Interneti-protokolli võrgu programmeerimise alumise kihi mõistmist. See eeldaks ka serveri lähtekoodi redigeerimist ja uuesti kompileerimist või iga ülesande jaoks kohandatud serveri kirjutamist. Oletame, et tahame laiendada serveri võimalusi, et see toimiks veebist e-posti lüüsina, võttes brauserist kasutaja sisestatud teabe ja saata selle üle e-mail teisele kasutajale. Server peaks sisestama koodi, et sõeluda brauserist sisend, edastada see e-posti teel teisele kasutajale ja edastada vastus võrguühenduse kaudu brauserisse tagasi.

Esiteks nõuab selline ülesanne juurdepääsu serveri koodile, mis pole alati võimalik.

Teiseks on see keeruline ja nõuab ulatuslikke tehnilisi teadmisi.

Kolmandaks, see kehtib ainult konkreetse serveri kohta. Kui teil on vaja oma server teisele platvormile teisaldada, peate käivitama või vähemalt kulutama palju aega koodi sellele platvormile teisaldamiseks.

Miks CGI?

CGI pakub nendele probleemidele kaasaskantavat ja lihtsat lahendust. CGI-protokoll määratleb programmide standardse viisi veebiserveriga suhtlemiseks. Ilma eriteadmisteta saate kirjutada programmi mis tahes masinakeeles, mis liidestub ja suhtleb veebiserveriga. See programm töötab kõigi veebiserveritega, mis mõistavad CGI-protokolli.

CGI-suhtlus toimub standardse sisendi ja väljundi abil, mis tähendab, et kui teate, kuidas oma programmeerimiskeelt kasutades andmeid printida ja lugeda, saate kirjutada veebiserveri rakenduse. Peale sisendi ja väljundi sõelumise on CGI-rakenduste programmeerimine peaaegu samaväärne mis tahes muu rakenduse programmeerimisega. Näiteks programmi "Tere, maailm!" programmeerimiseks kasutate vastava sõnumi printimiseks oma keele printimisfunktsioone ja CGI-programmidele määratud vormingut.

Programmeerimiskeele valimine

Kuna CGI on universaalne liides, ei piirdu te ühegi konkreetse masinakeelega. Oluline küsimus, mida sageli küsitakse, on: milliseid programmeerimiskeeli saab CGI programmeerimiseks kasutada? Võite kasutada mis tahes keelt, mis võimaldab teil teha järgmist.

  • Printige standardväljundisse
  • Loe standardsisendist
  • Loe muutuvatest režiimidest

Peaaegu kõik programmeerimiskeeled ja paljud skriptikeeled teevad neid kolme asja ja saate kasutada mõnda neist.

Keeled jagunevad ühte kahest järgmisest klassist: tõlgitud ja tõlgitud. Tõlgitud keel, nagu C või C++, on tavaliselt väiksem ja kiirem, samas kui tõlgitud keeled, nagu Perl või Rexx, nõuavad mõnikord käivitamisel suure tõlgi laadimist. Lisaks saate levitada binaarkoode (kood, mis tõlgitakse masinakeelde) ilma lähtekoodita, kui teie keel on tõlgitav. Tõlgendatavate skriptide levitamine tähendab tavaliselt lähtekoodi levitamist.

Enne keele valimist peate esmalt kaaluma oma prioriteete. Peate kaaluma ühe programmeerimiskeele kiiruse ja tõhususe eeliseid teise programmeerimise lihtsusega. Kui teil on soov õppida mõnda teist keelt, siis selle asemel, et kasutada seda keelt, mida te juba oskate, kaaluge hoolikalt mõlema keele eeliseid ja puudusi.

Kaks CGI programmeerimiseks kõige sagedamini kasutatavat keelt on C ja Perl (mõlemad on selles raamatus käsitletud). Mõlemal on selged eelised ja puudused. Perl on väga kõrgetasemeline keel ja samas võimas keel, mis sobib eriti hästi teksti parsimiseks. Kuigi selle kasutuslihtsus, paindlikkus ja võimsus muudavad selle CGI-programmeerimise jaoks atraktiivseks keeleks, muudab selle suhteliselt suur suurus ja aeglasem töö mõnikord mõne rakenduse jaoks sobimatuks. C-programmid on väiksemad, tõhusamad ja tagavad madalama taseme süsteemi juhtimise, kuid neid on keerulisem programmeerida, neil ei ole kergeid sisseehitatud tekstitöötlusrutiine ja neid on raskem siluda.

Milline keel sobib CGI programmeerimiseks kõige paremini? See, mida peate programmeerimise seisukohast mugavamaks. Mõlemad on CGI-rakenduste programmeerimiseks võrdselt tõhusad ja õigete teekide korral on mõlemal sarnased võimalused. Kui teil on aga raskesti ligipääsetav server, saate kasutada väiksemaid tõlgitud C-programme. Kui teil on vaja kiiresti kirjutada palju tekstitöötlustööd nõudvat rakendust, võite selle asemel kasutada Perli.

Ettevaatust

CGI-rakendustele on mõned olulised alternatiivid. Paljud serverid sisaldavad nüüd API programmeerimist, mis muudab serveri otselaiendite programmeerimise lihtsamaks, mitte eraldiseisvatele CGI-rakendustele. API-serverid on üldiselt tõhusamad kui CGI-programmid. Teised serverid sisaldavad sisseehitatud funktsioone, mis suudavad käsitleda spetsiaalseid mitte-CGI elemente, näiteks andmebaasi sidumist. Lõpuks saab mõnda rakendust hallata mõne uue kliendipoolse (mitte serveripoolse) tehnoloogiaga, nagu Java. Kas selliste kiirete tehnoloogiamuutuste korral vananeb CGI kiiresti?

Vaevalt. CGI-l on uuemate tehnoloogiate ees mitmeid eeliseid.

  • See on mitmekülgne ja kaasaskantav. Saate kirjutada CGI-rakenduse, kasutades peaaegu iga programmeerimiskeelt mis tahes platvormil. Mõned alternatiivid, näiteks serveri API, piiravad teid teatud keeltega ja neid on palju raskem õppida.
  • On ebatõenäoline, et kliendipoolsed tehnoloogiad, nagu Java, asendaksid CGI-d, sest on mõned rakendused, mille käitamiseks sobivad serveripoolsed rakendused palju paremini.
  • Paljud CGI piirangud on HTML-i või HTTP piirangud. Interneti-standardite kui terviku arenedes arenevad ka CGI võimalused.

Kokkuvõte

Common Gateway Interface on protokoll, mille kaudu programmid suhtlevad veebiserveritega. CGI mitmekülgsus annab programmeerijatele võimaluse kirjutada lüüsiprogramme peaaegu igas keeles, kuigi erinevate keeltega on seotud palju kompromisse. Ilma selle võimaluseta oleks interaktiivsete veebilehtede loomine keeruline, parimal juhul vajaks serveri muudatusi ning interaktiivsus oleks enamikule kasutajatele, kes pole saidiadministraatorid, saadaval.

2. peatükk: põhitõed

Mitu aastat tagasi lõin Harvardi kolledži jaoks lehe, kus inimesed said nende kohta kommentaare esitada. Tol ajal oli Internet noor ja dokumentatsioon napp. Mina, nagu paljud teised, toetusin CGI programmeerimise õppimisel lühidokumentatsioonile ja teiste loodud programmeerimissüsteemidele. Kuigi see uurimismeetod nõudis mõningast otsimist, palju katseid ja tekitas palju küsimusi, oli see väga tõhus. See peatükk on minu varase CGI-ga töötamise tulemus (mõnede muudatustega muidugi).

Ehkki ühise lüüsiliidese täielikuks mõistmiseks ja asjatundmiseks kulub veidi aega, on protokoll ise üsna lihtne. Igaüks, kellel on mõned põhilised programmeerimisoskused ja tunneb veebi, saab kiiresti õppida programmeerima üsna keerulisi CGI-rakendusi täpselt nii, nagu mina ja teised õppisin seda tegema mitu aastat tagasi.

Selle peatüki eesmärk on esitada CGI põhitõed kõikehõlmavalt, kuigi kokkuvõtlikult. Iga siin käsitletud kontseptsiooni tutvustatakse üksikasjalikult järgmistes peatükkides. Kuid pärast selle peatüki läbimist saate kohe alustada CGI rakenduste programmeerimist. Kui olete sellele tasemele jõudnud, saate õppida CGI peensusi, lugedes ülejäänud raamatut või lihtsalt katsetades omal käel.

CGI programmeerimise saab koondada kahele ülesandele: teabe vastuvõtmine veebibrauserist ja teabe saatmine brauserisse. Seda tehakse üsna intuitiivselt, kui olete tutvunud CGI-rakenduste tavapärase kasutamisega. Sageli palutakse kasutajal täita mõni vorm, näiteks sisestada oma nimi. Kui kasutaja täidab vormi ja vajutab sisestusklahvi, saadetakse see teave CGI programmi. Seejärel peab CGI programm selle teabe teisendama millekski, millest ta aru saab, seda vastavalt töötlema ja seejärel brauserisse tagasi saatma, olgu see siis lihtne kinnitus või mitmeotstarbelises andmebaasis tehtud otsingu tulemus.

Teisisõnu, CGI programmeerimine nõuab arusaamist, kuidas Interneti-brauserist sisendit vastu võtta ja väljundit tagasi saata. See, mis toimub CGI-programmi sisend- ja väljundfaasi vahel, sõltub arendaja eesmärgist. Leiad, et CGI programmeerimise peamine raskus seisneb selles vaheetapis; Kui olete õppinud sisendi ja väljundiga töötama, piisab sellest sisuliselt, et saada CGI arendajaks.

Selles peatükis saate teada CGI sisendi ja väljundi põhimõtteid ning muid põhioskusi, mida vajate CGI kirjutamiseks ja kasutamiseks, sealhulgas selliseid asju nagu HTML-vormide loomine ja CGI-programmide nimetamine. See peatükk hõlmab järgmisi teemasid:

  • Traditsiooniline programm "Tere, maailm!";
  • CGI väljund: teabe tagasisaatmine Interneti-brauseris kuvamiseks;
  • Rakenduse konfigureerimine, installimine ja käitamine. Õpid tundma erinevaid veebiplatvorme ja -servereid;
  • CGI sisend: veebibrauseri saadetud teabe tõlgendamine. Sissejuhatus mõne kasuliku programmeerimise teeki sellise sisendi parsimiseks;
  • Lihtne näide: see hõlmab kõiki antud peatüki õppetükke;
  • Programmeerimisstrateegia.

Selle peatüki olemusest tulenevalt puudutan mõningaid teemasid vaid kergelt. Ärge muretsege; Kõiki neid teemasid käsitletakse palju põhjalikumalt teistes peatükkides.

Tere, Maailm!

Alustate traditsioonilise sissejuhatava programmeerimise probleemiga. Kirjutate programmi, mis kuvab "Tere, maailm!" oma veebibrauseris. Enne selle programmi kirjutamist peate mõistma, millist teavet veebibrauser CGI programmidelt saada ootab. Samuti peate teadma, kuidas seda programmi käivitada, et saaksite seda tegevuses näha.

CGI on keelest sõltumatu, nii et saate seda programmi rakendada mis tahes keeles. Iga keele sõltumatuse demonstreerimiseks kasutatakse siin mitut erinevat keelt. Perlis on programm "Tere, maailm!" näidatud nimekirjas 2.1.

Loetelu 2.1. Tere, Maailm! Perlis. #!/usr/local/bin/perl # Hello.cgi – minu esimene CGI-programmi väljatrükk "Content-Type: text/html\n\n"; printida" \n"; print " Tere, Maailm!"; prindi"\n"; print " \n"; print "

Tere, Maailm!

\n"; print "

\n";

Salvestage see programm nimega hello.cgi ja installige see sobivasse kohta. (Kui te pole kindel, kus see asub, ärge muretsege; leiate selle peatüki hilisemas jaotises "CGI-programmi installimine ja käitamine".) Enamiku serverite jaoks on vajalik kataloog cgi-bin . Nüüd helistage programmile oma veebibrauserist. Enamiku jaoks tähendab see järgmise ühtse ressursiotsija (URL) avamist:

http://hostinimi/katalooginimi/hello.cgi

Hostinimi on teie veebiserveri nimi ja katalooginimi on kataloog, kuhu sisestate hello.cgi (tõenäoliselt cgi-bin).

Tere.cgi poolitamine

Hello.cgi puhul tasub tähele panna mõnda asja.

Esiteks kasutate lihtsaid printimiskäske. CGI-programmid ei vaja mingeid spetsiaalseid failideskriptoreid ega väljundkirjeldusi. Väljundi saatmiseks brauserisse printige lihtsalt stdout.

Teiseks pange tähele, et esimese prinditava avalduse sisu (sisutüüp: text/html) ei ilmu teie veebibrauseris. Saate brauserisse tagasi saata mis tahes soovitud teabe (HTML-leht, graafika või heli), kuid kõigepealt peate brauserile ütlema, milliseid andmeid te saadate. See rida annab brauserile teada, millist teavet oodata – antud juhul HTML-lehte.

Kolmandaks, programmi nimi on hello.cgi. Te ei pea alati oma CGI-programmi nimega koos kasutama laiendit .cgi. Kuigi paljude keelte lähtekoodis kasutatakse ka laiendit .cgi, ei kasutata seda keeletüübi näitamiseks, vaid see on viis, kuidas server tuvastab faili käivitatava failina, mitte graafikafailina, HTML-failina või tekstifail. Serverid on sageli konfigureeritud nii, et nad proovivad käivitada ainult neid faile, millel on see laiend, kuvades kõigi teiste failide sisu. Kuigi laienduse .cgi kasutamine pole vajalik, peetakse seda siiski heaks tavaks.

Üldiselt koosneb hello.cgi kahest põhiosast:

  • annab brauserile teada, millist teavet oodata (sisutüüp: text/html)
  • ütleb brauserile, mida kuvada (Tere, maailm!)

Tere, Maailm! C-s

CGI-programmide keelelise sõltumatuse näitamiseks näitab loend 2.2 C-keeles kirjutatud programmi hello.cgi ekvivalenti.

Loetelu 2.2. Tere, Maailm! in C. /* hello.cgi.c – Tere, maailm CGI */ #include int main() ( printf("Sisutüüp: text/html\r\n\r\n"); printf(" \n"); printf(" Tere, Maailm!\n"); printf("\n"); printf(" \n"); printf("

Tere, Maailm!

\n"); printf("

\n");)

Märge

Pange tähele, et hello.cgi Perli versioon kasutab sisutüüpi printimist ": text/html\n\n"; Kuigi versioon C kasutab printf("Sisutüüp: text/html\r\n\r\n");

Miks prindib Perl operaatori kahe reavahetusega (\n), samas kui C printf lõpeb kahe reavahetuse ja reavahetusega (\r\n)?

Tehniliselt tuleb päised (kõik väljundid enne tühja rida) eraldada reavahetuste ja reavahetustega. Kahjuks tõlgib Perl DOS-i ja Windowsi masinates \r \r kui järjekordset reavahetust, mitte kui käru tagastamist.

Kuigi Perli erand on tehniliselt vale, töötab see peaaegu kõigi protokollidega ja on kõigil platvormidel võrdselt kaasaskantav. Seetõttu kasutan ma kõigis selle raamatu Perli näidetes reavahetust eraldavaid päiseid, mitte reavahetust ja reavahetust.

Selle probleemi sobiv lahendus on esitatud 4. peatükis, Järeldus.

Ei veebiserverit ega brauserit ei huvita, mis keeles programmi kirjutatakse. Kuigi igal keelel on CGI programmeerimiskeelena oma eelised ja puudused, on kõige parem kasutada keelt, millega on kõige mugavam töötada. (Programmeerimiskeele valikust on täpsemalt juttu 1. peatükis “Ühislüüsiliides (CGI)”).

CGI renderdamine

Nüüd saate lähemalt vaadata veebibrauserisse teabe saatmise probleemi. Näites "Tere, maailm!" näete, et veebibrauserid ootavad kahte andmekogumit: päist, mis sisaldab teavet, näiteks seda, millist teavet kuvada (nt sisutüüp: rida) ja tegelikku teavet (mida veebibrauser kasutab). kuvab). Need kaks teavet eraldatakse tühja reaga.

Päist nimetatakse HTTP päiseks. See annab olulist teavet teabe kohta, mida brauser saab. HTTP-päiseid on mitut erinevat tüüpi ja kõige levinum on see, mida olete varem kasutanud: sisutüüp: päis. Saate kasutada erinevaid HTTP-päiste kombinatsioone, mis on eraldatud kelgu tagastusrea ja reavahetustega (\r\n). Päist andmetest eraldav tühi rida koosneb ka reavahetusest ja reavahetusest (milleks mõlemat on vaja, on lühidalt käsitletud eelmises märkuses ja üksikasjalikult 4. peatükis). Teiste HTTP-päiste kohta leiate teavet 4. peatükist; Praegu tegelete sisutüübiga: päisega.

Sisutüüp: päis kirjeldab, millist tüüpi andmeid CGI tagastab. Selle päise sobiv vorming on:

Sisutüüp: alamtüüp/tüüp

Kui alamtüüp/tüüp on õige mitmeotstarbelise Interneti-posti laienduse (MIME) tüüp. Kõige tavalisem MIME-tüüp on HTML-tüüp: text/html. Tabelis 2.1 on loetletud veel mõned levinumad MIME-tüübid, mida arutatakse; MIME tüüpide täielikum loetelu ja analüüs on toodud 4. peatükis.

Märge

MIME leiutati algselt kirjade kehade sisu kirjeldamiseks. Sellest on saanud üsna levinud viis sisutüübi teabe esitamiseks. MIME kohta saate rohkem lugeda RFC1521-st. Internetis olevad RFC-d tähistavad sõnu Requests for Comments, mis on kokkuvõtted otsustest, mille on teinud Internetis standardeid kehtestada üritavad grupid. RFC1521 tulemusi saate vaadata järgmisel aadressil: http://andrew2.andrew.cmu.edu/rfc/rfc1521.html

Tabel 2.1. Mõned tavalised MIME tüübid. MIME tüüp Kirjeldus Text/html Hüperteksti märgistuskeel (HTML) Tekst/lihtteksti failid Pilt/gif Graafikafailid GIF Pilt/jpeg Tihendatud graafikafailid JPEG Heli/põhihelifailid Sun *.au Audio/x-wav Windowsi failid *

Pärast päist ja tühja rida printige andmed lihtsalt vajalikul kujul. Kui saadate HTML-i, printige HTML-i sildid ja andmed päise järel stdout-i. Samuti saate saata graafikat, heli ja muid binaarfaile, printides faili sisu lihtsalt stdouti. Selle kohta on mitmeid näiteid 4. peatükis.

CGI programmi installimine ja käitamine

See osa erineb mõnevõrra CGI programmeerimisest ja räägib teie veebiserveri konfigureerimisest CGI-d kasutama, programmide installimisest ja käitamisest. Sulle tutvustatakse rohkem või vähem üksikasjalikult erinevaid servereid erinevatele platvormidele, kuid parima valiku leidmiseks pead oma serveri dokumentatsiooni põhjalikumalt uurima.

Kõik serverid vajavad ruumi serverifailide jaoks ja ruumi HTML-dokumentide jaoks. Selles raamatus nimetatakse serveriala nimeks ServerRoot ja dokumendiala nimeks Dokumendijuur. UNIX-seadmetes asub ServerRoot tavaliselt kaustas /usr/local/etc/httpd/ ja DocumentRoot tavaliselt /usr/local/etc/httpd/htdocs/. Kuid see ei muuda teie süsteemis midagi, seega asendage kõik viited ServerRootile ja DocumentRootile oma ServerRooti ja DocumentRootiga.

Kui pääsete failidele juurde veebibrauseri abil, määrate faili URL-is, mis on seotud DocumentRootiga. Näiteks kui teie serveri aadress on mymachine.org, pääsete sellele failile juurde järgmise URL-iga: http://mymachine.org/index.html

Serveri seadistamine CGI jaoks

Enamik veebiservereid on CGI-programmide kasutamiseks eelkonfigureeritud. Tavaliselt näitavad serverile kaks parameetrit, kas fail on CGI-rakendus või mitte:

  • Määratud kataloog. Mõned serverid võimaldavad teil määrata, et kõik määratud kataloogis (vaikimisi nimetatakse seda tavaliselt cgi-biniks) on CGI-d.
  • Failinime laiendid. Paljudel serveritel on see eelkonfiguratsioon, mis võimaldab kõiki cgi-lõpulisi faile määratleda CGI-na.

Määratud kataloogi meetod on mineviku jäänuk (esimesed serverid kasutasid seda ainsa meetodina, et määrata, millised failid olid CGI-programmid), kuid sellel on mitmeid eeliseid.

  • See hoiab CGI-programmid tsentraliseerituna, vältides teiste kataloogide segadust.
  • Te ei piirdu ühegi konkreetse failinimelaiendiga, nii et saate oma failidele anda soovitud nimed. Mõned serverid võimaldavad teil määrata mitu erinevat kataloogi CGI kataloogideks.
  • See annab teile ka suurema kontrolli selle üle, kes saab CGI-d salvestada. Näiteks kui teil on server ja see toetab mitme kasutajaga süsteemi ning ei soovi, et nad kasutaksid oma CGI skripte ilma programmi esmalt auditeerimata turvakaalutlustel, saate määrata CGI-ks ainult need failid piiratud tsentraliseeritud kataloogis. . Seejärel peavad kasutajad andma teile installimiseks CGI-programmid ja saate esmalt koodi auditeerida, et veenduda, et programmil pole olulisi turbeprobleeme.

CGI-märge failinime laiendi kaudu võib olla kasulik selle paindlikkuse tõttu. Te ei piirdu ühe CGI-programmide kataloogiga. Enamikku servereid saab konfigureerida CGI-d ära tundma failinime laienduse kaudu, kuigi kõik pole vaikimisi sel viisil konfigureeritud.

Hoiatus

Pidage oma serveri CGI jaoks konfigureerimisel meeles turvaprobleemide tähtsust. Siin käsitletakse mõningaid näpunäiteid ja 9. peatükis CGI kaitsmine käsitletakse neid aspekte üksikasjalikumalt.

CGI installimine UNIX-i serveritesse

Olenemata sellest, kuidas teie UNIX-server on konfigureeritud, peate tegema mitmeid samme, et tagada teie CGI-rakenduste ootuspärane töö. Teie veebiserver töötab tavaliselt olematu kasutajana (st UNIX-i kasutajana ei keegi – konto, millel pole failiõigusi ja mida ei saa sisse logida). CGI-skriptid (kirjutatud Perlis, Bourne'i shellis või mõnes muus skriptikeeles) peavad olema käivitatavad ja loetavad kõikjal maailmas.

Vihje

Oma failide ülemaailmseks loetavaks ja käivitatavaks muutmiseks kasutage järgmist UNIX-i lubade käsku: chmod 755 failinimi.

Kui kasutate skripti kirjelduskeelt Perli tüüp või Tcl, esitage skripti esimesel real oma tõlgi täielik tee. Näiteks Perli skript, mis kasutab perli kataloogis /usr/local/bin, algaks järgmise reaga:

#!/usr/local/bin/perl

Hoiatus

Ärge kunagi asetage interpretaatorit (perl või Tcl Wish) kataloogi /cgi-bin. See tekitab teie süsteemis turvariski. Seda käsitletakse üksikasjalikumalt 9. peatükis.

Mõned universaalsed UNIX-i serverid

NCSA ja Apache serveritel on sarnased konfiguratsioonifailid, kuna Apache server põhines algselt NCSA koodil. Vaikimisi on need konfigureeritud nii, et iga fail kataloogis cgi-bin (mis asub vaikimisi ServerRootis) on CGI-programm. Kataloogi cgi-bin asukoha muutmiseks saate redigeerida konfiguratsioonifaili conf/srm.conf. Selle kataloogi konfigureerimise vorming on

ScriptAlias ​​​​fakedirectoryname reaalkatalooginimi

kus fakedirectoryname on pseudokataloogi nimi (/cgi-bin) ja real directoryname on täielik tee, kuhu CGI-programmid tegelikult salvestatakse. Saate konfigureerida rohkem kui ühe ScriptAliase, lisades rohkem ScriptAlias ​​ridu.

Vaikekonfiguratsioon on enamiku kasutajate vajaduste jaoks piisav. Õige reaalkatalooginime määramiseks peate mõlemal juhul redigeerima faili srm.conf rida. Kui teie CGI-programmid asuvad näiteks kaustas /usr/local/etc/httpd/cgi-bin, peaks teie faili srm.conf rida ScriptAlias ​​olema umbes selline:

ScriptAlias/cgi-bin/ /usr/local/etc/httpd/cgi-bin/

Selles kataloogis asuvatele CGI-programmidele juurdepääsemiseks või nende linkimiseks kasutage järgmist URL-i:

Http://hostinimi/cgi-bin/programminimi

Kus hostinimi on teie veebiserveri hosti nimi ja programminimi on teie CGI nimi.

Oletame näiteks, et kopeerite programmi hello.cgi oma veebiserveri nimega www.company.com cgi-bin kataloogi (nt /usr/local/etc/httpd/cgi-bin). CGI-le juurdepääsuks kasutage järgmist URL-i: http://www.company.com/cgi-bin/hello.cgi

Kui soovite konfigureerida oma NCSA- või Apache-serverit tuvastama mis tahes .cgi-laiendiga faili CGI-na, peate redigeerima kahte konfiguratsioonifaili. Esiteks eemaldage failis srm.conf järgmise rea kommentaarid:

AddType rakendus/x-httpd-cgi .cgi

See seob MIME-tüüpi CGI laiendiga .cgi. Nüüd peame muutma faili access.conf, et saaksime CGI-d käivitada mis tahes kataloogis. Selleks lisage ExecCGI valik reale Option. See näeb välja umbes nagu järgmine rida:

Valikute indeksid FollowSymLinks ExecCGI

Nüüd loetakse iga .cgi-laiendiga faili CGI-ks; pääsete sellele juurde nagu mis tahes failile oma serveris.

CERN-i server on konfigureeritud samamoodi nagu Apache ja NCSA serverid. ScriptAliase asemel kasutab CERN-i server käsku Exec. Näiteks failis httpd.conf näete järgmist rida:

Exec /cgi-bin/* /usr/local/etc/httpd/cgi-bin/*

Teisi UNIX-servereid saab konfigureerida samal viisil; Seda on üksikasjalikumalt kirjeldatud serveri dokumentatsioonis.

CGI installimine Windowsi

Enamik Windows 3.1, Windows 95 ja Windows NT jaoks saadaolevaid servereid on konfigureeritud kasutades CGI tuvastamiseks "failinimelaiendi" meetodit. Üldiselt nõuab Windowsi-põhise serveri konfiguratsiooni muutmine lihtsalt serveri konfiguratsiooniprogrammi käivitamist ja vastavate muudatuste tegemist.

Mõnikord võib serveri seadistamine skripti (nt Perli) korrektseks käivitamiseks olla keeruline. DOS-is või Windowsis ei saa te skripti esimesel real tõlgendajat määrata, nagu UNIX-i puhul. Mõnel serveril on eelmääratletud konfiguratsioon, et seostada tõlgiga teatud failinimelaiendeid. Näiteks eeldavad paljud Windowsi veebiserverid, et .pl-lõpulised failid on Perli skriptid.

Kui server seda tüüpi failide seostamist ei teosta, saate määratleda pakendaja pakkfaili, mis kutsub nii tõlgi kui ka skripti. Nagu UNIX-serveri puhul, ärge installige interpretaatorit ei cgi-bin kataloogi ega ühtegi Web Accessi kataloogi.

CGI installimine Macintoshisse

Kaks kõige tuntumat serverivalikut Macintoshi jaoks on WebStar StarNine ja selle eelkäija MacHTTP. Mõlemad tunnevad CGI ära selle failinime laienduse järgi.

MacHTTP mõistab kahte erinevat laiendit: .cgi ja .acgi, mis tähistab asünkroonset CGI-d. Tavalised Macintoshile installitud CGI-programmid (.cgi-laiendiga) hoiavad veebiserveri hõivatud olekus, kuni CGI töö lõpetab, mistõttu server peatab kõik muud päringud. Asünkroonne CGI seevastu võimaldab serveril taotlusi vastu võtta isegi siis, kui see töötab.

CGI Macintoshi arendaja, kes kasutab mõnda neist veebiserveritest, peaks võimaluse korral kasutama ainult .acgi laiendit, mitte laiendit .cgi. See peaks töötama enamiku CGI programmidega; kui see ei tööta, nimetage programm ümber .cgi-ks.

CGI täitmine

Kui olete CGI installinud, on selle käivitamiseks mitu võimalust. Kui teie CGI-programm on ainult väljundprogramm, näiteks programm Hello,World, saate selle käivitada lihtsalt selle URL-i kaudu.

Enamik programme töötab serverirakendusena HTML-vormingus. Enne nende vormide teabe hankimise õppimist lugege esmalt lühike sissejuhatus selliste vormide loomise kohta.

Kiire õpetus HTML-vormide kohta

Kaks kõige olulisemat silti HTML-vormingus on

Ja . Enamiku HTML-vorme saate luua ainult nende kahe sildi abil. Selles peatükis uurite neid silte ja väikest võimalike tüüpide või atribuutide alamhulka. . Täielik juhend ja link HTML-vormidele on 3. peatükis HTML ja vormid.

Tag

Tag kasutatakse selleks, et määrata, millist HTML-faili osa tuleks kasutaja sisestatud teabe jaoks kasutada. See viitab sellele, kuidas enamik HTML-lehti helistab CGI programm. Märgendi atribuudid määravad programmi nime ja asukoha – kas lokaalselt või täieliku URL-ina, kasutatava kodeeringu tüübi ja programmis kasutatava andmete liikumise meetodi.

Järgmine rida näitab sildi spetsifikatsioone :

< ACTION FORM = "url" METHOD = ENCTYPE = "..." >

Atribuut ENCTYPE ei mängi erilist rolli ja seda tavaliselt sildiga ei kaasata . detailne info ENCTYPE sildi kohta on toodud 3. peatükk. Üks võimalus ENCTYPE kasutamiseks on näidatud 14. peatükis "Brändilaiendid".

Atribuut ACTION viitab CGI programmi URL-ile. Kui kasutaja täidab vormi ja annab teabe, kodeeritakse kogu teave ja edastatakse CGI programmi. CGI programm ise lahendab teabe dekodeerimise ja töötlemise probleemi; Seda aspekti käsitletakse selle peatüki hilisemas osas jaotises "Brauserist sisendi vastuvõtmine".

Lõpuks kirjeldab atribuut METHOD, kuidas CGI programm peaks sisendi vastu võtma. Need kaks meetodit, GET ja POST, erinevad selle poolest, kuidas nad edastavad teavet CGI-programmi. Mõlemat käsitletakse jaotises "Brauserist sisendi vastuvõtmine".

Selleks, et brauser võimaldaks kasutajal sisestust, peavad kõik vormisildid ja teave olema sildiga ümbritsetud . Ärge unustage sulgevat silti

vormi lõpu märkimiseks. Vormi sees ei saa olla, kuigi saate seadistada vormi, mis võimaldab teil esitada teavet erinevates kohtades; seda aspekti käsitletakse põhjalikult 3. peatükis.

Tag

Märgendi abil saate luua tekstisisestusribasid, raadionuppe, märkeruutusid ja muid viise sisendi vastuvõtmiseks . IN see jaotis arvesse võetakse ainult välju tekstisisestus. Selle välja rakendamiseks kasutage silti järgmiste atribuutidega:

< INPUT TYPE=text NAME = "... " VALUE = "... " SIZE = MAXLENGTH = >

NAME on muutuja sümboolne nimi, mis sisaldab kasutaja sisestatud väärtust. Kui lisate teksti atribuudile VALUE, paigutatakse see tekst tekstisisestusväljale vaikimisi. Atribuut SIZE võimaldab määrata sisestusvälja horisontaalse pikkuse nii, nagu see brauseriaknas kuvatakse. Lõpuks defineerib MAXLENGTH maksimaalne arv märgid, mida kasutaja saab väljale sisestada. Pange tähele, et atribuudid VALUE, SIZE, MAXLENGTH on valikulised.

Vormi esitamine

Kui vormi sees on ainult üks tekstiväli, saab kasutaja vormi esitada, tippides lihtsalt klaviatuuril teabe ja vajutades sisestusklahvi. Vastasel juhul peab kasutajal teabe esitamiseks olema mõni muu viis. Kasutaja edastab teabe järgmise märgisega esitamisnupu abil:

< Input type=submit >

See silt loob teie vormi sisse nupu Esita. Kui kasutaja on vormi täitmise lõpetanud, saab ta selle sisu edastada URL-aadress, täpsustatud ACTION atribuut vormi, klõpsates nuppu Esita.

Brauserist sisendi vastuvõtmine

Eespool olid näited CGI-programmi salvestamisest, mis saadab teavet serverist brauserisse. Tegelikkuses pole CGI programmil, mis ainult andmeid väljastab, palju rakendusi (mõned näited on toodud 4. peatükis). CGI olulisem võime on saada teavet brauserist – see funktsioon, mis annab veebile interaktiivse iseloomu.

CGI programm saab brauserist kahte tüüpi teavet.

  • Esiteks hangib see erinevat teavet brauseri (selle tüüp, mida ta saab vaadata, hosti jne), serveri (selle nimi ja versioon, täitmisport jne) ja CGI programmi kohta. ise (programmi nimi ja kus see asub). Server annab kogu selle teabe keskkonnamuutujate kaudu CGI programmile.
  • Teiseks saab CGI programm vastu võtta kasutaja sisendi. See teave saadetakse pärast seda, kui brauser on selle kodeerinud, kas keskkonnamuutuja (GET-meetod) või standardsisendi kaudu (stdin - POST-meetod).

Keskkonnamuutujad

Kasulik on teada, millised keskkonnamuutujad on CGI programmi jaoks saadaval nii treeningu ajal kui ka silumiseks. Tabelis 2.2 on loetletud mõned saadaolevad CGI keskkonnamuutujad. Samuti saate kirjutada CGI-programmi, mis väljastab veebibrauserisse keskkonnamuutujad ja nende väärtused.

Tabel 2.2. Mõned olulised CGI keskkonnamuutujad Keskkonnamuutuja Eesmärk REMOTE_ADDR Kliendi masina IP-aadress. REMOTE_HOST Kliendimasina hosti host. HTTP _ACCEPT Loetleb MIME andmetüübid, mida brauser saab tõlgendada. HTTP _USER_AGENT Brauseri teave (brauseri tüüp, versiooni number, operatsioonisüsteem, jne.). REQUEST_METHOD HANGI või POSTITA. CONTENT_LENGTH Sisend, kui see saadetakse POST-i kaudu. Kui sisendit pole või kasutatakse GET-meetodit, on see parameeter määratlemata. QUERY_STRING Sisaldab sisendteavet, kui see edastatakse GET-meetodiga. PATH_INFO Võimaldab kasutajal määrata tee CGI käsurealt (nt http://hostname/cgi-bin/programminimi/tee). PATH_TRANSLATED Tõlgib suhteline tee PATH_INFO süsteemi tegelikule teele.

Keskkonnamuutujaid kuvava CGI-rakenduse kirjutamiseks peate teadma, kuidas teha kahte asja.

  • Määratlege kõik keskkonnamuutujad ja neile vastavad väärtused.
  • Printige tulemused brauserisse.

Sa juba tead, kuidas viimast toimingut teha. Perlis salvestatakse keskkonnamuutujad assotsiatiivsesse massiivi % ENV, mis sisestatakse nimega keskkonna muutuja. Nimekiri 2.3 sisaldab env.cgi, Perli programmi, mis täidab meie eesmärgi.

Loetelu 2.3. Perli programm, env.cgi, mis väljastab kõik CGI keskkonnamuutujad.

#!/usr/local/bin/perl print "Sisutüüp: text/html\n\n"; printida" \n"; print " CGI keskkond\n"; print "\n"; print " \n"; print "

CGI keskkond

\n"; foreach $env_var (klahvid %ENV) ( print " $env_var= $ENV($env_var)
\n"; ) print "

\n";

Sarnase programmi võiks kirjutada ka C keeles; täielik kood on nimekirjas 2.4.

Nimekiri 2.4. Env.cgi.c C-s /* env.cgi.c */ #include extern char **keskkond; int main() ( char **p = keskkond; printf("Sisutüüp: text/html\r\n\r\n"); printf(" \n"); printf(" CGI keskkond\n"); printf("\n"); printf(" \n"); printf("

CGI keskkond

\n"); while(*p != NULL) printf("%s
\n",*p++); printf("

\n");)

SAADA või POSTITA?

Mis vahe on GET- ja POST-meetoditel? GET edastab kodeeritud sisendstringi keskkonnamuutuja QUERY_STRING kaudu, POST aga stdini kaudu. POST on eelistatud meetod, eriti vormide puhul, millel on suur summa andmeid, sest piiranguid ei ole selle kohta, kui palju ja millal saadetakse GET meetod keskkonnaruumi hulk on piiratud. GET on aga kindel kasulik vara; seda käsitletakse üksikasjalikult 5. peatükis sisend.

Kasutatava meetodi kindlaksmääramiseks kontrollib CGI programm keskkonnamuutujat REQUEST_METHOD, mille väärtuseks määratakse kas GET või POST. Kui see on seatud väärtusele POST, salvestatakse kodeeritud teabe pikkus keskkonnamuutujasse CONTENT_LENGTH.

Kodeeritud sisend

Kui kasutaja vormi esitab, kodeerib brauser teabe esmalt enne serverisse ja seejärel CGI-rakendusse saatmist. Kui kasutate silti , antakse igale väljale sümboolne nimi. Kasutaja sisestatud väärtust esitatakse muutuja väärtusena.

Selle kindlaksmääramiseks kasutab brauser URL-i kodeeringu spetsifikatsiooni, mida saab kirjeldada järgmiselt:

  • Eraldab erinevad väljad ampersandiga (&).
  • Eraldab nime ja väärtused võrdusmärkidega (=), kusjuures nimi on vasakul ja väärtus paremal.
  • Asendab tühikud plussmärkidega (+).
  • Asendab kõik "ebanormaalsed" märgid protsendimärgiga (%), millele järgneb kahekohaline märk kuueteistkümnendkood sümbol.

Teie lõplik kodeeritud string on sarnane järgmisega:

Nimi1=väärtus1&nimi2=väärtus2&nimi3=väärtus3 ...

Märkus. URL-i kodeerimise spetsifikatsioonid leiate standardist RFC1738.

Oletame näiteks, et teil oli vorm, mis küsis nime ja vanust. Selle vormi kuvamiseks kasutatud HTML-koodi on näidatud loendis 2.5.

Nimekiri 2.5. HTML-kood nime ja vanusevormi kuvamiseks.

Nimi ja vanus

Sisestage oma nimi:

Sisesta oma vanus:



Oletame, et kasutaja sisestab nimeväljale Joe Schmoe ja vanuseväljale 20. Sisend kodeeritakse sisendstringi.

Nimi=Joe+Schmoe&age=20

Sisestuse sõelumine

Et see teave oleks kasulik, peate kasutama teavet millegi kohta, mida teie CGI-programmid saavad kasutada. Sisestuse sõelumise strateegiaid käsitletakse 5. peatükis. Praktikas ei pea te kunagi mõtlema, kuidas sisendit sõeluda, sest mitmed eksperdid on juba kirjutanud parsimist teostavad teegid, mis on kõigile kättesaadavad. Kaks sellist teeki on selles peatükis esitatud järgmistes jaotistes: cgi -lib.pl Perli jaoks (kirjutanud Steve Brenner) ja cgihtml C jaoks (kirjutanud mina).

Enamiku erinevates keeltes kirjutatud teekide üldeesmärk on sõeluda kodeeritud string ning panna nime- ja väärtusepaarid andmestruktuuri. Sisseehitatud andmestruktuuridega keele (nt Perl) kasutamisel on ilmne eelis; enamik keeleraamatukogusid aga madalam tase tüüp C ja C++ hõlmab andmestruktuuride ja rutiinide täitmist.

Ei ole vaja saavutada täielikku arusaamist raamatukogudest; palju olulisem on õppida neid kasutama tööriistad CGI programmeerija töö hõlbustamiseks.

Cgi-lib.pl

Cgi-lib.pl kasutab Perli assotsiatiivseid massiive. Funktsioon &ReadParse analüüsib sisendstringi ja sisestab iga nime/väärtuse paari nime järgi. Näiteks vastav Perli stringid, mis on vajalik äsja esitatud sisendstringi "nimi/vanus" dekodeerimiseks

&ReadParse(*input);

Nüüd pääsete juurde, et näha "name" sisestatud väärtust assotsiatiivne massiiv$input("nimi"). Samamoodi, et saada juurdepääs väärtusele "vanus", peate vaatama muutujat $input ("age").

Cgihtml

C-l pole sisseehitatud andmestruktuure, seega teeb cgihtml oma asja enda nimekiriühendused teie CGI sõelumisrutiinidega kasutamiseks. See määratleb kirjetüübi struktuuri järgmiselt:

Typedef struct ( Char *nimi; Char *väärtus; ) Kirjetüüp;

Sisestusstringi "nimi/vanus" C-s cgihtml-i abil sõelumiseks kasutatakse järgmist:

/* kuulutama lingitud loend, mida nimetatakse sisendiks */ Llist sisend; /* sõeluvad sisendit ja asukohta lingitud loendis */ read_cgi_input(&input);

Vanuse teabele juurdepääsuks saate loendi käsitsi sõeluda või kasutada saadaolevat funktsiooni cgi _val().

#kaasa #kaasa Char *vanus = malloc(sizeof(char)*strlen(cgi_val(input, "vanus")) + 1); Strcpy(vanus, cgi_val(sisend, "vanus"));

Väärtus "vanus" on nüüd salvestatud vanusestringi.

Märkus: kasutamise asemel lihtne massiiv(nagu char age ;), ma teen dünaamiline jaotus mäluruumi keelpillide ajastule. Kuigi see muudab programmeerimise keerulisemaks, on see turvalisuse seisukohast siiski oluline. Sellest on täpsemalt juttu 9. peatükis.

Lihtne CGI programm

Kirjutate CGI programmi nimega nameage.cgi, mis käsitleb nime/vanuse vormi. Andmetöötlus (mida ma tavaliselt nimetan "kraamiks") on minimaalne. Nameage.cgi lihtsalt dekodeerib sisendi ja kuvab kasutaja nime ja vanuse. Kuigi sellisest tööriistast pole palju kasu, näitab see CGI programmeerimise kõige kriitilisemat aspekti: sisend ja väljund.

Kasutate sama vormi nagu ülal, avades väljad "nimi ja vanus". Ärge veel muretsege vastupidavuse ja tõhususe pärast; lahendada olemasolev probleem kõige lihtsamal viisil. Perli ja C lahendused on näidatud vastavalt loendites 2.6 ja 2.7.

Nimekiri 2.6. Nameage.cgi Perlis

#!/usr/local/bin/perl # nameage.cgi nõuab "cgi-lib.pl" &ReadParse(*input); print "Content-Type: text/html\r\n\r\n"; printida" \n"; print " Nimi ja vanus\n"; print "\n"; print " \n"; print "Tere, " . $input("nimi") . ". Olete\n"; print $input("vanus") . " aastat vana.

\n"; print "

\n";

Nimekiri 2.7. nameage.cgi keeles C

/* nameage.cgi.c */ #include #include "cgi-lib.h" int main() ( listist sisend; read_cgi_input(&input); printf("Sisutüüp: text/html\r\n\r\n"); printf(" \n"); printf(" Nimi ja vanus\n"); printf("\n"); printf(" \n"); printf("Tere, %s. Sa oled\n",cgi_val(input,"nimi")); printf("%s aastat vana.

\n",cgi_val(sisend,"vanus")); printf("

\n");)

Pange tähele, et need kaks programmi on peaaegu samaväärsed. Mõlemad sisaldavad parsimisrutiine, mis hõivavad ainult ühe rea ja töötlevad kogu sisendit (tänu vastavatele teegirutiinidele). Väljund on sisuliselt teie põhiprogrammi Hello, World!

Proovige programmi käivitada, täites vormi ja klõpsates nuppu Esita.

Üldine programmeerimisstrateegia

Nüüd teate kõiki CGI programmeerimiseks vajalikke põhiprintsiipe. Kui olete aru saanud, kuidas CGI teavet saab ja kuidas see brauserisse tagasi saadab, sõltub teie lõpptoote tegelik kvaliteet teie üldistest programmeerimisvõimetest. Nimelt, kui programmeerite CGI-d (või üldse midagi), pidage meeles järgmisi omadusi:

  • Lihtsus
  • Tõhusus
  • Mitmekülgsus

Esimesed kaks omadust on üsna tavalised: proovige muuta oma kood võimalikult loetavaks ja tõhusaks. Mitmekülgsus kehtib rohkem CGI-programmide kui muude rakenduste puhul. Kui hakkate oma enda programmid CGI abil saate teada, et on mitmeid põhirakendusi, mida kõik teha tahavad. Näiteks CGI-programmi üks levinumaid ja ilmsemaid ülesandeid on vormi töötlemine ja tulemuste meili saatmine konkreetsele adressaadile. Võite lasta töödelda mitut eraldi vormi, millest igaühel on erinev adressaat. Selle asemel, et kirjutada iga vormi jaoks eraldi CGI-programm, saate rohkem kirjutades aega säästa üldine programm CGI, mis töötab kõigi vormide jaoks.

Hõlmades kõiki CGI põhiaspekte, olen andnud teile piisavalt teavet, et alustada CGI programmeerimisega. Kuid selleks, et saada tõhusaks CGI arendajaks, peab teil olema sügavam arusaam sellest, kuidas CGI suhtleb serveri ja brauseriga. Ülejäänud osa sellest raamatust hõlmab üksikasjalikult selles peatükis lühidalt mainitud probleeme, samuti rakenduste arendusstrateegiat ning protokolli eeliseid ja piiranguid.

Kokkuvõte

Selles peatükis tutvustati lühidalt CGI programmeerimise põhitõdesid. Loote väljundi, vormindades oma andmed õigesti ja printides stdout-vormingusse. CGI-sisendi vastuvõtmine on veidi keerulisem, kuna see tuleb enne kasutamist sõeluda. Õnneks on juba olemas mitu parsimist teostavat teeki.

TO praegusel hetkel Peaksite CGI-rakenduste programmeerimisega üsna hõlpsalt selgeks saama. Selle raamatu ülejäänud osas käsitletakse üksikasjalikumalt spetsifikatsioone, näpunäiteid ja programmeerimisstrateegiaid keerukamate ja keerukamate rakenduste jaoks.