Hajléktalan kereskedelem cgi. Tiszta e-kereskedelem. CGI telepítése Windows rendszeren

Andover, Massachusetts, 2003. november 19

The Commerce Group, Inc. (NYSE: CGI), a Massachusetts-i személygépkocsi-biztosítások legnagyobb szerzője és a CGI Group Inc. (CGI) (TSX: GIB.A; NYSE: GIB;), az információs technológiai és üzleti feldolgozási szolgáltatások vezető szolgáltatója ma bejelentette, hogy aláírta a hat évre szóló üzleti folyamat-outsourcing (BPO) szerződés megújítását 35 millió USD értékben. A CGI teljes körű szabályzatfeldolgozási szolgáltatásokat fog nyújtani a massachusettsi magán- és kereskedelmi személygépkocsi-vonalaknak, valamint a CGI CollaborativeEdge ügynökségi interfész eszközét, alkalmazástámogatást és karbantartást, szabályozási támogatást, rendszertanácsadást és dokumentumkezelési szolgáltatásokat.

Gerald Fels, a Commerce Group ügyvezető alelnöke és pénzügyi igazgatója kijelentette: "Massachusetts vezető személygépkocsi-szolgáltatójaként az a célunk, hogy ügynökeinknek és alkalmazottainknak olyan szolgáltatásokat nyújtsunk, amelyek segítik őket a legmagasabb szintű teljesítményben. Az évek során erős kapcsolatot alakítottunk ki a CGI-vel. Rendszerük robusztus és pontos, csapatuk pedig nagyon jól ismeri belső feldolgozó rendszereinket. Ez fontos számunkra."

Serge LaPalme, a CGI biztosítási üzleti szolgáltatásokért felelős elnöke hozzátette: "Nagyon örülünk, hogy folytathatjuk a Commerce Grouppal fennálló, több mint 30 éves kapcsolatunkat. A Commerce Group továbbra is egyike a megbecsült üzleti partnereinknek, és stratégiai fontosságú a Sikerünk ügyfeleinknek abban, hogy tovább összpontosíthassanak az alaptevékenységükre, akkor és ott használjuk ki az új technológiák előnyeit, ahol és ahol annak van értelme a meglévő megoldásokat ehhez a folyamatosan fejlődő szektorhoz igazítani."

A The Commerce Group, Inc.-ről

A Commerce Group, Inc., egy biztosítási holdingtársaság, a massachusettsi Websterben található. A Commerce Group vagyon- és balesetbiztosítási leányvállalatai közé tartozik a massachusettsi The Commerce Insurance Company és Citation Insurance Company, a kaliforniai Commerce West Insurance Company és az ohiói American Commerce Insurance Company. Leányvállalatain keresztül kombinált biztosítási tevékenységei révén a Commerce Group a 22. helyen áll. az ország legnagyobb személygépjármű-biztosítási csoportja, az A.M. Legjobb, a 2002-es direkt díjszabás információi alapján.

A CGI-ről
Az 1976-ban alapított CGI a létszáma alapján Észak-Amerika ötödik legnagyobb független informatikai szolgáltató cége. A CGI és leányvállalatai 20 000 szakembert foglalkoztatnak. A CGI évesített bevétele jelenleg 2,8 milliárd CDN dollár (1,9 milliárd USD), és 2003. szeptember 30-án a CGI rendelésállománya 12,3 milliárd CDN dollár (9,1 milliárd USD) volt. A CGI teljes körű informatikai és üzleti folyamatszolgáltatásokat nyújt ügyfeleinek világszerte Kanadában, az Egyesült Államokban és Európában. A CGI részvényeit a TSX-en (GIB.A) és a NYSE-n (GIB) jegyzik, és szerepelnek a TSX 100 Composite Indexben, valamint az S&P/TSX Kanadai Információs Technológiai és Kanadai MidCap-indexekben: .

2012: A brit Logica megvásárlása

2012 júniusában a CGI Group bejelentette, hogy megállapodást írt alá a legnagyobb európai rendszerintegrátor, a Logica megvásárlásáról. A tranzakció összege 2,8 milliárd kanadai dollár (2,7 milliárd dollár). A megkötött megállapodások részeként a CGI vállalta a Logica 515 millió kanadai dollár adósságának visszafizetését is.

A tranzakció finanszírozására a CGI további 46,7 millió részvény kibocsátásával 1 milliárd kanadai dollárt tervez összegyűjteni, 2 milliárd kanadai dollár kölcsönt vesz fel a Canadian Imperial Bank of Commerce-től, a Kanadai Nemzeti Banktól és a Toronto-Dominion Banktól, valamint mintegy 650 millió kanadai dollárt. dollárral több – a jelenlegi hitelkereten belül.

A javasolt részvényenkénti ár 59,8%-kal volt magasabb, mint a Logica 2012. május 30-i záróára. Az ügylet körülbelül 6,6-szorosa a Logica 2011. december 31-én végződő 12 hónapos eredményének (EBITDA).

A Logica felvásárlása várhatóan 25-30%-kal növeli a CGI egy részvényre jutó eredményét, az akvizíciós és integrációs költségek nélkül. Az egyesülés eredményeként a létrejövő cég munkaerő-állománya és éves bevétele több mint kétszerese lesz a CGI-nek. Az egyesített vállalat létszáma körülbelül 72 ezer alkalmazott lesz, akik 43 ország irodáiban helyezkednek el, az éves bevétel pedig körülbelül 10,4 milliárd kanadai dollár (9,6 milliárd dollár) lesz.

Az új cég a hatodik legnagyobb lesz a világ informatikai tanácsadói között. Ezek közül a legnagyobbak az IBM, az Accenture, a Cap Gemini, a Tata Consultancy és az Infosys a Reuters becslései szerint.

"A Logica vezető üzleti és technológiai szolgáltató vállalat elkötelezett szakemberekkel és megbízható, hosszú távú ügyfelekkel" - mondta Michael Roach, a CGI elnök-vezérigazgatója a megfelelő áron és a megfelelő időben, hogy létrejöjjön a néhány legnagyobb független teljes körű technológiai szolgáltató egyike."

A CGI igazgatótanácsa egyhangúlag jóváhagyta a tranzakciót. A tervek szerint 2012 szeptemberére készül el, miután megkapta a részvényesek jóváhagyását, és követi a szokásos eljárásokat. A cégek integrációs folyamata a tervek szerint 3 éven belül lezárul

Az online áruházak tulajdonosai első kézből ismerik az „elektronikus kereskedelem” fogalmát, és már tudják a választ az „e-kereskedelem – mi ez?” kérdésre; De ha a végére értünk, sok árnyalat jelenik meg, és ez a kifejezés tágabb jelentést kap.

E-kereskedelem: mi ez?

Az általános koncepció a következő: az e-kereskedelem az üzleti tevékenység bizonyos megközelítése, amely magában foglalja számos olyan művelet beépítését, amelyek digitális adatátvitelt használnak az áruk vagy szolgáltatások/munkavégzés során, beleértve a Internet.

Így minden olyan kereskedelmi ügyletről van szó, amelyet elektronikus kommunikációs eszközzel hajtanak végre.

A munkafolyamat a következő:

  • bárki lehet blogger vagy bármely más saját internetes oldal tulajdonosa) regisztrál ebbe a rendszerbe;
  • saját linket kap;
  • speciális kódot helyez el a weboldalán - megjelenik a kiválasztott termék hirdetése hivatalos partner e-kereskedelmi partnerhálózat;
  • figyeli a webhelyek konverzióját;
  • bizonyos százalékot keres minden egyes vásárlás után, amelyet a webhely egy látogatója követ, aki egy társult linket követ.

WP e-kereskedelem

Ma már nagyon sokan rajonganak az e-kereskedelemért, elsősorban azért, mert saját weboldalt szeretnének létrehozni, egy egyedi webáruházat, ahol saját termékeiket árusítják. Ennek a növekvő igénynek a kielégítése érdekében a fejlesztők az e-kereskedelmi sablonok létrehozására összpontosítottak. Nézzük meg, mi ez a következő.

Ilyen sablon például a WordPress e-kereskedelem. Ez egy bevásárlókosár-bővítmény a WordPress-hez (az egyik leghíresebb webes erőforrás-kezelő rendszerhez), amelyet elsősorban blogok létrehozására és rendszerezésére szánnak. Teljesen ingyenes, és lehetővé teszi a webhely látogatóinak, hogy vásároljanak a webhelyen.

Más szavakkal, ez a bővítmény lehetővé teszi egy online áruház létrehozását (WordPress alapú). Ez az e-kereskedelmi bővítmény mindent tartalmaz szükséges eszközöket, a modern igényeknek megfelelő beállítások és lehetőségek.

E-kereskedelem tiszta orosz nyelven. Hogyan működik az online üzlet?

Az utóbbi időben egyre több az online kereskedéssel kapcsolatos projekt. A terület tanulmányozása során nem találtam általános és érthető leírást a folyamatról. Ezért úgy döntöttem, hogy készítek valami csalólapot, amelyre mindig hivatkozhat, hogy megértse az eljárást egy olyan területen, mint az e-kereskedelem.

