Kodutute kaubandus cgi. Selge e-kaubandus. CGI installimine Windowsi

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 kliendil rohkem keskenduda oma põhitegevusele, kasutame uusi tehnoloogiaid siis ja seal, kus see on mõttekas. Meie meeskond tunneb põhjalikult kindlustusvaldkonda ja riigi väga ainulaadset regulatiivset keskkonda ning on selle tulemusel kiire 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 äriprotsesside teenuseid klientidele üle maailma kontoritest Kanadas, Ameerika Ühendriikides ja Euroopas. CGI aktsiad on noteeritud TSX-il (GIB.A) ja NYSE-l (GIB) ning on kantud TSX 100 koondindeksisse, samuti S&P/TSX Kanada infotehnoloogia ja Kanada keskmise kapitali indeksisse Veebisait: .

2012: Briti Logica ost

2012. aasta juunis teatas CGI Group, et on allkirjastanud lepingu Euroopa suurima süsteemiintegraatori Logica ostmiseks. Tehingu summa on 2,8 miljardit Kanada dollarit (2,7 miljardit dollarit). Osana saavutatud kokkulepetest nõustus CGI võtma ka kohustusi tasuda Logica võlg summas 515 miljonit Kanada dollarit.

Tehingu rahastamiseks plaanib CGI koguda 1 miljard Kanada dollarit, emiteerides täiendavalt 46,7 miljonit aktsiat, laenata 2 miljardit Kanada dollarit Kanada Imperial Bank of Commerce'ilt, National Bank of Canadalt ja Toronto-Dominion Bankilt ning umbes 650 miljonit Kanada dollarit. dollarit rohkem. dollarit – praeguse krediidilimiidi piires.

Pakutud hind aktsia kohta oli 59,8% kõrgem Logica sulgemishinnast 30. mail 2012. Tehing vastab ligikaudu 6,6-kordsele Logica aastakasumile enne intresse, makse, kulumit ja amortisatsiooni (EBITDA). 12-kuuline periood lõppes 31. detsembril 2011

Logica omandamine suurendab eeldatavasti CGI kasumit aktsia kohta 25% kuni 30%, välja arvatud omandamis- ja integreerimiskulud. Ühinemise tulemusena on tulemuseks oleva ettevõtte tööjõud ja aastased tulud CGI omast enam kui kaks korda suuremad. Ühendatud ettevõtte personali suuruseks saab olema umbes 72 tuhat töötajat, kes asuvad kontorites 43 riigis ja aastakäive umbes 10,4 miljardit Kanada dollarit (9,6 miljardit dollarit).

Uus ettevõte saab olema maailma IT-konsultantide seas suuruselt kuuendal kohal. Suurimad neist on Reutersi hinnangul IBM, Accenture, Cap Gemini, Tata Consultancy ja Infosys.

"Logica on juhtiv äri- ja tehnoloogiateenuste ettevõte, millel on pühendunud spetsialistid ja usaldusväärsed pikaajalised kliendid," ütles CGI president ja tegevjuht Michael Roach. "Oleme kindlad, et teeme õiget asja." Logica omandamisega omandame selle. õige hinnaga ja õigel ajal, et luua üks väheseid suurimaid sõltumatuid täielike tehnoloogiateenuste pakkujaid.

CGI juhatus kiitis tehingu ühehäälselt heaks. See on kavas lõpetada 2012. aasta septembriks pärast aktsionäride nõusoleku saamist ja tüüpprotseduuride järgimist. Ettevõtte integratsiooniprotsess plaanitakse lõpule viia 3 aasta jooksul

Veebipoodide omanikud tunnevad "elektroonilise kaubanduse" mõistet esmalt, 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ööskeem on korraldatud järgmiselt:

  • 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 - valitud toote kohta ilmub reklaam ametlik partner e-kaubanduse partnerite võrgustik;
  • 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 e-kaubanduse vastu kirglikud, seda eelkõige soovist luua oma veebisait, ainulaadne veebipood, kus müüa oma tooteid. 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 olemas vajalikud tööriistad, seaded ja valikud, mis vastavad tänapäevastele vajadustele.

E-kaubandus selges vene keeles. Kuidas online-äri töötab?

Viimasel ajal on järjest rohkem olnud internetikaubandusega seotud projekte. Seda ala uurides ei leidnud ma protsessi üldist ja arusaadavat kirjeldust. Seetõttu otsustasin teha midagi petulehe taolist, millele saate alati viidata, et mõista protseduuri sellises valdkonnas nagu e-kaubandus.