Azonnal leszögezem, hogy azokra a folyamatokra és csatornákra összpontosítottam, amelyek segítik az ügyfelek bevonását.

E-kereskedelem: miről szól?

Meghatározások tovább különböző forrásokból mondjon valamit az áruk vagy szolgáltatások internetes értékesítéséről. Egyszerű szavakkal Az e-kereskedelem minden olyan online tevékenység, ahol megjelenik a pénz.

Vásárlás, eladás, biztosítás, bank, elektronikus pénz, minden van itt. Vedd el és írd alá.

A célponttól

A probléma megértése érdekében azt javaslom, hogy az utat a legvégéről kezdjük. Mi a célja bármely vállalkozásnak? Így van, keress pénzt. Tehát képzeljen el bármilyen terméket, például szilikon zoknit. Miért ne!

Vettem, ami először eszembe jutott, kiderült, hogy valami ilyesmiről van szó...

A mi feladatunk, hogy pénzt keressünk ezeken a zoknikon. Az internetre gondolunk. Hmm... miért ne készíthetne egy weboldalt, és így fognak menni az eladások, csak tartsatok meg Maldív-szigeteket! De ez nem ilyen egyszerű.

Nagyon szeretek rajzolni. Ez segít megérteni a különböző folyamatokat. Rajzoljunk?!

Eddig így néz ki a modellünk. Zoknit veszünk, feltesszük az internetre, és pénzt kapunk. Ez egyszerűen nagyszerű! Ég a szemed, izzad a tenyered, és már szeretnél nekivágni a dolognak. De weboldalt vagy értékesítési platformot kell készítenie?

Weboldal vagy platform eladó

Különféle megoldások léteznek a termék világhálón való elhelyezésére. Létrehozhat saját webhelyet, vagy használhat harmadik fél platformjait (csoportok, közösségi oldalak, üzenőfalak stb.). Álljunk meg a helyszínen.

Megrendelt egy weboldalt, vett egy kész sablont, vagy saját maga készítette webhelykészítővel (google CMS-sel), ez nem számít. Ezután egy csomó szilikon zoknit helyeztünk el különböző típusokés boldog.

Elnézést az olvasás megszakításáért. Csatlakozz a távirati csatornámhoz. Friss cikkek bejelentései, digitális termékek fejlesztése és növekedési hack, minden megvan. Várok rád! Folytassuk...

Fizetési rendszerek

De ahhoz, hogy valaki itt és most vásároljon Öntől, módosítania kell a fizetési rendszereket. Ez egy olyan szolgáltatás, amely lehetővé teszi az online vásárlást: bankkártyák, internetes pénz, Mobiltelefonokés még egy csomó. Ehhez meg kell osztania a tranzakciók egy százalékát, de így jelentősen megkönnyíti az életét.

Válassza ki az Önnek megfelelő szolgáltatást. Valahol magasabb lesz a százalék, valahol pedig előfizetés vagy valami más. Csak végezzen egy kis kutatást. Helyezze el a szükséges kódot a webhelyére, kapcsolja össze az összes tranzakciót a kártyaszámlájával, és íme!

Úgy tűnik, ez minden. Van honlap, termékkártyák is, és még a „vásárlás” gomb is működik, de valami hiányzik... Nincs vevő, aki vásárolni fog.

Ügyféláramlások

Hol: CAC = új ügyfél megszerzésének költsége. MCC (marketingcampaign cost) = Az ügyfelek megnyerését (de nem megtartását) célzó marketingkiadások összköltsége. W (bérek) = Marketingesek és értékesítési vezetők fizetése. S (szoftver) = A reklámozásban és értékesítésben használt szoftverek költsége (például a használt értékesítési platform, marketing automatizálás, A/B tesztelés, analitikai szolgáltatások stb.). PS (professionalservices) = Költség Professzionális szolgáltatások a marketing és értékesítési osztályoknak nyújtott szolgáltatások (tervezés, tanácsadás stb.). O (egyéb) = A marketing és értékesítési részleghez kapcsolódó egyéb általános költségek. CA (customersacquired) = A vonzott ügyfelek teljes száma.

De nem szabad megfeledkeznünk az ügyfél minőségéről sem.

Fontos mutatók: LTV

Az élő időérték, az ügyfél életciklusa egy másik mutató az e-kereskedelemben, amelyet figyelembe kell venni. Megmutatja, hogy egy ügyfél átlagosan mennyi bevételt hoz. A számításnak többféle megközelítése van, én a ténylegeset a profit alapján választottam, mint az egyik legpontosabbat.

Ez egyszerűen az egyes vásárlók vásárlási előzményeinek teljes bevételének összege. Adja hozzá az összes vásárlói vásárlás (tranzakció) összegét az N tranzakcióhoz, ahol az N tranzakció az utolsó vásárlás, amelyet az ügyfél az Ön cégével hajtott végre. Ha minden ügyféltranzakciós adathoz hozzáfér, akkor ezt egyszerűen ki tudja számítani az Excel segítségével.

LTV = (1. tranzakció + 2. tranzakció + 3. tranzakció... + N. tranzakció) x nyereségrészesedés a bevételből.

A nettó nyereségen alapuló LTV kiszámítása végső soron azt mutatja meg, hogy az ügyfél milyen tényleges nyereséget hoz a vállalatnak. Ez figyelembe veszi az ügyfélszolgálat költségeit, a megtartási költséget, a vonzás költségeit stb. Az eredmény egyéni adatokon alapuló számítások egész komplexuma. Az egy vevőnként megtermelt teljes nyereség idővel pontos képet ad ügyfelei eddigi jövedelmezőségéről.

Más megközelítések a címen találhatók.

Fontos mutatók: CAC és LTV arány

Egy vállalkozás életképességének megértéséhez nagyon fontos megnézni a két említett CAC:LTV arány arányát.

  • Kevesebb, mint 1:1 – Teljes sebességgel rohansz a csőd felé.
  • 1:1 – Pénzt veszít minden vonzott ügyfélnél.
  • 1:2 – Jónak tűnik, de úgy tűnik, nem fektet be elég pénzt, és gyorsabban fejlődhetne. Indítson agresszívebb ügyfélszerzési kampányokat, és érjen el közel 1:3 arányt.
  • 1:3 – Ideális arány. Virágzó üzleted és erős üzleti modelled van.

Fontos mutatók: A ROI ne felejtse el

Mint fentebb tárgyaltuk, az e-kereskedelemben világosan meg kell értenie, hogy nyereséges-e az akvizíciós csatorna használata vagy sem. Az LTV és a CAC mellett van még egy fontos mutató: a ROI. Megmutatja, hogy megtérült-e a befektetése, esetünkben a reklámba. Azaz. mennyit hozott nekünk végül 1 befektetett rubel.

A számításhoz egy nagyon egyszerű képletet használnak:

Ahol a „Kampány bevétele” a csatornából származó bevétel és a termék költsége közötti különbség. A profit kiszámításához pedig vonja le a hirdetési költségeket.

Így egy részletesebb képlet így nézne ki:

ROI = (csatorna bevétele – költség) – hirdetési költségek / hirdetési költségek x 100%

Olvasson el egy részletesebb példát számítással. Valójában ez az egyszerű képlet ugyanabba az Excel-táblázatba kerül, ahol minden automatikusan kiszámításra kerül.

Mindhárom általunk tárgyalt mutató fontos az e-kereskedelemben. Mindegyik lehetővé teszi, hogy megtalálja a szűk keresztmetszeteket a folyamatokban, és dolgozzon velük. Ebben rejlik az üzleti élet növekedési potenciálja. Zoknival kiegészítettem egy kicsit a modellünket.

Lehetetlen mindent egy anyagba illeszteni, és ki fogja ilyen sokáig olvasni? Később külön útmutatót készítek az e-kereskedelem azon árnyalatairól, amelyek megzavarhatják az értékesítést.

Teljes

Összességében most már általános ismeretekkel rendelkezik az online kereskedésről vagy az e-kereskedelemről. Továbbá, ahogy mondják: "Az ördög a részletekben rejlik." Tanulmányozzon minden csatornát külön, számítson ki teljesítménymutatókat, és keressen új meglátásokat az apróságokban. Internetes értékesítés Önnek, és még sok más! És van még egy anyagom.

Igen, majdnem elfelejtettem, Boldog Új Évet, kedves olvasók! Sok sikert és sikereket kívánok jövőre!

A világhálónak köszönhetően szinte bárki szemnek kímélő és széles körben terjeszthető formában közölhet online információkat. Kétségtelenül szörfölt az interneten, és látott más webhelyeket, és most már valószínűleg tudja, hogy az olyan ijesztő betűszavak, mint a „HTTP” és a „HTML”, egyszerűen a „web” és „az információ interneten történő kifejezésének módja” rövidítése. Lehet, hogy már van némi tapasztalata az információk internetes bemutatásában.

Az internet ideális médiumnak bizonyult az információterjesztésre, amint az óriási népszerűségéből és széleskörű fejlődéséből is látszik. Bár egyesek megkérdőjelezik az internet hasznosságát, és széleskörű fejlődését és népszerűségét elsősorban a tolakodó reklámoknak tulajdonítják, az internet tagadhatatlanul fontos médium mindenféle információ bemutatására. Nemcsak számos szolgáltatás kínálja a legfrissebb információkat (hírek, időjárás, élő sportesemények) és referenciaanyagokat elektronikus formában, jelentős mennyiségű más típusú adat is rendelkezésre áll. Az IRS, amely az összes 1995-ös adóbevallási űrlapját és egyéb információit a világhálón keresztül terjesztette, nemrégiben elismerte, hogy rajongói leveleket kapott a webhelyéhez. Ki gondolta volna, hogy az adóhivatal valaha is kap rajongói leveleket? Ennek nem az az oka, hogy az oldalát jól megtervezték, hanem azért, mert valóban hasznos eszköznek bizonyult emberek ezrei, esetleg milliói számára.

Mitől egyedi és vonzó információs szolgáltatás a web? Mindenekelőtt hipermédiás felületet biztosít az adatokhoz. Gondoljon a számítógépe merevlemezére. Az adatokat általában lineárisan fejezik ki, hasonlóan egy fájlrendszerhez. Például számos mappája van, és mindegyik mappában vannak dokumentumok vagy egyéb mappák. A web egy másik paradigmát használ az információ kifejezésére, amelyet hipermédiának neveznek. A hipertext felület egy dokumentumból és hivatkozásokból áll. A hivatkozások olyan szavak, amelyekre kattintva más dokumentumokat vagy más típusú információkat találhat. A Web kiterjeszti a hipertext fogalmát más típusú médiákra, például grafikára, hangra, videóra (innen ered a „hipermédia” elnevezés). Szöveg vagy grafika kijelölése egy dokumentumon lehetővé teszi, hogy a kiválasztott elemre vonatkozó kapcsolódó információkat tekintsen meg tetszőleges számú formában.

Szinte mindenki profitálhat az információk bemutatásának és terjesztésének egyszerű és egyedi módjából, az akadémikusoktól, akik azonnal szeretnék használni az adatokat kollégáikkal, egészen az üzletemberekig, akik mindenkivel megosztják a cégükről információkat. Bár az információadás rendkívül fontos, az elmúlt néhány évben sokan úgy érezték, hogy az információ átvétele ugyanolyan fontos folyamat.

Bár a web egyedülálló hipermédiás felületet biztosít az információkhoz, sok más is létezik hatékony módszerek adatterjesztés. Például olyan hálózati szolgáltatások, mint a File Transfer Protocol (FTP) és a Gopher hírcsoport, jóval a világháló előtt léteztek. Az elektronikus levelezés szinte a kezdetektől fogva a kommunikáció és az információcsere elsődleges médiuma volt az interneten és a legtöbb más hálózaton. Miért lett ilyen az internet? népszerű módja információ terjesztés? Az internet multimédiás aspektusa jelentősen hozzájárult példátlan sikeréhez, de ahhoz, hogy az internet a leghatékonyabb legyen, interaktívnak kell lennie.

A felhasználói bemenet fogadásának és információszolgáltatásának képessége nélkül a web teljesen statikus környezet lenne. Az információ csak a szerző által meghatározott formátumban lenne elérhető. Ez aláásná a számítástechnika egyik képességét általában: az interaktív információt. Például ahelyett, hogy arra kényszerítené a felhasználót, hogy több dokumentumot nézzen meg, mintha egy könyvet vagy szótárat nézne, jobb lenne, ha lehetővé tenné a felhasználó számára, hogy azonosítsa a kulcsszavakat egy érdekes témában. A felhasználók testreszabhatják az adatok megjelenítését ahelyett, hogy a tartalomszolgáltató által meghatározott merev struktúrára hagyatkoznának.

A "webszerver" kifejezés félrevezető lehet, mert utalhat mind a fizikai gépre, mind az internetes böngészőkkel való kommunikációhoz használt szoftverre. Amikor egy böngésző lekér egy adott webcímet, először az interneten keresztül csatlakozik a géphez, és elküldi a webkiszolgáló szoftvernek a dokumentumra vonatkozó kérést. Ez szoftver folyamatosan fut, várja az ilyen kérések megérkezését, és megfelelően válaszol.

Bár a szerverek küldhetnek és fogadhatnak adatokat, maga a szerver funkcionalitás korlátozott. Például a legprimitívebb szerver csak a szükséges fájlt tudja elküldeni a böngészőnek. A szerver általában nem tud mit kezdeni ezzel vagy azzal a kiegészítő bemenettel. Ha az internetszolgáltató nem mondja meg a kiszolgálónak, hogyan kezelje ezeket a kiegészítő információkat, a szerver valószínűleg figyelmen kívül hagyja a bevitelt.

Ahhoz, hogy a szerver a keresésen és az internetböngészőbe való fájlok elküldésén kívül más műveleteket is el tudjon végezni, ismernie kell a szerver funkcionalitásának bővítését. Például egy webszerver nem tud keresni egy adatbázisban a felhasználó által beírt kulcsszó alapján, és nem tud több egyező dokumentumot visszaadni, kivéve, ha ez a képesség valamilyen módon be van programozva a szerverbe.

Mi az a CGI?

A Common Gateway Interface (CGI) egy olyan interfész a szerverhez, amely lehetővé teszi a szerver funkcionalitásának kiterjesztését. A CGI használatával interaktív interakcióba léphet a webhelyét elérő felhasználókkal. Elméleti szinten a CGI lehetővé teszi, hogy a szerver képes legyen elemezni (értelmezni) a böngésző bemenetét, és a felhasználó által bevitt adatok alapján információkat visszaadni. Gyakorlati szinten a CGI egy olyan felület, amely lehetővé teszi a programozó számára, hogy olyan programokat írjon, amelyek könnyen kommunikálnak a szerverrel.

A szerver képességeinek bővítéséhez általában magának kell módosítania a szervert. Ez a megoldás nem kívánatos, mert megköveteli az Internet Protocol hálózati programozás alsó rétegének megértését. Ehhez a kiszolgáló forráskódjának szerkesztésére és újrafordítására is szükség lenne, vagy minden feladathoz egyéni szervert kell írni. Tegyük fel, hogy ki akarjuk terjeszteni a szerver képességeit, hogy web-e-mail átjáróként működjön, átveszi a felhasználó által megadott információkat a böngészőből, és továbbküldi. email egy másik felhasználónak. A szervernek kódot kell beillesztenie a böngésző bemenetének elemzéséhez, e-mailben továbbítania a másik felhasználónak, és a választ a hálózati kapcsolaton keresztül visszaküldenie a böngészőnek.

Először is, egy ilyen feladathoz hozzáférés szükséges a szerver kódjához, ami nem mindig lehetséges.

Másodszor, ez nehéz és kiterjedt műszaki ismereteket igényel.

Harmadszor, ez csak egy adott szerverre vonatkozik. Ha át kell helyeznie a szervert egy másik platformra, akkor futnia kell, vagy legalábbis sok időt kell töltenie a kód áthelyezésével erre a platformra.

Miért a CGI?

A CGI hordozható és egyszerű megoldást kínál ezekre a problémákra. A CGI protokoll határozza meg szabványos módon hogy a programok kapcsolatba léphessenek a webszerverrel. Speciális ismeretek nélkül bármilyen gépi nyelven írhat programot, amely interfészen van a webszerverrel és kommunikál vele. Ez a program minden olyan webszerverrel működik, amely megérti a CGI protokollt.

A CGI-kommunikáció szabványos be- és kimenettel történik, ami azt jelenti, hogy ha tudja, hogyan kell adatokat nyomtatni és olvasni a programozási nyelv használatával, akkor írhat webszerver alkalmazást. A bemenet és a kimenet elemzésén kívül a CGI-alkalmazások programozása szinte egyenértékű bármely más alkalmazás programozásával. Például a "Hello, World!" program programozásához használja a nyelve nyomtatási funkcióit és a CGI programok számára meghatározott formátumot a megfelelő üzenet kinyomtatásához.

Programozási nyelv kiválasztása

Mivel a CGI egy univerzális interfész, nem korlátozódik egyetlen gépi nyelvre sem. Egy fontos kérdés, amelyet gyakran feltesznek: milyen programozási nyelvek használhatók a CGI programozáshoz? Bármilyen nyelvet használhat, amely lehetővé teszi a következők végrehajtását:

  • Nyomtatás szabványos kimenetre
  • Olvasás a szabványos bemenetről
  • Olvasás a változó módokból

Szinte az összes programozási nyelv és sok szkriptnyelv elvégzi ezt a három dolgot, és bármelyiket használhatja.

A nyelvek a következő két osztály egyikébe tartoznak: fordított és tolmácsolt. Az olyan lefordított nyelvek, mint a C vagy a C++, általában kisebbek és gyorsabbak, míg az olyan tolmácsolt nyelvek, mint a Perl vagy a Rexx, időnként nagy tolmácsot igényelnek az indításkor. Ezenkívül bináris kódokat (a gépi nyelvre lefordító kódokat) forráskód nélkül is terjeszthet, ha a nyelve lefordítható. Az értelmezhető szkriptek terjesztése általában forráskód terjesztését jelenti.