Teen kohe broneeringu, et keskendusin protsessidele ja kanalitele, mis aitavad kliente tuua.

E-kaubandus: mis see on?

Määratlused sees erinevatest allikatest rääkige midagi kaupade või teenuste müümise kohta Interneti kaudu. Lihtsate sõnadega E-kaubandus on igasugune võrgutegevus, kus ilmub raha.

Ostlemine, müük, kindlustus, pangandus, elektrooniline raha, kõik on siin. Võtke see ja allkirjastage see.

Sihtmärgist

Probleemi mõistmiseks soovitan alustada teed päris lõpust. Mis on mis tahes ettevõtte eesmärk? See on õige, teenige raha. Niisiis, kujutage ette mis tahes toodet, näiteks silikoonsokke. Miks mitte!

Võtsin esimese asjana, mis pähe tuli, selgus, et seal oli midagi sellist...

Meie ülesanne on nende sokkide pealt raha teenida. Me mõtleme Internetile. Hmm... miks mitte luua veebisait ja nii see müük läheb, hoidke mind Maldiividel! Kuid see pole nii lihtne.

Mulle väga meeldib joonistada. See aitab mõista erinevaid protsesse. Joonistame?!

Siiani näeb meie mudel välja selline. Võtame sokid, paneme need internetti ja saame raha. See on lihtsalt suurepärane! Su silmad põlevad, peopesad higistavad ja tahad juba asja kallale asuda. Kuid kas teil on vaja teha veebisait või müügiplatvorm?

Müüa veebisait või platvorm

Toote World Wide Web'i paigutamiseks on erinevaid lahendusi. Saate luua oma veebisaidi või kasutada kolmandate osapoolte platvorme (grupid, sotsiaalvõrgustike lehed, teadetetahvlid jne). Peatume kohapeal.

Tellisite veebisaidi, võtsite valmis malli või lõite selle ise veebisaidi koostaja abil (saate google CMS-i otsida), see pole oluline. Järgmiseks panime hunniku silikoonsokke erinevad tüübid ja õnnelik.

Vabandust lugemise katkestamise pärast. Liituge minu telegrammi kanaliga. Värsked teadaanded artiklite, digitaalsete toodete arendamise ja kasvu häkkimise kohta – see on kõik olemas. Ootan sind! Jätkame...

Maksesüsteemid

Aga selleks, et inimene ostaks sinu käest siin ja praegu, on vaja maksesüsteeme näpistada. See on omamoodi teenus, mis võimaldab teil veebis oste sooritada: pangakaardid, Interneti-raha, Mobiiltelefonid ja veel hulk. Selleks peate jagama teatud protsendi tehingutest, kuid nii teete oma elu palju lihtsamaks.

Valige endale sobiv teenus. Kusagil on see protsent suurem ja kuskil on tellimus või midagi muud. Tehke lihtsalt veidi uurimistööd. Pane vajalik kood oma kodulehele, linki kõik tehingud oma kaardikontoga ja voila!

See näib olevat kõik. Koduleht on olemas, tootekaardid ka ja isegi “osta” nupp töötab, aga midagi on puudu... Ostma hakkavate klientide voogu pole.

Kliendivood

Kus: CAC = uue kliendi hankimise kulu. MCC (turunduskampaania kulud) = klientide meelitamiseks (kuid mitte hoidmiseks) suunatud turunduskulude kogukulu. W (palk) = Turundajate ja müügijuhtide palk. S (tarkvara) = reklaamis ja müügis kasutatava tarkvara maksumus (näiteks kasutatav müügiplatvorm, turunduse automatiseerimine, A/B testimine, analüütikateenused jne). PS (professionaalsed teenused) = kulu professionaalsed teenused turundus- ja müügiosakondadele osutatavad teenused (disain, nõustamine jne). O (muu) = muud turundus- ja müügiosakondadega seotud üldkulud. CA (customersacquired) = meelitatud klientide koguarv.

Kuid me ei tohi unustada ka kliendi kvaliteeti, siin aitab LTV.

Olulised mõõdikud: LTV

Live Time Value ehk kliendi elutsükkel on veel üks e-kaubanduse näitaja, millega tuleb arvestada. See näitab, kui palju tulu üks klient keskmiselt sisse toob. Arvestusviise on erinevaid, ühe täpsema valisin tegeliku kasumipõhiselt.

See on lihtsalt iga kliendi ostuajaloo kogutulude summa. Lisage tehingule N kõigi kliendi ostude (tehingute) summa, kus tehing N on viimane ost, mille klient teie ettevõttega tegi. Kui teil on juurdepääs kõikidele klienditehingute andmetele, saate selle Exceli abil hõlpsasti arvutada.