Mielőtt nyelvet választana, először mérlegelnie kell a prioritásait. Mérlegelnie kell az egyik programozási nyelv sebességének és hatékonyságának előnyeit egy másik programozás egyszerűségéhez képest. Ha szeretne egy másik nyelvet tanulni, ahelyett, hogy a már ismert nyelvet használná, alaposan mérlegelje mindkét nyelv előnyeit és hátrányait.

A CGI programozás két leggyakrabban használt nyelve a C és a Perl (mindkettővel foglalkozunk ebben a könyvben). Mindkettőnek egyértelmű előnyei és hátrányai vannak. Perl egy nagyon magas szint, és egyben erőteljes nyelv, különösen alkalmas szövegelemzésre. Bár könnyű kezelhetősége, rugalmassága és teljesítménye vonzó nyelvvé teszi a CGI programozáshoz, viszonylag nagy mérete és lassabb működése néha alkalmatlanná teszi egyes alkalmazásokhoz. A C programok kisebbek, hatékonyabbak és alacsonyabb szintű rendszervezérlést biztosítanak, de bonyolultabb a programozásuk, nem rendelkeznek könnyű beépített szövegfeldolgozási rutinokkal, és nehezebb a hibakeresésük.

Melyik nyelv a legalkalmasabb a CGI programozáshoz? Amit programozási szempontból kényelmesebbnek tartasz. Mindkettő egyformán hatékony a CGI-alkalmazások programozásában, és a megfelelő könyvtárakkal mindkettő hasonló képességekkel rendelkezik. Ha azonban van egy nehezen elérhető szerverünk, használhatunk kisebb, lefordított C programokat is.

Figyelmeztetések

A CGI-alkalmazásoknak van néhány fontos alternatívája. Sok szerver ma már API-programozást is tartalmaz, ami megkönnyíti a közvetlen szerverbővítmények programozását, szemben az önálló CGI-alkalmazásokkal. Az API szerverek általában hatékonyabbak, mint a CGI programok. Más szerverek olyan beépített funkciókat tartalmaznak, amelyek képesek kezelni a speciális, nem CGI-elemeket, például az adatbázis-csatolást. Végül néhány alkalmazást néhány új kliensoldali (és nem szerveroldali) technológia kezelhet, mint például a Java. A technológia ilyen gyors változásai mellett a CGI gyorsan elavulttá válik?

Alig. A CGI számos előnnyel rendelkezik az újabb technológiákkal szemben.

  • Sokoldalú és hordozható. CGI-alkalmazást szinte bármilyen programozási nyelv használatával írhat bármilyen platformon. Egyes alternatívák, például a szerver API, bizonyos nyelvekre korlátozzák, és sokkal nehezebb megtanulni.
  • Nem valószínű, hogy a kliensoldali technológiák, például a Java felváltják a CGI-t, mert vannak olyan alkalmazások, amelyek futtatására a szerveroldali alkalmazások sokkal alkalmasabbak.
  • A CGI korlátozásai közül sok a HTML vagy a HTTP korlátozása. Ahogy az internetes szabványok egésze fejlődik, úgy fejlődnek a CGI-képességek is.

Összegzés

A Common Gateway Interface az a protokoll, amelyen keresztül a programok együttműködnek a webszerverekkel. A CGI sokoldalúsága lehetővé teszi a programozók számára, hogy szinte bármilyen nyelven írjanak átjáróprogramokat, bár számos kompromisszum van a különböző nyelvekkel kapcsolatban. E képesség nélkül az interaktív weblapok létrehozása nehézkes lenne, legjobb esetben a szerver módosítását igényelné, és az interaktivitás nem lenne elérhető a legtöbb felhasználó számára, aki nem webhelyadminisztrátor.

2. fejezet: Alapok

Néhány évvel ezelőtt létrehoztam egy oldalt egy harvardi főiskola számára, ahol az emberek észrevételeket tehettek róluk. Abban az időben az internet fiatal volt, és alig volt dokumentáció. Sok máshoz hasonlóan én is mások által készített rövid dokumentációkra és programozási rendszerekre támaszkodtam, hogy megtanítsam magam a CGI programozásra. Bár ez a vizsgálati módszer némi keresést, sok kísérletet igényelt és sok kérdést vetett fel, nagyon hatékony volt. Ez a fejezet a CGI-vel végzett korai munkám eredménye (természetesen néhány módosítással).

Bár a közös átjáró felület teljes megértése és elsajátítása némi időt vesz igénybe, maga a protokoll meglehetősen egyszerű. Bárki, aki rendelkezik bizonyos alapvető programozási ismeretekkel és ismeri a webet, gyorsan megtanulhatja a meglehetősen bonyolult CGI-alkalmazások programozását, ahogy én és mások is megtanultuk néhány évvel ezelőtt.

Ennek a fejezetnek a célja a CGI alapjainak átfogó, bár tömören bemutatása. Az itt tárgyalt fogalmak mindegyikét részletesen bemutatjuk a következő fejezetekben. Ennek a fejezetnek a befejezése után azonban azonnal elkezdheti a CGI-alkalmazások programozását. Miután elérte ezt a szintet, megtanulhatja a CGI fortélyait, akár a könyv többi részének elolvasásával, akár egyszerűen saját kísérletezéssel.

A CGI programozást két feladatra bonthatja le: információk fogadása a webböngészőből és információk visszaküldése a böngészőnek. Ez meglehetősen intuitív módon történik, miután megismerte a CGI-alkalmazások normál használatát. A felhasználót gyakran arra kérik, hogy töltsön ki valamilyen űrlapot, például írja be a nevét. Miután a felhasználó kitölti az űrlapot és megnyomja az Enter billentyűt, ez az információ elküldésre kerül a CGI programnak. A CGI programnak ezután át kell alakítania ezeket az információkat olyanná, amit megért, ennek megfelelően feldolgoznia, majd vissza kell küldenie a böngészőnek, legyen az egyszerű megerősítés vagy egy többcélú adatbázisban végzett keresés eredménye.

Más szavakkal, a CGI programozásához meg kell érteni, hogyan lehet bemenetet fogadni az internetböngészőtől, és hogyan lehet visszaküldeni a kimenetet. Az, hogy mi történik a CGI program bemeneti és kimeneti szakasza között, a fejlesztő céljától függ. Látni fogod, hogy a CGI programozás fő nehézsége ebben a köztes szakaszban rejlik; Miután megtanulta, hogyan kell dolgozni a bemenettel és a kimenettel, ez lényegében elég ahhoz, hogy CGI-fejlesztővé váljon.

Ebben a fejezetben megismerheti a CGI bemeneti és kimeneti alapelveit, valamint más alapvető készségeket, amelyekre szüksége lesz a CGI írásához és használatához, beleértve a HTML-űrlapok létrehozását és a CGI-programok elnevezését. Ez a fejezet a következő témákat fedi le:

  • Hagyományos program „Helló, világ!”;
  • CGI kimenet: Információ visszaküldése internetes böngészőben való megjelenítéshez;
  • Az alkalmazás konfigurálása, telepítése és futtatása. Megismerheti a különböző webes platformokat és szervereket;
  • CGI Input: A webböngésző által küldött információk értelmezése. Bevezetés néhány hasznos programozási könyvtárba az ilyen bemenetek elemzéséhez;
  • Egy egyszerű példa: egy adott fejezet összes leckéjét lefedi;
  • Programozási stratégia.

A fejezet jellegéből adódóan néhány témát csak enyhén érintek. Ne aggódj; Mindezekkel a témákkal sokkal mélyebben foglalkozunk más fejezetekben.

Helló Világ!

Egy hagyományos bevezető programozási problémával kezdi. Írsz egy programot, amely a "Hello, World!" a webböngészőjében. Mielőtt megírná ezt a programot, meg kell értenie, milyen információkat vár a webböngésző a CGI-programoktól. Azt is tudnia kell, hogyan kell futtatni ezt a programot, hogy működés közben is lássa.

A CGI nyelvfüggetlen, így ezt a programot bármilyen nyelven megvalósíthatja. Itt több különböző nyelvet használnak az egyes nyelvek függetlenségének bemutatására. Perlben a "Hello, World!" a 2.1.

Felsorolás 2.1. Helló Világ! a Perlben. #!/usr/local/bin/perl # Hello.cgi - Az első CGI programom "Content-Type: text/html\n\n"; nyomtatni" \n"; nyomtatás " Helló Világ!"; nyomtat"\n"; nyomtatás " \n"; nyomtatás "

Helló Világ!

\n"; nyomtatás " \n";

Mentse ezt a programot hello.cgi néven, és telepítse a megfelelő helyre. (Ha nem biztos benne, hogy hol van, ne aggódjon; ezt a fejezet későbbi, "CGI-program telepítése és futtatása" című részében találja meg.) A legtöbb szerver esetében a cgi-bin könyvtárra van szüksége. . Most hívja meg a programot a webböngészőből. A legtöbb számára ez a következő egységes erőforráskereső (URL) megnyitását jelenti:

http://hostname/directoryname/hello.cgi

A gazdagépnév a webszerver neve, a könyvtárnév pedig az a könyvtár, ahová a hello.cgi-t (valószínűleg cgi-bin) helyezte.

A hello.cgi felosztása

Néhány dolgot érdemes megjegyezni a hello.cgi-vel kapcsolatban.

Először is egyszerű nyomtatási parancsokat kell használnia. A CGI programok nem igényelnek semmilyen speciális fájlleírót vagy kimeneti leírót. Ha el szeretné küldeni a kimenetet a böngészőnek, egyszerűen nyomtasson az stdoutba.

Másodszor, vegye figyelembe, hogy az első nyomtatási utasítás tartalma (Content-Type: text/html) nem jelenik meg a webböngészőben. Bármilyen információt visszaküldhet a böngészőnek (HTML oldal, grafika vagy hang), de először meg kell mondania a böngészőnek, hogy milyen adatokat küld. Ez a sor közli a böngészővel, hogy milyen információra számítson – jelen esetben egy HTML-oldalra.

Harmadszor, a program neve hello.cgi. Nem kell mindig a .cgi kiterjesztést használnia a CGI program nevével. Bár sok nyelv forráskódja is használja a .cgi kiterjesztést, ez nem a nyelv típusának jelzésére szolgál, hanem egy módja annak, hogy a szerver végrehajtható fájlként azonosítsa a fájlt, nem pedig grafikus fájlként, HTML fájlként vagy szöveges fájl. A szerverek gyakran úgy vannak beállítva, hogy csak azokat a fájlokat kíséreljék meg végrehajtani, amelyek rendelkeznek ezzel a kiterjesztéssel, és megjelenítik az összes többi fájl tartalmát. Bár a .cgi kiterjesztés használata nem kötelező, mégis bevált gyakorlatnak számít.

Általában a hello.cgi két fő részből áll:

  • közli a böngészővel, hogy milyen információra számítson (Tartalomtípus: text/html)
  • megmondja a böngészőnek, hogy mit jelenítsen meg (Hello, World!)

Helló Világ! C-ben

A CGI programok nyelvi függetlenségének bemutatására a 2.2-es lista a hello.cgi program megfelelőjét mutatja C nyelven.

Felsorolás 2.2. Helló Világ! in C. /* hello.cgi.c - Hello, World CGI */ #include int main() ( printf("Tartalom típusa: text/html\r\n\r\n"); printf(" \n"); printf(" Helló Világ!\n"); printf("\n"); printf(" \n"); printf("

Helló Világ!

\n"); printf(" \n");)

jegyzet

Ne feledje, hogy a hello.cgi Perl verziója Content-Type print ": text/html\n\n "; Míg a C verzió a Printf("Content-Type: text/html\r\n\r\n");

Miért írja ki a Perl az utasítást két újsorra (\n), míg a C printf két kocsivisszaadásra és újsorra (\r\n)?

Technikailag a fejléceket (az üres sor előtti összes kimenetet) kocsivisszaadásokkal és újsorokkal kell elválasztani. Sajnálatos módon DOS és Windows gépeken a Perl a \r-t egy másik újsornak fordítja, nem pedig kocsivisszaadásnak.

Bár a Perl \rs kivétele technikailag hibás, szinte minden protokollon működik, és egyformán hordozható minden platformon. Ezért ebben a könyvben az összes Perl-példában az újsorokat elválasztó fejléceket használom a kocsivisszaadások és az újsorok helyett.

A probléma megfelelő megoldását a 4. fejezet, Következtetések mutatják be.

Sem a webszervert, sem a böngészőt nem érdekli, hogy milyen nyelven írják a programot. Bár minden nyelvnek megvannak az előnyei és hátrányai, mint a CGI programozási nyelv, a legjobb, ha azt a nyelvet használja, amellyel a legkényelmesebb dolgozni. (A programozási nyelv kiválasztását részletesebben az 1. fejezet, „Közös átjárófelület (CGI)”) tárgyalja.

CGI renderelés

Most közelebbről megvizsgálhatja az információk webböngészőbe való küldésének kérdését. A „Helló, világ” példából láthatja, hogy a webböngészők két adatkészletet várnak el: egy fejlécet, amely olyan információkat tartalmaz, mint a megjelenítendő információ (pl. Content-Type: sor) és a tényleges információ (mi a webböngésző!) kijelzők). Ezt a két információt egy üres sor választja el.

A fejlécet HTTP-fejlécnek nevezik. Fontos információkat ad a böngésző által fogadni kívánt információkról. Több is van különféle típusok HTTP-fejlécek, és a leguniverzálisabb a korábban használt: Content-Type: fejléc. A HTTP-fejlécek különböző kombinációit használhatja, kocsivisszaadásokkal és újsorokkal (\r\n) elválasztva. A fejlécet az adatoktól elválasztó üres sor egy kocsivisszaadásból és egy újsorból is áll (miért van szükség mindkettőre, röviden az előző megjegyzésben tárgyaljuk, és a 4. fejezetben részletezzük). További HTTP-fejlécekről a 4. fejezetben olvashat; Jelenleg a Content-Type: fejléccel foglalkozik.

Tartalomtípus: A fejléc leírja a CGI által visszaadott adatok típusát. Ennek a fejlécnek a megfelelő formátuma:

Content-Type: altípus/típus

Ahol az altípus/típus a megfelelő Multipurpose Internet Mail Extensions (MIME) típus. A leggyakoribb MIME-típus a HTML-típus: text/html. A 2.1. táblázat felsorol néhány gyakoribb MIME-típust, amelyekről szó lesz; A MIME-típusok teljesebb listája és elemzése a 4. fejezetben található.

jegyzet

A MIME-t eredetileg az e-mail üzenetek tartalmának leírására találták ki. Meglehetősen elterjedt módja a tartalomtípusú információk megjelenítésének. A MIME-ről többet olvashat az RFC1521-ben. Az internetes RFC-k a Requests for Comments (Kérelmek megjegyzések) rövidítése, amelyek az interneten szabványokat felállítani próbáló csoportok által hozott döntések összefoglalásai. Az RFC1521 eredményeit a következő címen tekintheti meg: http://andrew2.andrew.cmu.edu/rfc/rfc1521.html

2.1. táblázat. Néhány gyakori MIME-típus. MIME Típus Leírás Szöveg/html Hiperszöveg jelölőnyelv (HTML) Szöveg/sima szöveges fájlok Kép/gif Grafikus fájlok GIF Kép/jpeg Tömörített grafikus fájlok JPEG Audio/alap audio fájlok Sun *.au Audio/x-wav Windows fájlok *

A fejléc és egy üres sor után egyszerűen kinyomtatja az adatokat a kívánt formában. Ha HTML-t küld, nyomtassa ki a HTML-címkéket és az adatokat az stdout-ba a fejléc után. Grafikát, hangot és egyéb bináris fájlokat is küldhet úgy, hogy egyszerűen kinyomtatja a fájl tartalmát az stdout-ba. A 4. fejezetben erre számos példa található.

CGI program telepítése és futtatása

Ez a rész némileg eltér a CGI programozástól, és a webszerver CGI használatára való konfigurálásáról, a programok telepítéséről és futtatásáról szól. Kisebb-nagyobb részletességgel ismerkedhet meg a különböző platformokhoz használható szerverekkel, de a legjobb megoldás megtalálásához mélyebbre kell ásnia a szerver dokumentációját.

Minden kiszolgálónak szüksége van hely a szerverfájlok és a HTML dokumentumok számára. Ebben a könyvben a kiszolgálóterület neve ServerRoot, a dokumentumterület pedig a DocumentRoot. UNIX gépeken a ServerRoot általában a /usr/local/etc/httpd/, a DocumentRoot pedig általában az /usr/local/etc/httpd/htdocs/ könyvtárban található. Ez azonban nem változtat a rendszeren, ezért cserélje ki az összes ServerRoot és DocumentRoot hivatkozást a saját ServerRoot és DocumentRoot hivatkozásra.

Amikor a webböngészővel ér el fájlokat, a fájlt a DocumentRoothoz kapcsolódó URL-ben adja meg. Például, ha a szerver címe mymachine.org, akkor ezt a fájlt a következő URL-címen érheti el: http://mymachine.org/index.html

A szerver beállítása CGI-hez

A legtöbb webszerver előre be van állítva, hogy lehetővé tegye a CGI programok használatát. Általában két paraméter jelzi a szervernek, hogy a fájl CGI-alkalmazás-e vagy sem:

  • Kijelölt könyvtár. Egyes szerverek lehetővé teszik annak meghatározását, hogy egy kijelölt könyvtárban (amelyet alapértelmezés szerint cgi-binnek hívnak) minden fájl CGI-s-e.
  • Fájlnév-kiterjesztések. Sok kiszolgáló rendelkezik ezzel az előzetes konfigurációval, amely lehetővé teszi, hogy minden .cgi-re végződő fájlt CGI-ként határozzon meg.