LTV = (tehing 1 + tehing 2 + tehing 3... + tehing N) x kasumiosa tulust.

LTV arvutamine puhaskasumi põhjal näitab lõppkokkuvõttes tegelikku kasumit, mida klient teie ettevõttele toob. See võtab arvesse klienditeeninduse kulusid, kinnipidamiskulusid, ligitõmbamise kulusid jne. Tulemuseks on terve kompleks arvutusi, mis põhinevad individuaalsetel andmetel. Aja jooksul kliendi kohta teenitud kogukasum annab teile täpse ülevaate teie klientide senisest kasumlikkusest.

Teisi lähenemisviise leiate aadressilt.

Olulised näitajad: CAC ja LTV suhe

Ettevõtte elujõulisuse mõistmiseks on väga oluline vaadata kahe mainitud CAC:LTV suhte suhet.

  • Vähem kui 1:1 – kihutate täiskiirusel pankroti poole.
  • 1:1 – kaotate raha iga meelitatud kliendi pealt.
  • 1:2 – Tundub hea, aga tundub, et sa ei investeeri piisavalt raha ja võiksid kiiremini areneda. Käivitage agressiivsemaid klientide hankimise kampaaniaid ja saavutage suhted 1:3 lähedal.
  • 1:3 – ideaalne suhe. Teil on edukas äri ja tugev ärimudel.

Olulised näitajad: ROI ära unusta

Nagu eespool arutasime, peate e-kaubanduses selgelt aru saama, kas hankimiskanali kasutamine on tulus või mitte. Lisaks LTV-le ja CAC-le on veel üks oluline näitaja: ROI. See näitab, kas teie investeering, meie puhul reklaami, on end ära tasunud. See on. kui palju 1 investeeritud rubla meile lõpuks tõi.

Arvutamiseks kasutatakse väga lihtsat valemit:

Kus "Kampaania tulu" on vahe kanalist saadava tulu ja teie toote maksumuse vahel. Ja kasumi arvutamiseks lahutage reklaamikulud.

Seega näeks üksikasjalikum valem välja selline:

ROI = (kanali tulu – kulu) – reklaamikulud / reklaamikulud x 100%

Lugege üksikasjalikumat näidet koos arvutusega. Tegelikult on see lihtne valem paigutatud samasse Exceli tabelisse, kus kõik arvutatakse automaatselt.

Kõik kolm näitajat, millest oleme arutanud, on e-kaubanduses olulised. Igaüks neist võimaldab teil leida oma voogudes kitsaskohti ja nendega töötada. Siin peitubki äri kasvupotentsiaal. Lisasin meie sokkidega mudelile veel veidi.

Kõike on võimatu ühte materjali mahutada ja kes seda nii kaua loeb? Hiljem teen eraldi juhendi e-kaubanduse nüanssidest, mis võivad müüki segada.

Kokku

Üldiselt on teil nüüd Interneti-kaubandusest või e-kaubandusest üldine arusaam. Lisaks, nagu öeldakse: "Kurat peitub detailides." Uurige iga kanalit eraldi, arvutage tulemusnäitajaid ja otsige pisiasjadest uusi teadmisi. Internetimüük teile ja palju muud! Ja mul on veel üks materjal.

Jah, ma oleks peaaegu unustanud, head uut aastat, kallid lugejad! Soovin teile järgmiseks aastaks suuri võite ja saavutusi!

Tänu veebile saab peaaegu igaüks anda teavet veebis silmale lihtsal kujul ja seda saab laialdaselt levitada. Olete kahtlemata Internetis surfanud ja teisi saite näinud ning nüüd teate ilmselt, et hirmutavad akronüümid, nagu "HTTP" ja "HTML" on lihtsalt lühene 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. Lisaks on palju teenuseid, mis pakuvad uusimat teavet (uudised, ilm, spordisündmuste otseülekanne) ja viitematerjale elektroonilisel kujul, pakutakse ka märkimisväärses koguses 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, et hõlmata 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 palju teisi tõhusaid viise andmete levitamine. 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 Internet selliseks sai? populaarne viis info levitamine? 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, oodates selliste päringute saabumist ja vastates vastavalt.