A kijelölt könyvtár módszer a múlt emléke (a legelső szerverek ezt használták egyedüli módszerként annak meghatározására, hogy mely fájlok CGI-programok), de számos előnye van.

  • Központosítva tartja a CGI programokat, megakadályozva, hogy más könyvtárak zsúfolttá váljanak.
  • Nem korlátozódik egyetlen fájlnévkiterjesztésre sem, így bármilyen nevet adhat a fájloknak. Egyes szerverek lehetővé teszik több különböző könyvtár kijelölését CGI-könyvtárakként.
  • Azt is jobban szabályozhatja, hogy ki rögzítheti a CGI-t. Például, ha van egy szervere, amely több felhasználós rendszert támogat, és nem szeretné, hogy saját CGI-szkriptjeiket használják anélkül, hogy biztonsági okokból először auditálnák a programot, akkor csak azokat a fájlokat jelölheti ki CGI-ként egy korlátozott, központi könyvtárban. . A felhasználóknak ezután CGI-programokat kell biztosítaniuk a telepítéshez, és először ellenőrizheti a kódot, hogy megbizonyosodjon arról, hogy a programnak nincsenek komoly biztonsági problémái.

A fájlnévkiterjesztésen keresztüli CGI-jelölés rugalmassága miatt hasznos lehet. Nem korlátozódhat egyetlen könyvtárra a CGI programok számára. A legtöbb szerver beállítható úgy, hogy felismerje a CGI-t a fájlnévkiterjesztésen keresztül, bár alapértelmezés szerint nem mindegyik van így beállítva.

Figyelem

Ne feledje a biztonsági kérdések fontosságát, amikor kiszolgálóját CGI-hez konfigurálja. Néhány tippet itt tárgyalunk, és a 9. fejezet, A CGI védelme részletesebben tárgyalja ezeket a szempontokat.

CGI telepítése UNIX szerverekre

Függetlenül attól, hogy a UNIX-kiszolgáló hogyan van konfigurálva, számos lépést meg kell tennie annak biztosítására, hogy a CGI-alkalmazások a várt módon fussanak. A webszerver általában nem létező felhasználóként fog futni (azaz a UNIX felhasználó senki - fiók, amely nem rendelkezik hozzáférési jogokkal a fájlhoz, és nem regisztrálható). A (Perlben, Bourne shellben vagy más szkriptnyelvben írt) CGI-szkripteknek futtathatónak és olvashatónak kell lenniük az egész világon.

Nyom

A fájlok világszerte olvashatóvá és végrehajthatóvá tételéhez használja a következő UNIX engedélyek parancsát: chmod 755 fájlnév.

Ha olyan szkriptnyelvet használ, mint a Perl vagy a Tcl, adja meg a tolmács teljes elérési útját a szkript első sorában. Például a /usr/local/bin könyvtárban lévő perl-t használó Perl-szkript a következő sorral kezdődik:

#!/usr/local/bin/perl

Figyelem

Soha ne helyezze az értelmezőt (perl vagy Tcl Wish bináris) a /cgi-bin könyvtárba. Ez biztonsági kockázatot jelent a rendszeren.

Néhány univerzális UNIX szerver

Az NCSA és az Apache szerverek hasonló konfigurációs fájlokkal rendelkeznek, mivel az Apache szerver eredetileg az NCSA kódon alapult. Alapértelmezés szerint úgy vannak beállítva, hogy a cgi-bin könyvtárban (alapértelmezés szerint a ServerRootban található) minden fájl CGI-program legyen. A cgi-bin könyvtár helyének megváltoztatásához szerkesztheti a conf/srm.conf konfigurációs fájlt. A könyvtár beállításának formátuma:

ScriptAlias hamiskönyvtárnév valóskönyvtárnév

ahol a fakedirectoryname az álkönyvtár neve (/cgi-bin), a realdirectoryname pedig a teljes elérési út, ahol a CGI-programok ténylegesen tárolódnak. Egynél több ScriptAlias-t is beállíthat több ScriptAlias-sor hozzáadásával.

Az alapértelmezett konfiguráció a legtöbb felhasználó igényeihez elegendő. Mindkét esetben szerkesztenie kell az srm.conf fájl sorát a helyes valós könyvtárnév meghatározásához. Ha például a CGI-programok a /usr/local/etc/httpd/cgi-bin könyvtárban találhatók, akkor az srm.conf fájl ScriptAlias-sorának valami ilyesminek kell lennie:

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

Az ebben a könyvtárban található CGI-programok eléréséhez vagy hivatkozásához használja a következő URL-t:

Http://hostname/cgi-bin/programnév

Ahol a gazdagépnév a webszerver gazdagépének neve, a programnév pedig a CGI neve.

Tegyük fel például, hogy bemásolja a hello.cgi programot a www.company.com nevű webszerver cgi-bin könyvtárába (pl. /usr/local/etc/httpd/cgi-bin). A CGI eléréséhez használja a következő URL-t: http://www.company.com/cgi-bin/hello.cgi

Ha be szeretné állítani az NCSA- vagy Apache-kiszolgálót, hogy minden .cgi kiterjesztésű fájlt CGI-ként ismerjen fel, két konfigurációs fájlt kell szerkesztenie. Először az srm.conf fájlban törölje a következő sor megjegyzését:

AddType application/x-httpd-cgi .cgi

Ez a MIME típusú CGI-t társítja a .cgi kiterjesztéssel. Most meg kell változtatnunk az access.conf fájlt, hogy a CGI-t bármelyik könyvtárban futtathassuk. Ehhez adja hozzá az ExecCGI opciót az Opciók sorhoz. Valahogy így fog kinézni a következő sor:

Beállítási indexek FollowSymLinks ExecCGI

Mostantól minden .cgi kiterjesztésű fájl CGI-nek számít; úgy érheti el, mint bármely fájlt a szerverén.

A CERN-kiszolgáló ugyanúgy van konfigurálva, mint az Apache és az NCSA-kiszolgálók. A ScriptAlias ​​helyett a CERN-kiszolgáló az Exec parancsot használja. Például a httpd.conf fájlban a következő sort fogja látni:

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

Más UNIX-kiszolgálók is konfigurálhatók ugyanígy; Ezt részletesebben a szerver dokumentációja ismerteti.

CGI telepítése Windows rendszeren

A Windows 3.1, Windows 95 és Windows NT rendszerekhez elérhető legtöbb kiszolgáló a „fájlnévkiterjesztés” módszerrel van konfigurálva a CGI felismeréshez. Általánosságban elmondható, hogy egy Windows-alapú kiszolgáló konfigurációjának megváltoztatásához egyszerűen futnia kell a kiszolgálókonfigurációs programnak, és végre kell hajtania a megfelelő módosításokat.

Néha nehéz lehet egy kiszolgáló konfigurálása egy szkript (például Perl) megfelelő futtatására. DOS vagy Windows esetén nem tudja megadni az értelmezőt a szkript első sorában, mint a UNIX esetében. Egyes szerverek előre meghatározott konfigurációval rendelkeznek, hogy bizonyos fájlnév-kiterjesztéseket társítsanak az értelmezőhöz. Például sok Windows webszerver feltételezi, hogy a .pl végződésű fájlok Perl-szkriptek.

Ha a kiszolgáló nem hajtja végre az ilyen típusú fájltársítást, definiálhat egy csomagoló kötegfájlt, amely meghívja az értelmezőt és a parancsfájlt is. A UNIX-kiszolgálóhoz hasonlóan ne telepítse az értelmezőt sem a cgi-bin, sem a Web Access könyvtárakba.

CGI telepítése Macintosh-ra

A Macintosh két legismertebb szerverlehetősége a WebStar StarNine és elődje, a MacHTTP. Mindkettő felismeri a CGI-t a fájlnévkiterjesztés alapján.

A MacHTTP két különböző kiterjesztést ismer: a .cgi-t és az .acgi-t, amely az aszinkron CGI-t jelenti. A Macintosh-ra telepített (.cgi kiterjesztésű) szokásos CGI-programok a webszervert elfoglalt állapotban tartják, amíg a CGI be nem fut, így a szerver felfüggeszti az összes többi kérést. Az aszinkron CGI viszont lehetővé teszi a szerver számára, hogy futás közben is fogadjon kéréseket.

Az ilyen webszervereket használó CGI Macintosh fejlesztőknek lehetőség szerint csak az .acgi kiterjesztést kell használniuk a .cgi kiterjesztés helyett. Működnie kell a legtöbb CGI programmal; ha nem működik, nevezze át a programot .cgi-re.

CGI végrehajtása

Miután telepítette a CGI-t, többféleképpen is végrehajthatja. Ha az Ön CGI-programja csak kimenetet biztosít, például a Hello,World!

A legtöbb program szerveralkalmazásként fut HTML űrlapon. Mielőtt megtanulná, hogyan kaphat információt ezekről az űrlapokról, először olvasson el egy rövid bevezetőt az ilyen űrlapok létrehozásáról.

Gyors bemutató a HTML-űrlapokról

A HTML űrlap két legfontosabb címkéje a

És . A legtöbb HTML-űrlap csak ezzel a két címkével hozható létre. Ebben a fejezetben ezeket a címkéket és a lehetséges típusok vagy attribútumok egy kis részhalmazát tekintheti meg. . Teljes útmutatóés a HTML-űrlapokra mutató hivatkozás a 3. HTML és űrlapok című fejezetben található.

Címke

Címke annak meghatározására szolgál, hogy a HTML-fájl melyik részét használja a felhasználó által megadott információkhoz. Ez arra utal, hogy a legtöbb HTML oldal hogyan hívja meg a CGI programot. A címkeattribútumok meghatározzák a program nevét és helyét – akár helyileg, akár teljes URL-ként, a használt kódolás típusát és a program által használt adatmozgatási módszert.

A következő sor a címke specifikációit mutatja :

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

Az ENCTYPE attribútum nem játszik különleges szerepet, és általában nem szerepel a címkében . részletes információk Az ENCTYPE címkével kapcsolatban a 3. fejezetben olvashat. Az ENCTYPE használatának egyik módja a 14. fejezet, "Márkakiterjesztések" című részben található.

Az ACTION attribútum a CGI program URL-jére utal. Miután a felhasználó kitölti az űrlapot és megadja az információkat, az összes információt kódolják és továbbítják a CGI programba. A CGI program maga oldja meg az információ dekódolásának és feldolgozásának problémáját; Ezt a szempontot e fejezet későbbi részében a „Bemenet elfogadása a böngészőből” című részben tárgyaljuk.

Végül a METHOD attribútum leírja, hogy a CGI program hogyan fogadja a bemenetet. A két módszer, a GET és a POST, abban különbözik, hogy hogyan továbbítják az információkat a CGI programnak. Mindkettőről a "Bevitel elfogadása a böngészőből" című részben található.

Ahhoz, hogy a böngésző engedélyezze a felhasználói bevitelt, minden űrlapcímkét és információt körül kell venni a címkével . Ne felejtsd el a zárócímkét

hogy jelezze az űrlap végét. Az űrlapon belül nem lehet űrlap, bár beállíthat olyan űrlapot, amely lehetővé teszi az információk különböző helyeken történő megjelenítését; ezt a szempontot a 3. fejezet részletesen tárgyalja.

Címke

Létrehozhat szövegbeviteli sávokat, rádiógombokat, jelölőnégyzeteket és egyéb módokat a bevitel elfogadására a címke használatával . Ez a rész csak a szövegbeviteli mezőket fedi le. A mező megvalósításához használja a címkét a következő attribútumokkal:

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

A NÉV annak a változónak a szimbolikus neve, amely a felhasználó által beírt értéket tartalmazza. Ha szöveget ad meg a VALUE attribútumban, akkor ez a szöveg alapértelmezettként kerül a szövegbeviteli mezőbe. A MÉRET attribútum segítségével megadhatja a beviteli mező vízszintes hosszát, ahogyan az a böngészőablakban megjelenik. Végül a MAXLENGTH határozza meg a maximális karakterszámot, amelyet a felhasználó beírhat a mezőbe. Kérjük, vegye figyelembe, hogy az ÉRTÉK, MÉRET, MAXLENGTH attribútumok nem kötelezőek.

Űrlap benyújtása

Ha egy űrlapon csak egy szövegmező van, a felhasználó egyszerűen beírhatja az adatokat a billentyűzeten, és megnyomja az Enter billentyűt. Ellenkező esetben más módot kell biztosítani a felhasználó számára az információ bemutatására. A felhasználó a következő címkével ellátott küldés gomb segítségével küldi el az információkat:

< Input type=submit >

Ez a címke egy Küldés gombot hoz létre az űrlapon belül. Amikor a felhasználó befejezte az űrlap kitöltését, a Küldés gombra kattintva elküldheti annak tartalmát az űrlap ACTION attribútuma által megadott URL-re.

Bemenet elfogadása a böngészőtől

A fentiekben példák voltak egy olyan CGI program rögzítésére, amely információkat küld a szerverről a böngészőnek. A valóságban egy olyan CGI programnak, amely csak adatokat ad ki, nincs sok alkalmazása (néhány példát a 4. fejezetben talál). A CGI fontosabb képessége, hogy információkat fogadjon a böngészőtől – ez a funkció adja a web interaktív jellegét.

A CGI program kétféle információt kap a böngészőtől.

  • Először is különféle információkat szerez be a böngészőről (a típusáról, mit láthat, a gazdagépről stb.), a szerverről (a neve és verziója, a végrehajtási portja stb.) és a CGI programról magát (a program neve és hol található). A szerver mindezt az információt környezeti változókon keresztül adja át a CGI programnak.
  • Másodszor, a CGI program képes fogadni a felhasználói bevitelt. Ezt az információt, miután a böngésző kódolta, vagy egy környezeti változón (GET metódus) vagy szabványos bemeneten (stdin - POST metódus) keresztül küldi el.

Környezeti változók

Hasznos tudni, hogy milyen környezeti változók állnak rendelkezésre egy CGI-program számára, mind a képzés során, mind a hibakereséshez. A 2.2. táblázat felsorol néhány elérhető CGI környezeti változót. Írhat olyan CGI programot is, amely a környezeti változókat és azok értékeit adja ki a webböngészőbe.