Kuigi serverid saavad andmeid saata ja vastu võtta, siis server ise 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 abil 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 soovite laiendada serveri võimalusi, et see toimiks veebist e-posti lüüsina, võttes kasutaja sisestatud teabe brauserist ja saadades selle 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 standardsel viisil et programmid saaksid veebiserveriga ühendust võtta. 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õrge tase, ja samas võimas keel, mis sobib eriti hästi teksti sõelumiseks. 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 rakendus, mis nõuab palju tekstitöötlust, 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 linkimist. 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 õpetamisel teiste loodud lühidokumentatsioonile ja 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 näpunäidetega muidugi).

Kuigi ühise lüüsi liidese täielik mõistmine ja omandamine võtab 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 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!"; print"\n"; print " \n"; print "

Tere, Maailm!

\n"; print " \n";

Salvestage see programm nimega hello.cgi ja installige see sobivasse asukohta. (Kui te pole kindel, kus see asub, ärge muretsege, selle leiate selle peatüki hilisemast jaotisest "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 teavet, mida soovite (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 print ": 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 pigem teise reavahetusena kui käru tagastusena.

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 kuvatava teabe kohta (nt sisutüüp: rida) ja tegelikku teavet (mida veebibrauser kuvab). Need kaks teavet eraldatakse tühja reaga.

Päist nimetatakse HTTP päiseks. See annab olulist teavet teabe kohta, mida brauser saab. Neid on mitu erinevat tüüpi HTTP päised ja kõige universaalsem on see, mida varem kasutasite: 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 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 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 levinumad 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 *. wav

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 on 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 skriptikeelt (nt Perl või Tcl), sisestage skripti esimesel real 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 binaarfail) kataloogi /cgi-bin. See tekitab teie süsteemis turvariski. Sellest on täpsemalt juttu 9. peatükis.

Mõned üldised 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 konfigureerimine 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 veebijuurdepääsetavasse 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äljundiga programm, 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 CGI-programmi kutsuvad. 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 . See jaotis hõlmab ainult tekstisisestusvälju. 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 määrab MAXLENGTH maksimaalse märkide arvu, 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 esitada vormi atribuudiga ACTION määratud URL-ile, 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) ning 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 Kliendi masina 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 alates käsurida CGI (näiteks http://hostinimi/cgi-bin/programminimi/tee). PATH_TRANSLATED Tõlgib PATH_INFO suhtelise tee süsteemi tegelikuks teeks.

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, mille sisestab keskkonnamuutuja nimi. Nimekiri 2.3 sisaldab env.cgi, Perli programmi, mis täidab meie eesmärgi.

Loetelu 2.3. Perli programm env.cgi, mis prindib välja 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 loendis 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. Eelistatud meetod on POST, eriti andmeterohkete vormide puhul, sest saadetava info hulgale pole piiranguid, samas kui GET meetodi puhul on meediaruumi hulk piiratud. GET on aga kindel kasulik vara; seda käsitletakse üksikasjalikult 5. peatükis sisend.

Kasutatava meetodi mää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 märgi kahekohaline kuueteistkümnendkood.

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. Saadaval ilmne eelis kasutades keelt, millel on sisseehitatud andmestruktuurid nagu Perl; enamik madalatasemeliste keelte (nt C ja C++) teeke sisaldavad aga andmestruktuuri ja alamprogrammi täitmist.

Ei ole vaja saavutada täielikku arusaamist raamatukogudest; olulisem on õppida neid kasutama tööriistadena, et CGI programmeerija töö oleks lihtsam.

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 äsja esitatud sisendstringi "nimi/vanus" dekodeerimiseks vajalikud vastavad Perli stringid oleksid

&ReadParse(*input);

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

Cgihtml

C-l pole sisseehitatud andmestruktuure, seega rakendab cgihtml oma CGI sõelumisrutiinidega kasutamiseks oma linkide loendit. 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:

/* deklareerib lingitud loendi nimega input */ Llist input; /* 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. Selle asemel, et kasutada lihtsat massiivi (nt laadimisaeg ;), eraldan dünaamiliselt mäluruumi stringi vanuse jaoks. 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 "vahepealseks asjadeks") 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! muudetud versioon.

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 CGI-programme välja töötama, saate teada, et on mitmeid põhirakendusi, mida kõik tahavad teha. 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 säästa aega, kirjutades üldisema CGI-programmi, mis kehtib kõigi vormide kohta.

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.

Nüüdseks peaksite olema CGI-rakenduste programmeerimisega üsna rahul. Selle raamatu ülejäänud osas käsitletakse üksikasjalikumalt spetsifikatsioone, näpunäiteid ja programmeerimisstrateegiaid keerukamate ja keerukamate rakenduste jaoks.