2.2. táblázat. Néhány fontos CGI környezeti változó Környezeti változó Cél REMOTE_ADDR Az ügyfélgép IP-címe. REMOTE_HOST Az ügyfélgép gazdagépe. HTTP _ACCEPT Felsorolja a böngésző által értelmezhető MIME-adattípusokat. HTTP _USER_AGENT A böngésző információi (böngésző típusa, verziószáma, operációs rendszer stb.). REQUEST_METHOD GET vagy POST. CONTENT_LENGTH A bemenet mérete, ha POST-on keresztül küldik. Ha nincs bemenet, vagy ha a GET metódust használjuk, akkor ez a paraméter nincs definiálva. QUERY_STRING A GET metódussal történő átadáskor a bemeneti információkat tartalmazza. PATH_INFO Lehetővé teszi a felhasználó számára, hogy megadja az elérési utat parancs sor CGI (például http://hostname/cgi-bin/programname/path). PATH_TRANSLATED A PATH_INFO relatív elérési útját a rendszer tényleges elérési útjára fordítja.

Környezeti változókat megjelenítő CGI-alkalmazás írásához két dolgot kell tudnia:

  • Határozza meg az összes környezeti változót és a hozzájuk tartozó értékeket.
  • Nyomtassa ki az eredményeket a böngészőbe.

Már tudja, hogyan kell végrehajtani az utolsó műveletet. A Perlben a környezeti változók a %ENV asszociatív tömbben tárolódnak, amelyet a környezeti változó neve vezet be. A 2.3-as lista tartalmazza az env.cgi-t, egy Perl programot, amely eléri célunkat.

Felsorolás 2.3. Egy Perl program, az env.cgi, amely kinyomtatja az összes CGI környezeti változót.

#!/usr/local/bin/perl print "Content-type: text/html\n\n"; nyomtatni" \n"; nyomtatás " CGI környezet\n"; nyomtatás "\n"; nyomtatás " \n"; nyomtatás "

CGI környezet

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

Hasonló program írható C-ben; a teljes kód a 2.4-es listában található.

Felsorolás 2.4. Env.cgi.c in C. /* env.cgi.c */ #include extern char **környezet; int main() ( char **p = környezet; printf("Tartalom típusa: text/html\r\n\r\n"); printf(" \n"); printf(" CGI környezet\n"); printf("\n"); printf(" \n"); printf("

CGI környezet

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

KÉPEZÉS vagy POSTÁZÁS?

Mi a különbség a GET és a POST metódusok között? A GET átadja a kódolt bemeneti karakterláncot a QUERY_STRING környezeti változón, míg a POST az stdin. Főleg a sok adatot tartalmazó űrlapoknál a POST az előnyben részesített módszer, mert nincs korlátozás az elküldött információ mennyiségére vonatkozóan, míg a GET módszernél a médiaterület mennyisége korlátozott. A GET azonban bizonyos hasznos ingatlan; ezt részletesen az 5. fejezet, Bemenet tartalmazza.

A használt módszer meghatározásához a CGI program ellenőrzi a REQUEST_METHOD környezeti változót, amely GET vagy POST értékre lesz beállítva. Ha POST-ra van állítva, akkor a kódolt információ hossza a CONTENT_LENGTH környezeti változóban kerül tárolásra.

Kódolt bemenet

Amikor a felhasználó elküld egy űrlapot, a böngésző először kódolja az információt, mielőtt elküldi azt a szervernek, majd a CGI-alkalmazásnak. Amikor használja a címkét , minden mező kap egy szimbolikus nevet. A felhasználó által megadott érték a változó értékeként jelenik meg.

Ennek meghatározására a böngésző egy URL-kódolási specifikációt használ, amely a következőképpen írható le:

  • A különböző mezőket és jellel (&) választja el.
  • A nevet és az értékeket egyenlőségjelekkel (=) választja el, a név a bal oldalon, az érték pedig a jobb oldalon.
  • A szóközöket pluszjelekkel (+) helyettesíti.
  • Az összes "rendellenes" karaktert százalékjelre (%) cseréli le, amelyet a karakter kétjegyű hexadecimális kódja követ.

A végső kódolt karakterlánc hasonló lesz a következőhöz:

Név1=érték1&név2=érték2&név3=érték3 ...

Megjegyzés: Az URL-kódolásra vonatkozó előírások az RFC1738-ban találhatók.

Tegyük fel például, hogy van egy űrlapja, amely nevet és életkort kért. Az űrlap megjelenítéséhez használt HTML-kód a 2.5-ös listában látható.

Felsorolás 2.5. HTML kód a név és az életkor űrlap megjelenítéséhez.

Név és életkor

Adja meg nevét:

Add meg az életkorod:

Tegyük fel, hogy a felhasználó beírja a Joe Schmoe nevet a név mezőbe, és a 20-at az életkor mezőbe. A bemenet a bemeneti karakterláncban lesz kódolva.

Név=Joe+Schmoe&age=20

Bemenet elemzése

Ahhoz, hogy ezek az információk hasznosak legyenek, fel kell használnia az információkat valamire, amit a CGI-programok használhatnak. A bemenet értelmezésének stratégiáit az 5. fejezet tárgyalja. A gyakorlatban soha nem kell azon gondolkodnia, hogyan értelmezze a bemenetet, mert számos szakértő írt már mindenki számára hozzáférhető könyvtárat, amely az elemzést végzi. Két ilyen könyvtárat mutatunk be ebben a fejezetben a következő szakaszokban: cgi -lib.pl Perlhez (írta Steve Brenner) és cgihtml C-hez (én írtam).

A legtöbb különböző nyelven írt könyvtár általános célja egy kódolt karakterlánc elemzése, valamint a név és érték párok adatszerkezetbe helyezése. Elérhető nyilvánvaló előnye olyan nyelv használatában, amely beépített adatstruktúrákkal rendelkezik, mint például a Perl; az alacsony szintű nyelvekhez, például a C-hez és a C++-hoz való legtöbb könyvtár azonban adatstruktúrát és szubrutin-végrehajtást tartalmaz.

Nem szükséges a könyvtárak teljes megértése; sokkal fontosabb, hogy megtanuljuk, hogyan kell őket eszközként használni, hogy megkönnyítsük a CGI programozó munkáját.

Cgi-lib.pl

A Cgi-lib.pl Perl asszociatív tömböket használ. A &ReadParse függvény elemzi a bemeneti karakterláncot, és név szerint beírja az egyes név/érték párokat. Például az imént bemutatott "név/kor" bemeneti karakterlánc dekódolásához szükséges megfelelő Perl karakterláncok

&ReadParse(*input);

Most, hogy megtekinthesse a "name" beírt értékét, elérheti a $input("name") asszociatív tömböt. Hasonlóképpen, az "age" érték eléréséhez meg kell nézni a $input ("age") változót.

Cgihtml

A C-nek nincs beépített adatstruktúrája, ezért a cgihtml saját hivatkozáslistát valósít meg a CGI elemzési rutinjaihoz. Ez a következőképpen határozza meg a bejegyzéstípus szerkezetét:

Typedef struct ( Char *név; Char *érték; ) Bejegyzéstípus;

A "név/kor" bemeneti karakterlánc C-ben a cgihtml használatával történő elemzéséhez a következőt kell használni:

/* deklarál egy csatolt listát input néven */ Llist input; /* elemzi a bemenetet és a helyet a linkelt listában */ read_cgi_input(&input);

Az életkorral kapcsolatos információk eléréséhez manuálisan elemezheti a listát, vagy használhatja a rendelkezésre álló cgi _val() függvényt.

#beleértve #beleértve Char *age = malloc(sizeof(char)*strlen(cgi_val(input, "age")) + 1); Strcpy(age, cgi_val(bemenet, "életkor"));

Az "age" érték most az életkor karakterláncban van eltárolva.

Megjegyzés: Ahelyett, hogy egyszerű tömböt használnék (mint például a char age ;)), dinamikusan lefoglalok memóriaterületet a karakterlánc korához. Bár ez megnehezíti a programozást, mégis fontos biztonsági szempontból. Erről részletesebben a 9. fejezetben lesz szó.

Egy egyszerű CGI program

Egy nameage.cgi nevű CGI programot fogsz írni, amely kezeli a név/kor űrlapot. Az adatfeldolgozás (amit általában "közötti dolgoknak" nevezek) minimális. A Nameage.cgi egyszerűen dekódolja a bemenetet, és megjeleníti a felhasználó nevét és életkorát. Bár nem sok haszna van egy ilyen eszköznek, mégis bemutatja a CGI programozás legkritikusabb aspektusát: a bemenetet és a kimenetet.

Ugyanazt az űrlapot használja, mint fent, a "név és életkor" mezők előhívásával. Még ne aggódjon a robusztusság és a hatékonyság miatt; a legegyszerűbb módon oldja meg a meglévő problémát. A Perl és C megoldásokat a 2.6 és 2.7 listák mutatják.

Felsorolás 2.6. Nameage.cgi a Perlben

#!/usr/local/bin/perl # nameage.cgi megköveteli "cgi-lib.pl" &ReadParse(*input); print "Content-Type: text/html\r\n\r\n"; nyomtatni" \n"; nyomtatás " Név és életkor\n"; nyomtatás "\n"; nyomtatás " \n"; print "Hello, " . $input("name") . ". Ön\n"; print $input("age") . " éves.

\n"; nyomtatás " \n";

Felsorolás 2.7. nameage.cgi C-ben

/* nameage.cgi.c */ #include #include "cgi-lib.h" int main() ( list input; read_cgi_input(&input); printf("Tartalom típusa: text/html\r\n\r\n"); printf(" \n"); printf(" Név és életkor\n"); printf("\n"); printf(" \n"); printf("Szia, %s. Ön\n",cgi_val(input,"name")); printf("%s éves.

\n",cgi_val(input,"age")); printf(" \n");)

Felhívjuk figyelmét, hogy ez a két program szinte egyenértékű. Mindkettő tartalmaz olyan elemzési rutinokat, amelyek csak egy sort foglalnak el, és a teljes bemenetet feldolgozzák (hála a megfelelő könyvtári rutinoknak). A kimenet lényegében a Hello, World! program módosított változata.

Próbálja meg futtatni a programot az űrlap kitöltésével és a Küldés gombra kattintva.

Általános programozási stratégia

Most már ismeri a CGI programozáshoz szükséges összes alapelvet. Miután megértette, hogy a CGI hogyan fogadja az információkat, és hogyan küldi vissza a böngészőnek, a végtermék tényleges minősége az általános programozási képességeitől függ. Nevezetesen, amikor CGI-t (vagy bármit, ami azt illeti) programoz, tartsa szem előtt a következő tulajdonságokat:

  • Egyszerűség
  • Hatékonyság
  • Sokoldalúság

Az első két tulajdonság meglehetősen gyakori: próbálja meg a kódot a lehető legolvashatóbbá és hatékonyabbá tenni. A sokoldalúság inkább a CGI programokra vonatkozik, mint más alkalmazásokra. Amikor elkezdi fejleszteni saját CGI programjait, megtudhatja, hogy számos alapvető alkalmazás létezik, amelyeket mindenki szeretne készíteni. Például a CGI-programok egyik leggyakoribb és legkézenfekvőbb feladata egy űrlap feldolgozása és az eredmények e-mailben történő elküldése egy adott címzettnek. Több különálló űrlapot is feldolgozhat, mindegyiknek más a címzettje. Ahelyett, hogy minden egyes űrlaphoz CGI-programot írna, időt takaríthat meg egy általánosabb, minden űrlapra érvényes CGI-program megírásával.

A CGI összes alapvető aspektusának lefedésével elegendő információt adtam a CGI programozás megkezdéséhez. Ahhoz azonban, hogy hatékony CGI-fejlesztő lehessen, alaposabban meg kell értenie, hogyan kommunikál a CGI a szerverrel és a böngészővel. A könyv további része részletesen tárgyalja az ebben a fejezetben röviden említett kérdéseket, valamint az alkalmazásfejlesztési stratégiát, valamint a protokoll előnyeit és korlátait.

Összegzés

Ez a fejezet röviden bemutatta a CGI programozás alapjait. A kimenetet az adatok helyes formázásával és stdout-ra történő nyomtatással hozhatja létre. A CGI bemenet fogadása egy kicsit bonyolultabb, mert használat előtt elemezni kell. Szerencsére már több könyvtár is létezik, amelyek elemzést végeznek.

Mostanra már elég jól ismeri a CGI-alkalmazások programozását. A könyv további része részletesebben foglalkozik a fejlettebb és összetettebb alkalmazások specifikációival, tippjeivel és programozási stratégiáival.