Neomejeno trgovanje cgi. E-trgovina - kaj je to? E-Commerce Partners Network je partnerski program največjih spletnih trgovin. Namestitev CGI na Macintosh

E-trgovina v jasni ruščini. Kako poteka spletno poslovanje?

V zadnjem času je vedno več projektov, povezanih s spletnim trgovanjem. Med preučevanjem tega področja nisem našel splošnega in razumljivega opisa procesa. Zato sem se odločil narediti nekaj takega kot goljufija, na katero se lahko vedno obrnete, da bi razumeli postopek na področju, kot je e-trgovina.

Takoj bom rekel, da sem se osredotočil na procese in kanale, ki pomagajo privabiti stranke.

E-trgovina: za kaj gre?

Definicije iz različnih virov povedo nekaj o prodaji blaga ali storitev prek interneta. Preprosto povedano, e-trgovina je vsaka spletna dejavnost, kjer se pojavi denar.

Nakupovanje, prodaja, zavarovanje, bančništvo, elektronski denar, vse je tukaj. Vzemi in podpiši.

Od cilja

Da bi razumeli težavo, predlagam, da začnete pot od samega konca. Kaj je cilj vsakega podjetja? Tako je, zasluži denar. Torej, predstavljajte si kateri koli izdelek, na primer silikonske nogavice. Zakaj ne!

Vzel sem prvo stvar, ki mi je padla na pamet, izkazalo se je, da je nekaj takega ...

Naša naloga je zaslužiti na teh nogavicah. Razmišljamo o internetu. Hmm...zakaj ne naredim spletne strani in tako bo šla prodaja, samo Maldivi mi ostanejo! A ni tako preprosto.

Zelo rad rišem. To pomaga razumeti različne procese. Gremo risati?!

Zaenkrat je naš model videti takole. Vzamemo nogavice, jih damo na internet in dobimo denar. To je preprosto super! Oči vas pečejo, dlani se vam potijo ​​in že se želite lotiti posla. Toda ali morate narediti spletno stran ali prodajno platformo?

Spletna stran ali platforma za prodajo

Obstajajo različne rešitve za umestitev vašega izdelka na svetovni splet. Ustvarite lahko lastno spletno mesto ali uporabite platforme tretjih oseb (skupine, strani na družbenih omrežjih, oglasne deske itd.). Ustavimo se pri mestu.

Ste naročili spletno stran, vzeli že pripravljeno predlogo ali jo ustvarili sami z graditeljem spletnih strani (lahko googlate CMS), ni pomembno. Nato so postavili kup različnih silikonskih nogavic in bili srečni.

Oprostite, ker motim branje. Pridružite se mojemu telegram kanalu. Sveže objave člankov, razvoj digitalnih produktov in vdor v rast, vse je tu. Čakam te! Nadaljujmo ...

Plačilni sistemi

Toda, da bi oseba kupila od vas tukaj in zdaj, bo treba prilagoditi plačilne sisteme. To je nekakšna storitev, ki omogoča nakupovanje preko spleta preko: bančnih kartic, internetnega denarja, mobilnih telefonov in še kup drugih stvari. Za to si boste morali deliti odstotek transakcij, vendar si boste na ta način precej olajšali življenje.

Izberite storitev, ki vam ustreza. Nekje bo odstotek večji, nekje pa bo naročnina ali kaj drugega. Samo malo raziščite. Vnesite zahtevano kodo na svojo spletno stran, povežite vse transakcije s svojim kartičnim računom in voila!

Zdelo se je, da je to vse. Obstaja spletna stran, kartice izdelkov tudi, tudi gumb »kupi« deluje, a nekaj manjka ... Pretoka kupcev, ki bi kupovali, ni.

Tokovi strank

Kje je: CAC = strošek pridobivanja nove stranke. MCC (stroški marketinške kampanje) = skupni strošek stroškov trženja, namenjenih privabljanju strank (vendar ne obdržanju). W (plače) = plača za tržnike in vodje prodaje. S (programska oprema) = Stroški programske opreme, uporabljene pri oglaševanju in prodaji (na primer uporabljena prodajna platforma, avtomatizacija trženja, A/B testiranje, analitične storitve itd.). PS (strokovne storitve) = Stroški strokovnih storitev za tržne in prodajne oddelke (oblikovanje, svetovanje itd.). O (other) = Drugi režijski stroški, povezani z oddelkom trženja in prodaje. CA (customersacquired) = skupno število privabljenih strank.

Ne smemo pa pozabiti na kakovost stranke, LTV bo tu pomagal.

Pomembna metrika: LTV

Live Time Value, življenjski cikel stranke, je še en kazalnik v e-trgovini, ki ga je treba upoštevati. Prikazuje, koliko dohodka v povprečju prinese ena stranka. Obstajajo različni pristopi k izračunu, sam sem izbral dejanskega glede na dobiček, kot enega najbolj natančnih.

To je preprosto vsota celotnega prihodka v celotni zgodovini nakupov za vsako posamezno stranko. Vsoto vseh nakupov (transakcij) strank dodajte transakciji N, pri čemer je transakcija N zadnji nakup, ki ga je stranka opravila pri vašem podjetju. Če imate dostop do vseh podatkov o transakcijah strank, lahko to preprosto izračunate z uporabo Excela.

LTV = (transakcija 1 + transakcija 2 + transakcija 3 ... + transakcija N) x delež dobička v prihodku.

Izračun LTV na podlagi čistega dobička na koncu pokaže dejanski dobiček, ki ga stranka prinese vašemu podjetju. To upošteva stroške storitev za stranke, stroške zadrževanja, stroške privabljanja itd. Rezultat je cel kompleks izračunov na podlagi posameznih podatkov. Skupni dobiček, ustvarjen na stranko skozi čas, vam bo dal natančno razumevanje dobičkonosnosti vaših strank do danes.

Druge pristope lahko najdete na.

Pomembni indikatorji: razmerje CAC in LTV

Za razumevanje sposobnosti preživetja podjetja je zelo pomembno pogledati razmerje obeh omenjenih razmerij CAC:LTV.

  • Manj kot 1:1 - Z vso hitrostjo drvite proti bankrotu.
  • 1:1 – Izgubite denar za vsako privabljeno stranko.
  • 1:2 – Zdi se dobro, a zdi se, da ne vlagate dovolj denarja in bi se lahko hitreje razvijali. Zaženite bolj agresivne kampanje za pridobivanje strank in dosegajte stopnje blizu 1:3.
  • 1:3 – idealno razmerje. Imate uspešno podjetje in močan poslovni model.

Pomembni kazalniki: ne pozabite na donosnost naložbe

Kot smo razpravljali zgoraj, morate pri e-trgovini jasno razumeti, ali je donosna uporaba kanala za pridobivanje ali ne. Poleg LTV in CAC obstaja še en pomemben kazalnik: ROI. Pokaže, ali se je vaša naložba, v našem primeru v oglaševanje, izplačala. To je. koliko nam je na koncu prinesel 1 vloženi rubelj.

Za izračun se uporablja zelo preprosta formula:

Pri čemer je »prihodek oglaševalske akcije« razlika med prihodkom od kanala in stroški vašega izdelka. In za izračun dobička odštejte stroške oglaševanja.

Tako bi bila podrobnejša formula videti takole:

ROI = (prihodek kanala – stroški) – stroški oglaševanja / stroški oglaševanja x 100 %

Preberite podrobnejši primer z izračunom. Pravzaprav je ta preprosta formula postavljena v isto Excelovo tabelo, kjer se vse samodejno izračuna.

Vsi trije kazalniki, o katerih smo razpravljali, so pomembni v e-trgovini. Vsak od njih vam omogoča iskanje ozkih grl v vaših tokovih in delo z njimi. Tu se skriva potencial za rast podjetja. Naš model z nogavicami sem še malo dodala.

Nemogoče je vse strniti v en material in kdo ga bo bral tako dolgo? Kasneje bom naredil ločen vodnik o odtenkih e-trgovine, ki lahko motijo ​​​​prodajo.

Skupaj

Na splošno zdaj na splošno razumete spletno trgovanje ali e-trgovino. Nadalje, kot pravijo: "Hudič je v podrobnostih." Preučite vsak kanal posebej, izračunajte kazalnike uspešnosti in iščite nova spoznanja v malenkostih. Internetna prodaja za vas in še več! In še en material imam.

Da, skoraj sem pozabil, srečno novo leto, dragi bralci! Želim vam veliko zmag in dosežkov naslednje leto!

Andover, Massachusetts, 19. november 2003

The Commerce Group, Inc. (NYSE: CGI), največji pisec zavarovanj zasebnih potniških avtomobilov v Massachusettsu in CGI Group Inc. (CGI) (TSX: GIB.A; NYSE: GIB;), vodilni ponudnik storitev informacijske tehnologije in poslovne obdelave, je danes objavil podpis šestletne obnovitve pogodbe o zunanjem izvajanju poslovnih procesov (BPO) v vrednosti 35 milijonov USD. CGI bo zagotavljal celovite storitve obdelave politik za zasebne potniške in komercialne avtomobilske linije v Massachusettsu ter zagotavljal agencijsko vmesniško orodje CollaborativeEdge CGI, podporo in vzdrževanje aplikacij, regulativno podporo, sistemsko svetovanje in storitve upravljanja dokumentov.

Gerald Fels, izvršni podpredsednik in finančni direktor Commerce Group, je izjavil: "Kot vodilni ponudnik zasebnih osebnih avtomobilov v Massachusettsu je naš cilj zagotoviti našim agentom in zaposlenim storitve, ki jim pomagajo delovati na najvišji ravni. V preteklih letih smo gojili močan odnos s CGI. Njihov sistem je robusten in natančen, njihova ekipa pa dobro pozna naše notranje procesne sisteme. To je za nas pomembno."

Serge LaPalme, predsednik zavarovalniških storitev za CGI, je dodal: "Zelo smo veseli, da nadaljujemo naš odnos s skupino Commerce, ki traja že več kot 30 let. Skupina Commerce ostaja eden naših cenjenih poslovnih partnerjev in je strateška za naš uspeh. Pri pomoči našim strankam, da se še bolj osredotočijo na njihovo osnovno dejavnost, izkoriščamo nove tehnologije, kadar in kjer je to smiselno. Naša ekipa natančno pozna zavarovalniško industrijo in zelo edinstveno zakonodajno okolje države, zato so hitri prilagoditi obstoječe rešitve temu nenehno razvijajočemu se sektorju."

O The Commerce Group, Inc.

Commerce Group, Inc., zavarovalniški holding, ima sedež v Websterju v Massachusettsu. Podružnice premoženjskega in nezgodnega zavarovanja skupine Commerce Group vključujejo The Commerce Insurance Company in Citation Insurance Company v Massachusettsu, Commerce West Insurance Company v Kaliforniji in American Commerce Insurance Company v Ohiu. Prek svojih podružnic v združenih zavarovalniških dejavnostih je Commerce Group uvrščena na 22. največja skupina za osebno avtomobilsko zavarovanje v državi avtorja A.M. Najboljše, na podlagi neposrednih pisnih premijskih informacij iz leta 2002.

O CGI
Podjetje CGI, ustanovljeno leta 1976, je glede na število zaposlenih peto največje neodvisno podjetje za storitve informacijske tehnologije v Severni Ameriki. CGI in njegova povezana podjetja zaposlujejo 20.000 strokovnjakov. Letna tekoča stopnja prihodkov CGI trenutno znaša 2,8 milijarde CDN$ (1,9 milijarde USD) in 30. septembra 2003 je zaostala naročila CGI znašala 12,3 milijarde CDN$ (9,1 milijarde USD). CGI strankam po vsem svetu zagotavlja celovite storitve IT in poslovnih procesov iz pisarn v Kanadi, Združenih državah in Evropi. Delnice CGI kotirajo na borzah TSX (GIB.A) in NYSE (GIB) ter so vključene v kompozitni indeks TSX 100 ter v kanadski indeks informacijske tehnologije S&P/TSX in kanadski indeks MidCap. Spletna stran: .

2012: Nakup British Logica

Skupina CGI je junija 2012 objavila, da je podpisala pogodbo o nakupu največjega evropskega sistemskega integratorja Logica. Znesek transakcije je 2,8 milijarde kanadskih dolarjev (2,7 milijarde dolarjev). V okviru doseženih dogovorov je CGI pristal tudi na prevzem obveznosti za poplačilo dolga Logice v višini 515 milijonov kanadskih dolarjev.

Za financiranje transakcije namerava CGI zbrati 1 milijardo kanadskih dolarjev z izdajo dodatnih 46,7 milijona delnic, izposoditi 2 milijardi kanadskih dolarjev pri Canadian Imperial Bank of Commerce, National Bank of Canada in The Toronto-Dominion Bank ter približno 650 milijonov kanadskih dolarjev več dolarjev - znotraj trenutne kreditne linije.

Predlagana cena na delnico je bila 59,8 % višja od končne cene Logice 30. maja 2012. Posel predstavlja približno 6,6-kratnik dobička Logice pred obrestmi, davki, depreciacijo in amortizacijo (EBITDA) za to leto. 12-mesečno obdobje, ki se je končalo 31. decembra 2011

Pričakuje se, da bo nakup družbe Logica povečal dobiček družbe CGI na delnico za 25 % do 30 %, brez stroškov prevzema in integracije. Zaradi združitve bodo delovna sila in letni prihodki nastalega podjetja več kot dvakrat višji od CGI. Velikost osebja združenega podjetja bo približno 72 tisoč zaposlenih v pisarnah v 43 državah, letni prihodek pa bo približno 10,4 milijarde kanadskih dolarjev (9,6 milijarde dolarjev).

Novo podjetje bo šesto največje med svetovnimi IT svetovalci. Največji med njimi so IBM, Accenture, Cap Gemini, Tata Consultancy in Infosys, ocenjuje Reuters.

"Logica je vodilno podjetje za poslovne in tehnološke storitve s predanimi strokovnjaki in zaupanja vrednimi, dolgoročnimi strankami," je dejal predsednik in izvršni direktor CGI Michael Roach. "Prepričani smo, da delamo pravo stvar." S prevzemom Logice jo prevzemamo po pravi ceni in ob pravem času, da ustvarimo enega redkih največjih neodvisnih ponudnikov celovitih tehnoloških storitev."

Upravni odbor CGI je transakcijo soglasno odobril. Načrtuje se, da bo končan do septembra 2012, po prejemu soglasja delničarjev in po standardnih postopkih. Proces integracije podjetja bo predvidoma zaključen v 3 letih

Zahvaljujoč svetovnemu spletu lahko skoraj vsak posreduje informacije na spletu v obliki, ki je prijetna za oči in se lahko široko razširja. Brez dvoma ste že brskali po internetu in si ogledali druga spletna mesta, zdaj pa verjetno veste, da so grozljivi akronimi, kot sta »HTTP« in »HTML«, preprosto okrajšava za »splet« in »način, kako so informacije izražene na internetu«. Morda že imate nekaj izkušenj s predstavljanjem informacij na internetu.

Internet se je izkazal kot idealen medij za distribucijo informacij, kar je razvidno iz njegove izjemne priljubljenosti in širokega razvoja. Čeprav nekateri dvomijo o uporabnosti interneta in njegov širok razvoj in priljubljenost pripisujejo predvsem vsiljivemu oglaševanju, je internet nedvomno pomemben medij za podajanje najrazličnejših informacij. Ne le, da so na voljo številne storitve za zagotavljanje najnovejših informacij (novice, vreme, športni dogodki v živo) in referenčnega gradiva v elektronski obliki, na voljo so tudi znatne količine drugih vrst podatkov. Davčna uprava, ki je vse svoje obrazce za davčne napovedi za leto 1995 in druge informacije razposlala prek svetovnega spleta, je nedavno priznala, da je prejemala pošto oboževalcev za svojo spletno stran. Kdo bi si mislil, da bo davčna uprava kdaj prejela pošto oboževalcev? To ni bilo zato, ker je bilo njegovo spletno mesto dobro zasnovano, temveč zato, ker se je izkazalo za resnično uporabno orodje za tisoče, morda milijone ljudi.

Zakaj je splet edinstven in tako privlačen informacijski servis? Prvič, zagotavlja hipermedijski vmesnik za podatke. Pomislite na trdi disk vašega računalnika. Običajno so podatki izraženi linearno, podobno kot datotečni sistem. Na primer, imate več map in v vsaki mapi so dokumenti ali druge mape. Splet uporablja drugačno paradigmo za izražanje informacij, imenovano hipermedija. Hiperbesedilni vmesnik je sestavljen iz dokumenta in povezav. Povezave so besede, na katere se klikne, da se prikažejo drugi dokumenti ali poiščejo druge vrste informacij. Splet razširi koncept hiperteksta na druge vrste medijev, kot so grafika, zvoki, video (od tod tudi ime "hipermedij"). Izbiranje besedila ali grafike v dokumentu vam omogoča ogled povezanih informacij o izbrani postavki v poljubnem številu oblik.

Ta preprost in edinstven način predstavitve in distribucije informacij lahko koristi skoraj vsem, od akademikov, ki želijo takoj uporabiti podatke s svojimi sodelavci, do poslovnežev, ki informacije o svojem podjetju delijo z vsemi. Čeprav je dajanje informacij izjemno pomembno, pa so v zadnjih nekaj letih številni menili, da je prav tako pomemben proces tudi prejemanje informacij.

Čeprav splet ponuja edinstven hipermedijski vmesnik za informacije, obstaja veliko drugih učinkovitih načinov za distribucijo podatkov. Na primer, omrežne storitve, kot sta File Transfer Protocol (FTP) in novičarska skupina Gopher, so obstajale že dolgo pred svetovnim spletom. Elektronska pošta je primarni medij za komunikacijo in izmenjavo informacij na internetu in večini drugih omrežij skoraj od samega začetka teh omrežij. Zakaj je internet postal tako priljubljen način distribucije informacij? Večpredstavnostni vidik interneta je znatno prispeval k njegovemu uspehu brez primere, a da bi bil internet najbolj učinkovit, mora biti interaktiven.

Brez zmožnosti sprejemanja uporabniških vnosov in zagotavljanja informacij bi bil splet popolnoma statično okolje. Informacije bi bile na voljo samo v obliki, ki jo določi avtor. To bi spodkopalo eno od zmožnosti računalništva na splošno: interaktivne informacije. Na primer, namesto da sili uporabnika, da si ogleda več dokumentov, kot če bi brskal po knjigi ali slovarju, bi bilo bolje, da bi uporabniku omogočili, da identificira ključne besede o temi, ki ga zanima. Uporabniki lahko prilagodijo predstavitev podatkov, namesto da se zanašajo na togo strukturo, ki jo določi ponudnik vsebine.

Izraz "spletni strežnik" je lahko zavajajoč, saj se lahko nanaša tako na fizični stroj kot na programsko opremo, ki jo uporablja za komunikacijo z internetnimi brskalniki. Ko brskalnik zahteva dani spletni naslov, se najprej poveže z napravo prek interneta in pošlje programski opremi spletnega strežnika zahtevo za dokument. Ta programska oprema deluje neprekinjeno, čaka, da takšne zahteve prispejo, in se ustrezno odzove.

Čeprav lahko strežniki pošiljajo in prejemajo podatke, ima sam strežnik omejeno funkcionalnost. Na primer, najbolj primitiven strežnik lahko brskalniku pošlje samo zahtevano datoteko. Strežnik običajno ne ve, kaj naj naredi s tem ali onim dodatnim vnosom. Če ponudnik internetnih storitev strežniku ne pove, kako naj ravna s temi dodatnimi informacijami, bo strežnik najverjetneje prezrl vnos.

Da bi lahko strežnik poleg iskanja in pošiljanja datotek v spletni brskalnik izvajal še druge operacije, morate znati razširiti funkcionalnost strežnika. Na primer, spletni strežnik ne more iskati po bazi podatkov na podlagi ključne besede, ki jo je vnesel uporabnik, in vrniti več ujemajočih se dokumentov, razen če je bila taka zmožnost na nek način programirana v strežniku.

Kaj je CGI?

Common Gateway Interface (CGI) je vmesnik do strežnika, ki omogoča razširitev funkcionalnosti strežnika. Z uporabo CGI lahko interaktivno komunicirate z uporabniki, ki dostopajo do vašega spletnega mesta. Na teoretični ravni CGI omogoča strežniku, da lahko razčleni (interpretira) vnos iz brskalnika in vrne informacije na podlagi uporabnikovega vnosa. Na praktični ravni je CGI vmesnik, ki programerju omogoča pisanje programov, ki zlahka komunicirajo s strežnikom.

Običajno bi morali za razširitev zmogljivosti strežnika sami spremeniti strežnik. Ta rešitev je nezaželena, ker zahteva razumevanje nižje ravni omrežnega programiranja internetnega protokola. To bi zahtevalo tudi urejanje in ponovno prevajanje izvorne kode strežnika ali pisanje strežnika po meri za vsako nalogo. Recimo, da želite razširiti zmožnosti strežnika, tako da deluje kot prehod med spletom in e-pošto, pri čemer podatke, ki jih vnese uporabnik, prevzame iz brskalnika in jih po e-pošti pošlje drugemu uporabniku. Strežnik bi moral vstaviti kodo za razčlenitev vnosa iz brskalnika, ga posredovati po e-pošti drugemu uporabniku in posredovati odgovor nazaj v brskalnik prek omrežne povezave.

Prvič, taka naloga zahteva dostop do kode strežnika, kar ni vedno mogoče.

Drugič, težko je in zahteva obsežno tehnično znanje.

Tretjič, to velja samo za določen strežnik. Če morate strežnik premakniti na drugo platformo, boste morali zagnati ali vsaj porabiti veliko časa za prenos kode na to platformo.

Zakaj CGI?

CGI ponuja prenosljivo in preprosto rešitev za te težave. Protokol CGI definira standardni način za komunikacijo programov s spletnim strežnikom. Brez posebnega znanja lahko napišete program v katerem koli strojnem jeziku, ki je vmesnik in komunikacija s spletnim strežnikom. Ta program bo deloval z vsemi spletnimi strežniki, ki razumejo protokol CGI.

Komunikacija CGI poteka s standardnim vhodom in izhodom, kar pomeni, da če znate tiskati in brati podatke z uporabo svojega programskega jezika, lahko napišete aplikacijo spletnega strežnika. Razen razčlenjevanja vnosa in izhoda je programiranje aplikacij CGI skoraj enakovredno programiranju katere koli druge aplikacije. Na primer, če želite programirati program "Hello, World!", uporabite funkcije tiskanja vašega jezika in format, določen za programe CGI, da natisnete ustrezno sporočilo.

Izbira programskega jezika

Ker je CGI univerzalni vmesnik, niste omejeni na noben določen strojni jezik. Pomembno vprašanje, ki se pogosto postavlja, je: kateri programski jeziki se lahko uporabljajo za programiranje CGI? Uporabite lahko kateri koli jezik, ki vam omogoča naslednje:

  • Tiskanje na standardni izpis
  • Branje iz standardnega vnosa
  • Branje iz spremenljivih načinov

Skoraj vsi programski jeziki in številni skriptni jeziki izvajajo te tri stvari in lahko uporabite katero koli od njih.

Jeziki spadajo v enega od naslednjih dveh razredov: prevedeni in tolmačeni. Preveden jezik, kot sta C ali C++, je običajno manjši in hitrejši, medtem ko prevedeni jeziki, kot sta Perl ali Rexx, včasih zahtevajo nalaganje velikega tolmača ob zagonu. Poleg tega lahko distribuirate binarne kode (kodo, ki se prevede v strojni jezik) brez izvorne kode, če je vaš jezik prevedljiv. Distribucija interpretabilnih skriptov običajno pomeni distribucijo izvorne kode.

Preden izberete jezik, morate najprej razmisliti o svojih prioritetah. Pretehtati morate prednosti hitrosti in učinkovitosti enega programskega jezika ter enostavnost programiranja drugega. Če imate željo po učenju drugega jezika, namesto tistega, ki ga že poznate, dobro pretehtajte prednosti in slabosti obeh jezikov.

Dva najpogosteje uporabljena jezika za programiranje CGI sta C in Perl (oba sta obravnavana v tej knjigi). Oba imata jasne prednosti in slabosti. Perl je jezik na zelo visoki ravni, hkrati pa zmogljiv jezik, še posebej primeren za razčlenjevanje besedila. Čeprav je zaradi enostavne uporabe, prilagodljivosti in moči privlačen jezik za programiranje CGI, je zaradi njegove razmeroma velike velikosti in počasnejšega delovanja včasih neprimeren za nekatere aplikacije. Programi C so manjši, učinkovitejši in zagotavljajo nadzor sistema na nižji ravni, vendar so bolj zapleteni za programiranje, nimajo lahkih vgrajenih rutin za obdelavo besedila in jih je težje odpraviti.

Kateri jezik je najbolj primeren za programiranje CGI? Tisti, ki se vam zdi bolj priročen s programskega vidika. Oba sta enako učinkovita za programiranje aplikacij CGI in imata z ustreznimi knjižnicami oba podobne zmogljivosti. Če pa imate težko dostopen strežnik, lahko uporabite manjše, prevedene programe C. Če morate hitro napisati aplikacijo, ki zahteva veliko obdelave besedila, lahko namesto tega uporabite Perl.

Opozorila

Obstaja nekaj pomembnih alternativ za aplikacije CGI. Številni strežniki zdaj vključujejo programiranje API, kar olajša programiranje neposrednih strežniških razširitev v nasprotju s samostojnimi aplikacijami CGI. Strežniki API so na splošno učinkovitejši od programov CGI. Drugi strežniki vključujejo vgrajeno funkcionalnost, ki lahko obravnava posebne elemente, ki niso CGI, kot je povezovanje baze podatkov. Nazadnje, nekatere aplikacije lahko obravnavajo nekatere nove tehnologije na strani odjemalca (namesto na strani strežnika), kot je Java. Bo ob tako hitrih spremembah tehnologije CGI hitro zastarel?

Komaj. CGI ima več prednosti pred novejšimi tehnologijami.

  • Je vsestranski in prenosljiv. Aplikacijo CGI lahko napišete s skoraj katerim koli programskim jezikom na kateri koli platformi. Nekatere alternative, kot je strežniški API, vas omejujejo na določene jezike in se jih je veliko težje naučiti.
  • Malo verjetno je, da bodo tehnologije na strani odjemalca, kot je Java, nadomestile CGI, ker obstajajo nekatere aplikacije, za katere so aplikacije na strani strežnika veliko bolj primerne za izvajanje.
  • Številne omejitve CGI so omejitve HTML ali HTTP. Z razvojem internetnih standardov kot celote se razvijajo tudi zmogljivosti CGI.

Povzetek

Common Gateway Interface je protokol, po katerem programi komunicirajo s spletnimi strežniki. Vsestranskost CGI omogoča programerjem, da pišejo prehodne programe v skoraj vseh jezikih, čeprav je z različnimi jeziki povezanih veliko kompromisov. Brez te zmožnosti bi bilo ustvarjanje interaktivnih spletnih strani težko, v najboljšem primeru bi zahtevalo spremembe strežnika, interaktivnost pa ne bi bila na voljo večini uporabnikov, ki niso skrbniki spletnega mesta.

2. poglavje: Osnove

Pred nekaj leti sem ustvaril stran za fakulteto na Harvardu, kjer so lahko ljudje oddali komentarje o njih. Takrat je bil internet mlad in dokumentacije je bilo malo. Tako kot mnogi drugi sem se zanašal na kratko dokumentacijo in programske sisteme, ki so jih ustvarili drugi, da sem se naučil programiranja CGI. Čeprav je ta metoda študija zahtevala nekaj iskanja, veliko poskusov in je ustvarila številna vprašanja, je bila zelo učinkovita. To poglavje je rezultat mojega zgodnjega dela s CGI (seveda z nekaj popravki).

Čeprav traja nekaj časa, da popolnoma razumemo in obvladamo skupni vmesnik prehoda, je sam protokol precej preprost. Vsakdo, ki ima nekaj osnovnih veščin programiranja in je seznanjen s spletom, se lahko hitro nauči programirati precej zapletene aplikacije CGI, tako kot sem se jaz in drugi naučil početi pred nekaj leti.

Namen tega poglavja je predstaviti osnove CGI na celovit, čeprav zgoščen način. Vsak koncept, obravnavan tukaj, je podrobno predstavljen v naslednjih poglavjih. Vendar pa lahko po zaključku tega poglavja takoj začnete programirati aplikacije CGI. Ko dosežete to raven, se lahko naučite zapletenosti CGI, bodisi tako, da preberete preostanek te knjige ali preprosto eksperimentirate sami.

Programiranje CGI lahko strnete na dve nalogi: prejemanje informacij iz spletnega brskalnika in pošiljanje informacij nazaj v brskalnik. To naredite povsem intuitivno, ko se seznanite z običajno uporabo aplikacij CGI. Pogosto se od uporabnika zahteva, da izpolni nek obrazec, na primer vstavi svoje ime. Ko uporabnik izpolni obrazec in pritisne Enter, se te informacije pošljejo programu CGI. Program CGI mora te informacije nato pretvoriti v nekaj, kar razume, jih ustrezno obdelati in nato poslati nazaj v brskalnik, pa naj bo to preprosta potrditev ali rezultat iskanja v večnamenski bazi podatkov.

Z drugimi besedami, programiranje CGI zahteva razumevanje, kako prejeti vhod iz internetnega brskalnika in kako poslati izhod nazaj. Kaj se zgodi med vhodno in izhodno stopnjo programa CGI je odvisno od razvijalčevega cilja. Ugotovili boste, da je glavna težava pri programiranju CGI v tej vmesni stopnji; Ko se enkrat naučite delati z vhodnimi in izhodnimi podatki, je to v bistvu dovolj, da postanete razvijalec CGI.

V tem poglavju se boste naučili načel v ozadju vnosa in izhoda CGI ter drugih osnovnih veščin, ki jih boste potrebovali za pisanje in uporabo CGI, vključno s stvarmi, kot je ustvarjanje obrazcev HTML in poimenovanje vaših programov CGI. To poglavje zajema naslednje teme:

  • Tradicionalni program "Zdravo, svet!";
  • Izhod CGI: pošiljanje informacij nazaj za prikaz v internetnem brskalniku;
  • Konfiguriranje, namestitev in zagon aplikacije. Spoznali boste različne spletne platforme in strežnike;
  • Vnos CGI: Interpretacija informacij, ki jih pošlje spletni brskalnik. Uvod v nekaj uporabnih programskih knjižnic za razčlenjevanje takega vnosa;
  • Preprost primer: zajema vse lekcije v danem poglavju;
  • Strategija programiranja.

Zaradi narave tega poglavja se nekaterih tem le rahlo dotaknem. Ne skrbite; Vse te teme so veliko bolj poglobljeno obravnavane v drugih poglavjih.

Pozdravljen, svet!

Začnete s tradicionalnim uvodnim problemom programiranja. Napisali boste program, ki prikaže "Hello, World!" v vašem spletnem brskalniku. Preden napišete ta program, morate razumeti, katere informacije spletni brskalnik pričakuje od programov CGI. Prav tako morate vedeti, kako zagnati ta program, da ga boste lahko videli v akciji.

CGI je jezikovno neodvisen, zato lahko ta program implementirate v katerem koli jeziku. Tu se uporablja več različnih jezikov, da se pokaže neodvisnost vsakega jezika. V Perlu je program "Hello, World!" prikazano v seznamu 2.1.

Seznam 2.1. Pozdravljen, svet! v Perlu. #!/usr/local/bin/perl # Hello.cgi - Moj prvi program CGI print "Content-Type: text/html\n\n"; natisni" \n"; natisni " Pozdravljen, svet!"; natisni "\n"; natisni " \n"; natisni "

Pozdravljen, svet!

\n"; natisni "

\n";

Shranite ta program kot hello.cgi in ga namestite na ustrezno mesto. (Če niste prepričani, kje je, ne skrbite; to boste izvedeli v razdelku »Namestitev in izvajanje programa CGI« kasneje v tem poglavju.) Za večino strežnikov je imenik, ki ga potrebujete, cgi-bin . Zdaj pokličite program iz spletnega brskalnika. Za večino to pomeni odpiranje naslednjega enotnega lokatorja virov (URL):

http://imegostitelja/imeimenika/hello.cgi

Ime gostitelja je ime vašega spletnega strežnika, ime imenika pa je imenik, kamor vnesete hello.cgi (verjetno cgi-bin).

Razdelitev hello.cgi

Pri hello.cgi je treba upoštevati nekaj stvari.

Najprej uporabite preproste ukaze za tiskanje. Programi CGI ne zahtevajo posebnih deskriptorjev datotek ali izhodnih deskriptorjev. Če želite poslati izhod v brskalnik, preprosto natisnite v stdout.

Drugič, upoštevajte, da se vsebina prvega stavka za tiskanje (Content-Type: text/html) ne prikaže v vašem spletnem brskalniku. Brskalniku lahko pošljete poljubne informacije (stran HTML, grafiko ali zvok), vendar morate brskalniku najprej povedati, kakšne podatke pošiljate. Ta vrstica pove brskalniku, kakšne informacije lahko pričakuje - v tem primeru stran HTML.

Tretjič, program se imenuje hello.cgi. Ni vam treba vedno uporabljati pripone .cgi z imenom vašega programa CGI. Čeprav izvorna koda za številne jezike uporablja tudi pripono .cgi, se ne uporablja za označevanje vrste jezika, ampak je način, da strežnik identificira datoteko kot izvršljivo datoteko in ne kot grafično datoteko, datoteko HTML ali besedilna datoteka. Strežniki so pogosto konfigurirani tako, da poskušajo izvesti samo tiste datoteke, ki imajo to končnico, in prikažejo vsebino vseh drugih. Čeprav uporaba končnice .cgi ni obvezna, še vedno velja za dobro prakso.

Na splošno je hello.cgi sestavljen iz dveh glavnih delov:

  • pove brskalniku, katere informacije naj pričakuje (Content-Type: text/html)
  • pove brskalniku, kaj naj prikaže (Hello, World!)

Pozdravljen, svet! v C

Za prikaz jezikovne neodvisnosti programov CGI je v seznamu 2.2 prikazan ekvivalent programa hello.cgi, napisanega v C.

Seznam 2.2. Pozdravljen, svet! v C. /* hello.cgi.c - Pozdravljen, svet CGI */ #include int main() ( printf("Vrsta vsebine: besedilo/html\r\n\r\n"); printf(" \n"); printf(" Pozdravljen, svet!\n"); printf("\n"); printf(" \n"); printf("

Pozdravljen, svet!

\n"); printf("

\n"); )

Opomba

Upoštevajte, da Perl različica hello.cgi uporablja Content-Type print ": text/html\n\n "; Medtem ko različica C uporablja Printf("Content-Type: text/html\r\n\r\n");

Zakaj Perl natisne operator na koncu z dvema novima vrsticama (\n), medtem ko se C printf konča z dvema vrnitvama v prvi vrstici in novimi vrsticami (\r\n)?

Tehnično se pričakuje, da bodo glave (vsi izhodi pred prazno vrstico) ločene z vrnitvijo v prvi vrstico in novo vrstico. Na žalost Perl na strojih DOS in Windows prevede \r kot novo vrstico in ne kot vrnitev v prvi vrstico.

Čeprav je Perlova izjema \rs tehnično nepravilna, bo delovala na skoraj vseh protokolih in je enako prenosljiva na vseh platformah. Zato v vseh Perlovih primerih v tej knjigi uporabljam glave, ki ločujejo nove vrstice, namesto znakov za vrnitev in nove vrstice.

Ustrezna rešitev tega problema je predstavljena v 4. poglavju, Zaključek.

Niti spletnemu strežniku niti brskalniku ni mar, kateri jezik je uporabljen za pisanje programa. Čeprav ima vsak jezik kot programski jezik CGI prednosti in slabosti, je najbolje uporabiti jezik, s katerim vam je najbolj udobno delati. (Izbira programskega jezika je podrobneje obravnavana v 1. poglavju, “Skupni vmesnik prehoda (CGI)”).

CGI upodabljanje

Zdaj si lahko podrobneje ogledate vprašanje pošiljanja informacij v spletni brskalnik. Iz primera »Hello, World!« lahko vidite, da spletni brskalniki pričakujejo dva niza podatkov: glavo, ki vsebuje informacije, na primer, katere informacije naj se prikažejo (npr. vrstica Content-Type:), in dejanske informacije (kaj spletni brskalnik zasloni). Ta dva podatka sta ločena s prazno vrstico.

Glava se imenuje glava HTTP. Daje pomembne informacije o informacijah, ki jih bo brskalnik prejel. Obstaja več različnih vrst glav HTTP, najpogostejša pa je tista, ki ste jo že uporabljali: Content-Type: glava. Uporabite lahko različne kombinacije glav HTTP, ločene z vrnitvijo v prvi vrstico in novo vrstico (\r\n). Prazna vrstica, ki ločuje glavo od podatkov, je sestavljena tudi iz vrnitve v prvi vrstico in nove vrstice (zakaj sta potrebni obe, je na kratko obravnavano v prejšnji opombi in podrobno opisano v 4. poglavju). O drugih glavah HTTP boste izvedeli v 4. poglavju; Trenutno imate opravka z glavo Content-Type:.

Content-Type: Glava opisuje vrsto podatkov, ki jih vrne CGI. Primerna oblika za to glavo je:

Content-Type: podvrsta/vrsta

Pri čemer je podvrsta/vrsta pravilna vrsta razširitev večnamenske internetne pošte (MIME). Najpogostejši tip MIME je tip HTML: text/html. Tabela 2.1 navaja nekaj pogostejših tipov MIME, o katerih bomo razpravljali; Popolnejši seznam in analiza tipov MIME sta na voljo v 4. poglavju.

Opomba

MIME je bil prvotno izumljen za opis vsebine teles poštnih sporočil. Postal je dokaj pogost način za predstavitev informacij o vrsti vsebine. Več o MIME lahko preberete v RFC1521. RFC-ji na internetu pomenijo zahteve za komentarje, ki so povzetki odločitev skupin na internetu, ki poskušajo postaviti standarde. Rezultate RFC1521 si lahko ogledate na naslednjem naslovu: http://andrew2.andrew.cmu.edu/rfc/rfc1521.html

Tabela 2.1. Nekatere običajne vrste MIME. Vrsta MIME Opis Besedilo/html Hypertext Markup Language (HTML) Besedilo/navadno Datoteke z navadnim besedilom Slika/gif Grafične datoteke GIF Slika/jpeg Stisnjene grafične datoteke JPEG Zvočne/osnovne zvočne datoteke Sun *.au Zvočne/x-wav Datoteke Windows *. wav

Po glavi in ​​prazni vrstici preprosto natisnete podatke v obliki, ki jo potrebujete. Če pošiljate HTML, natisnite oznake HTML in podatke v stdout za glavo. Pošiljate lahko tudi grafične, zvočne in druge binarne datoteke tako, da preprosto natisnete vsebino datoteke v stdout. V 4. poglavju je podanih več primerov tega.

Namestitev in zagon programa CGI

Ta razdelek nekoliko odstopa od programiranja CGI in govori o konfiguriranju vašega spletnega strežnika za uporabo CGI, nameščanju in izvajanju programov. Bolj ali manj podrobno se boste seznanili z različnimi strežniki za različne platforme, vendar se boste morali poglobiti v dokumentacijo vašega strežnika, da boste našli najboljšo možnost.

Vsi strežniki potrebujejo prostor za datoteke strežnika in prostor za dokumente HTML. V tej knjigi se območje strežnika imenuje ServerRoot, področje dokumenta pa DocumentRoot. Na strojih UNIX je ServerRoot običajno v /usr/local/etc/httpd/, DocumentRoot pa je običajno v /usr/local/etc/httpd/htdocs/. Vendar to ne bo vplivalo na vaš sistem, zato zamenjajte vse sklice na ServerRoot in DocumentRoot s svojima ServerRoot in DocumentRoot.

Ko dostopate do datotek s spletnim brskalnikom, podate datoteko v URL-ju glede na DocumentRoot. Na primer, če je naslov vašega strežnika mymachine.org, potem do te datoteke dostopate z naslednjim URL-jem: http://mymachine.org/index.html

Konfiguriranje strežnika za CGI

Večina spletnih strežnikov je vnaprej konfiguriranih za uporabo programov CGI. Običajno dva parametra strežniku nakazujeta, ali je datoteka aplikacija CGI ali ne:

  • Določen imenik. Nekateri strežniki vam omogočajo, da ugotovite, da so vse datoteke v določenem imeniku (običajno privzeto imenovanem cgi-bin) CGI.
  • Končnice imen datotek. Številni strežniki imajo to predkonfiguracijo, ki omogoča, da se vse datoteke, ki se končajo z .cgi, definirajo kot CGI.

Metoda imenovanega imenika je nekakšen ostanek preteklosti (prvi strežniki so jo uporabljali kot edino metodo za določanje, katere datoteke so programi CGI), vendar ima več prednosti.

  • Ohranja programe CGI centralizirane in preprečuje, da bi ostali imeniki postali nered.
  • Niste omejeni na nobeno posebno pripono imena datoteke, tako da lahko datoteke poimenujete, kakor želite. Nekateri strežniki vam omogočajo, da določite več različnih imenikov kot imenike CGI.
  • Omogoča tudi večji nadzor nad tem, kdo lahko snema CGI. Na primer, če imate strežnik in podpirate sistem z več uporabniki in ne želite, da uporabljajo lastne skripte CGI brez predhodne revizije programa iz varnostnih razlogov, lahko kot CGI označite samo tiste datoteke v omejenem centraliziranem imeniku . Uporabniki vam bodo nato morali zagotoviti programe CGI za namestitev, vi pa lahko najprej pregledate kodo in se prepričate, da program nima večjih varnostnih težav.

Zapis CGI prek končnice imena datoteke je lahko uporaben zaradi svoje prilagodljivosti. Za programe CGI niste omejeni na en sam imenik. Večino strežnikov je mogoče konfigurirati za prepoznavanje CGI prek pripone imena datoteke, čeprav niso vsi privzeto konfigurirani na ta način.

Opozorilo

Ne pozabite na pomen varnostnih vprašanj, ko konfigurirate svoj strežnik za CGI. Nekaj ​​nasvetov bo obravnavanih tukaj, poglavje 9, Zaščita CGI, pa te vidike obravnava podrobneje.

Namestitev CGI na strežnike UNIX

Ne glede na to, kako je konfiguriran vaš strežnik UNIX, morate narediti več korakov, da zagotovite, da vaše aplikacije CGI delujejo po pričakovanjih. Vaš spletni strežnik se običajno izvaja kot neobstoječi uporabnik (to je uporabnik UNIX nobody – račun, ki nima dovoljenj za datoteke in se ne more prijaviti). Skripte CGI (napisane v Perlu, lupini Bourne ali drugem skriptnem jeziku) morajo biti izvedljive in berljive po vsem svetu.

Namig

Če želite, da bodo vaše datoteke berljive in izvedljive, uporabite naslednji ukaz za dovoljenja UNIX: chmod 755 ime datoteke.

Če uporabljate skriptni jezik, kot je Perl ali Tcl, navedite celotno pot vašega tolmača v prvi vrstici vašega skripta. Na primer, skript Perl, ki uporablja perl v imeniku /usr/local/bin, bi se začel z naslednjo vrstico:

#!/usr/local/bin/perl

Opozorilo

Nikoli ne postavljajte tolmača (perl ali Tcl Wish binary) v imenik /cgi-bin. To ustvarja varnostno tveganje za vaš sistem. To je podrobneje obravnavano v 9. poglavju.

Nekateri generični strežniki UNIX

Strežnika NCSA in Apache imata podobne konfiguracijske datoteke, ker je strežnik Apache prvotno temeljil na kodi NCSA. Privzeto so konfigurirani tako, da je katera koli datoteka v imeniku cgi-bin (ki se privzeto nahaja v ServerRoot) program CGI. Če želite spremeniti lokacijo imenika cgi-bin, lahko uredite konfiguracijsko datoteko conf/srm.conf. Format za konfiguracijo tega imenika je

ScriptAlias ​​​​fakedirectoryname realdirectoryname

kjer je fakedirectoryname psevdo ime imenika (/cgi-bin) in realdirectoryname je polna pot, kjer so programi CGI dejansko shranjeni. Konfigurirate lahko več kot en ScriptAlias ​​​​tako, da dodate več vrstic ScriptAlias ​​​​.

Privzeta konfiguracija zadostuje za potrebe večine uporabnikov. V obeh primerih morate urediti vrstico v datoteki srm.conf, da določite pravilno ime realnega imenika. Če se na primer vaši programi CGI nahajajo v /usr/local/etc/httpd/cgi-bin, bi morala biti vrstica ScriptAlias ​​​​v vaši datoteki srm.conf nekaj takega:

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

Za dostop ali povezavo do programov CGI, ki se nahajajo v tem imeniku, uporabite naslednji URL:

Http://imegostitelja/cgi-bin/imeprograma

Pri čemer je ime gostitelja ime gostitelja vašega spletnega strežnika, ime programa pa je ime vašega CGI.

Na primer, recimo, da kopirate program hello.cgi v vaš imenik cgi-bin (npr. /usr/local/etc/httpd/cgi-bin) na vašem spletnem strežniku, imenovanem www.company.com. Za dostop do CGI uporabite naslednji URL: http://www.company.com/cgi-bin/hello.cgi

Če želite konfigurirati svoj strežnik NCSA ali Apache, da prepozna katero koli datoteko s pripono .cgi kot CGI, morate urediti dve konfiguracijski datoteki. Najprej v datoteki srm.conf odkomentirajte naslednjo vrstico:

AddType application/x-httpd-cgi .cgi

To bo CGI vrste MIME povezalo s pripono .cgi. Zdaj moramo spremeniti datoteko access.conf, tako da lahko izvajamo CGI v katerem koli imeniku. Če želite to narediti, dodajte možnost ExecCGI v vrstico Option. Videti bo nekako takole:

Indeksi možnosti FollowSymLinks ExecCGI

Zdaj se vsaka datoteka s pripono .cgi šteje za CGI; dostopajte do nje kot do katere koli datoteke na svojem strežniku.

Strežnik CERN je konfiguriran na enak način kot strežnika Apache in NCSA. Namesto ScriptAlias ​​strežnik CERN uporablja ukaz Exec. Na primer, v datoteki httpd.conf boste videli naslednjo vrstico:

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

Druge strežnike UNIX je mogoče konfigurirati na enak način; To je podrobneje opisano v dokumentaciji strežnika.

Namestitev CGI v Windows

Večina strežnikov, ki so na voljo za Windows 3.1, Windows 95 in Windows NT, je konfigurirana z metodo "pripone imena datoteke" za prepoznavanje CGI. Na splošno spreminjanje konfiguracije strežnika, ki temelji na sistemu Windows, preprosto zahteva zagon programa za konfiguracijo strežnika in izvedbo ustreznih sprememb.

Včasih je konfiguriranje strežnika za pravilno izvajanje skripta (kot je Perl) lahko težavno. V DOS ali Windows ne boste mogli določiti tolmača v prvi vrstici skripta, kot je to v primeru UNIX. Nekateri strežniki imajo vnaprej določeno konfiguracijo za povezovanje določenih pripon imen datotek s tolmačem. Številni spletni strežniki Windows na primer predvidevajo, da so datoteke, ki se končajo z .pl, skripti Perl.

Če strežnik ne izvede te vrste povezovanja datotek, lahko definirate paketno datoteko pakirnika, ki pokliče tolmača in skript. Tako kot pri strežniku UNIX tolmača ne nameščajte niti v imenik cgi-bin niti v kateri koli imenik, ki je dostopen spletu.

Namestitev CGI na Macintosh

Dve najbolj znani možnosti strežnika za Macintosh sta WebStar StarNine in njegov predhodnik MacHTTP. Oba prepoznata CGI po končnici imena datoteke.

MacHTTP razume dve različni razširitvi: .cgi in .acgi, kar pomeni asinhroni CGI. Običajni programi CGI, nameščeni v računalniku Macintosh (s pripono .cgi), bodo ohranjali spletni strežnik v zasedenem stanju, dokler se CGI ne konča z izvajanjem, zaradi česar strežnik začasno prekine vse druge zahteve. Po drugi strani pa asinhroni CGI omogoča, da strežnik sprejema zahteve, tudi ko deluje.

Razvijalec CGI Macintosh, ki uporablja katerega koli od teh spletnih strežnikov, bi moral, če je mogoče, uporabljati samo končnico .acgi namesto končnice .cgi. Delovati mora z večino programov CGI; če ne deluje, preimenujte program v .cgi.

Izvajanje CGI

Ko namestite CGI, ga lahko izvedete na več načinov. Če je vaš program CGI samo izhodni program, kot je program Hello,World!, ga lahko izvedete preprosto z dostopom do njegovega URL-ja.

Večina programov se izvaja kot strežniška aplikacija na obrazcu HTML. Preden se naučite pridobivati ​​informacije iz teh obrazcev, najprej preberite kratek uvod o ustvarjanju takih obrazcev.

Hitra vadnica o obrazcih HTML

Dve najpomembnejši oznaki v obliki HTML sta

in . Večino obrazcev HTML lahko ustvarite samo s tema dvema oznakama. V tem poglavju boste raziskali te oznake in majhno podmnožico možnih tipov ali atributov. . Popoln vodnik in povezava do obrazcev HTML je v 3. poglavju, HTML in obrazci.

Oznaka

Oznaka uporablja za določitev, kateri del datoteke HTML naj se uporabi za podatke, ki jih vnese uporabnik. To se nanaša na način, kako večina strani HTML imenuje program CGI. Atributi oznake določajo ime in lokacijo programa – lokalno ali kot polni URL, vrsto uporabljenega kodiranja in način premikanja podatkov, ki ga uporablja program.

Naslednja vrstica prikazuje specifikacije za oznako :

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

Atribut ENCTYPE nima posebne vloge in običajno ni vključen v oznako . Podrobne informacije o oznaki ENCTYPE so podane v 3. poglavju. Eden od načinov uporabe ENCTYPE je prikazan v 14. poglavju, "Razširitve z blagovno znamko".

Atribut ACTION se nanaša na URL programa CGI. Ko uporabnik izpolni obrazec in vnese podatke, se vsi podatki kodirajo in prenesejo v program CGI. Program CGI sam rešuje problem dekodiranja in obdelave informacij; Ta vidik je obravnavan v "Sprejemanje vnosa iz brskalnika," kasneje v tem poglavju.

Končno, atribut METHOD opisuje, kako naj program CGI sprejema vhodne podatke. Obe metodi, GET in POST, se razlikujeta v tem, kako posredujeta informacije programu CGI. Oboje je obravnavano v "Sprejemanje vnosa iz brskalnika."

Da brskalnik omogoča uporabniški vnos, morajo biti vse oznake obrazcev in informacije obdane z oznako . Ne pozabite na zaključno oznako

za označevanje konca obrazca. Ne morete imeti obrazca znotraj obrazca, čeprav lahko nastavite obrazec, ki vam omogoča, da predstavite informacije na različnih mestih; ta vidik je obširno obravnavan v 3. poglavju.

Oznaka

Ustvarite lahko vrstice za vnos besedila, izbirne gumbe, potrditvena polja in druge načine sprejemanja vnosa z uporabo oznake . Ta razdelek pokriva samo polja za vnos besedila. Za implementacijo tega polja uporabite oznako z naslednjimi atributi:

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

NAME je simbolično ime spremenljivke, ki vsebuje vrednost, ki jo vnese uporabnik. Če v atribut VALUE vključite besedilo, bo to besedilo privzeto umeščeno v polje za vnos besedila. Atribut SIZE vam omogoča, da določite vodoravno dolžino vnosnega polja, kot bo prikazano v oknu brskalnika. Končno MAXLENGTH določa največje število znakov, ki jih lahko uporabnik vnese v polje. Upoštevajte, da atributi VALUE, SIZE, MAXLENGTH niso obvezni.

Oddaja obrazca

Če imate v obrazcu samo eno besedilno polje, lahko uporabnik odda obrazec tako, da na tipkovnici preprosto vnese podatke in pritisne Enter. V nasprotnem primeru mora obstajati drug način, da uporabnik predstavi informacije. Uporabnik odda podatke z uporabo gumba za oddajo z naslednjo oznako:

< Input type=submit >

Ta oznaka ustvari gumb Pošlji znotraj obrazca. Ko uporabnik konča z izpolnjevanjem obrazca, lahko pošlje njegovo vsebino na URL, ki ga določa atribut ACTION obrazca, s klikom na gumb Pošlji.

Sprejemanje vnosa iz brskalnika

Zgoraj so bili primeri snemanja programa CGI, ki pošilja informacije s strežnika v brskalnik. V resnici program CGI, ki izpisuje samo podatke, nima veliko aplikacij (nekaj primerov je navedenih v 4. poglavju). Pomembnejša zmožnost CGI je prejemanje informacij iz brskalnika - funkcija, ki daje spletu interaktivni značaj.

Program CGI od brskalnika prejema dve vrsti informacij.

  • Najprej pridobi različne informacije o brskalniku (njegova vrsta, kaj si lahko ogleda, gostiteljski gostitelj itd.), strežnik (njegovo ime in različica, njegova izvršilna vrata itd.) in programu CGI sama (ime programa in kje se nahaja). Strežnik posreduje vse te informacije programu CGI prek spremenljivk okolja.
  • Drugič, program CGI lahko sprejema uporabniške vnose. Te informacije, potem ko jih brskalnik kodira, se pošljejo prek spremenljivke okolja (metoda GET) ali prek standardnega vnosa (metoda stdin - POST).

Spremenljivke okolja

Koristno je vedeti, katere spremenljivke okolja so na voljo programu CGI, tako med usposabljanjem kot za odpravljanje napak. Tabela 2.2 navaja nekatere razpoložljive spremenljivke okolja CGI. Napišete lahko tudi program CGI, ki izpiše spremenljivke okolja in njihove vrednosti v spletni brskalnik.

Tabela 2.2. Nekaj ​​pomembnih spremenljivk okolja CGI Spremenljivka okolja Namen REMOTE_ADDR Naslov IP odjemalskega računalnika. REMOTE_HOST Gostitelj odjemalskega računalnika. HTTP _ACCEPT Navede tipe podatkov MIME, ki jih brskalnik lahko interpretira. HTTP _USER_AGENT Informacije o brskalniku (vrsta brskalnika, številka različice, operacijski sistem itd.). REQUEST_METHOD GET ali POST. CONTENT_LENGTH Velikost vnosa, če je poslan prek POST. Če ni vnosa ali če je uporabljena metoda GET, je ta parameter nedefiniran. QUERY_STRING Vsebuje vhodne informacije, ko so posredovane z uporabo metode GET. PATH_INFO Omogoča uporabniku, da določi pot iz ukazne vrstice CGI (na primer http://imegostitelja/cgi-bin/imeprograma/pot). PATH_TRANSLATED Prevede relativno pot v PATH_INFO v dejansko pot v sistemu.

Če želite napisati aplikacijo CGI, ki prikazuje spremenljivke okolja, morate vedeti, kako narediti dve stvari:

  • Določite vse spremenljivke okolja in njihove ustrezne vrednosti.
  • Natisnite rezultate v brskalnik.

Zadnjo operacijo že veste. V Perlu so spremenljivke okolja shranjene v asociativnem polju %ENV, ki ga uvede ime spremenljivke okolja. Izpis 2.3 vsebuje env.cgi, program Perl, ki doseže naš cilj.

Seznam 2.3. Program Perl, env.cgi, ki natisne vse spremenljivke okolja CGI.

#!/usr/local/bin/perl print "Content-type: text/html\n\n"; natisni" \n"; natisni " CGI okolje\n"; natisni "\n"; natisni " \n"; natisni "

CGI okolje

\n"; foreach $env_var (ključi %ENV) ( print " $env_var= $ENV($env_var)
\n"; ) natisni "

\n";

Podoben program bi lahko napisali v C; celotna koda je v seznamu 2.4.

Seznam 2.4. Env.cgi.c v C. /* env.cgi.c */ #include extern char **okolje; int main() ( char **p = environ; printf("Vrsta vsebine: besedilo/html\r\n\r\n"); printf(" \n"); printf(" CGI okolje\n"); printf("\n"); printf(" \n"); printf("

CGI okolje

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

\n"); )

DOBITI ali OBJAVITI?

Kakšna je razlika med metodama GET in POST? GET posreduje kodirani vhodni niz skozi spremenljivko okolja QUERY_STRING, medtem ko ga POST posreduje skozi stdin. POST je prednostna metoda, zlasti pri obrazcih z veliko podatkov, ker ni omejitev glede količine poslanih informacij, medtem ko je pri metodi GET omejena količina medijskega prostora. Vendar ima GET določeno uporabno lastnost; to je podrobno obravnavano v 5. poglavju, Vnos.

Da ugotovi, katera metoda je uporabljena, program CGI preveri spremenljivko okolja REQUEST_METHOD, ki bo nastavljena na GET ali POST. Če je nastavljen na POST, je dolžina kodiranih informacij shranjena v spremenljivki okolja CONTENT_LENGTH.

Kodiran vnos

Ko uporabnik odda obrazec, brskalnik najprej zakodira podatke, preden jih pošlje strežniku in nato aplikaciji CGI. Ko uporabite oznako , vsako polje dobi simbolično ime. Vrednost, ki jo vnese uporabnik, je predstavljena kot vrednost spremenljivke.

Da bi to ugotovil, brskalnik uporablja specifikacijo kodiranja URL-ja, ki jo lahko opišemo na naslednji način:

  • Ločuje različna polja z znakom & (&).
  • Ločuje ime in vrednosti z enakimi znaki (=), z imenom na levi in ​​vrednostjo na desni.
  • Zamenja presledke z znaki plus (+).
  • Zamenja vse "nenormalne" znake z znakom za odstotek (%), ki mu sledi dvomestna šestnajstiška koda za znak.

Vaš končni kodirani niz bo podoben naslednjemu:

Ime1=vrednost1&ime2=vrednost2&ime3=vrednost3 ...

Opomba: specifikacije za kodiranje URL-jev najdete v RFC1738.

Na primer, recimo, da ste imeli obrazec, ki je zahteval ime in starost. Koda HTML, ki je bila uporabljena za prikaz tega obrazca, je prikazana v seznamu 2.5.

Seznam 2.5. HTML koda za prikaz obrazca z imenom in starostjo.

Ime in starost

Vnesite svoje ime:

Vnesite svojo starost:



Recimo, da uporabnik vnese Joe Schmoe v polje za ime in 20 v polje za starost. Vnos bo kodiran v vhodni niz.

Ime=Joe+Schmoe&starost=20

Razčlenjevanje vnosa

Da bi bile te informacije uporabne, morate uporabiti informacije o nečem, kar lahko uporabljajo vaši programi CGI. Strategije za razčlenjevanje vnosa so zajete v 5. poglavju. V praksi vam nikoli ne bo treba razmišljati o tem, kako razčleniti vnos, ker je več strokovnjakov že napisalo knjižnice, ki izvajajo razčlenjevanje in so dostopne vsem. V tem poglavju sta v naslednjih razdelkih predstavljeni dve takšni knjižnici: cgi -lib.pl za Perl (napisal Steve Brenner) in cgihtml za C (napisal jaz).

Splošni cilj večine knjižnic, napisanih v različnih jezikih, je razčleniti kodiran niz in postaviti pare imena in vrednosti v podatkovno strukturo. Obstaja očitna prednost uporabe jezika, ki ima vgrajene podatkovne strukture, kot je Perl; vendar večina knjižnic za nizkonivojske jezike, kot sta C in C++, vključuje strukturo podatkov in izvajanje podprogramov.

Ni potrebno doseči popolnega razumevanja knjižnic; bolj pomembno je, da se naučite, kako jih uporabljati kot orodja za olajšanje dela programerja CGI.

Cgi-lib.pl

Cgi-lib.pl uporablja asociativne nize Perl. Funkcija &ReadParse razčleni vhodni niz in vnese vsak par ime/vrednost po imenu. Na primer, ustrezni nizi Perl, potrebni za dekodiranje pravkar predstavljenega vhodnega niza "ime/starost", bi bili

&ReadParse(*input);

Zdaj, če si želite ogledati vrednost, vneseno za "name", lahko dostopate do asociativne matrike $input("name"). Podobno morate za dostop do vrednosti "age" pogledati spremenljivko $input ("age").

Cgihtml

C nima vgrajenih podatkovnih struktur, zato cgihtml implementira lasten seznam povezav za uporabo s svojimi rutinami za razčlenjevanje CGI. To definira strukturo tipa vnosa na naslednji način:

Typedef struct ( Char *name; Char *value; ) Entrytype;

Za razčlenitev vhodnega niza "ime/starost" v C z uporabo cgihtml se uporabi naslednje:

/* deklariramo povezan seznam, imenovan input */ Llist input; /* razčleni vnos in lokacijo na povezanem seznamu */ read_cgi_input(&input);

Za dostop do podatkov o starosti lahko seznam razčlenite ročno ali uporabite razpoložljivo funkcijo cgi _val().

#vključi #vključi Char *age = malloc(sizeof(char)*strlen(cgi_val(input, "age")) + 1); Strcpy(starost, cgi_val(vnos, "starost"));

Vrednost "starost" je zdaj shranjena v nizu starosti.

Opomba: Namesto uporabe preproste matrike (kot je char age ;), dinamično dodeljujem pomnilniški prostor za niz age. Čeprav to oteži programiranje, je vseeno pomembno z varnostnega vidika. To je podrobneje obravnavano v 9. poglavju.

Preprost CGI program

Napisali boste program CGI z imenom nameage.cgi, ki obravnava obrazec ime/starost. Obdelava podatkov (kar običajno imenujem "stvari") je minimalna. Nameage.cgi preprosto dekodira vnos in prikaže uporabnikovo ime in starost. Čeprav takšno orodje ni veliko uporabno, prikazuje najbolj kritičen vidik programiranja CGI: vnos in izhod.

Uporabite isti obrazec kot zgoraj in prikličete polja "ime in starost". Ne skrbite še glede robustnosti in učinkovitosti; rešiti obstoječo težavo na najpreprostejši način. Rešitvi Perl in C sta prikazani v seznamih 2.6 oziroma 2.7.

Seznam 2.6. Nameage.cgi v Perlu

#!/usr/local/bin/perl # nameage.cgi zahteva "cgi-lib.pl" &ReadParse(*input); print "Content-Type: text/html\r\n\r\n"; natisni" \n"; natisni " Ime in starost\n"; natisni "\n"; natisni " \n"; print "Pozdravljeni, " . $input("name") . ". Stari ste\n"; print $input("age") . " let.

\n"; natisni "

\n";

Seznam 2.7. nameage.cgi v C

/* nameage.cgi.c */ #include #include "cgi-lib.h" int main() ( llist input; read_cgi_input(&input); printf("Content-Type: text/html\r\n\r\n"); printf(" \n"); printf(" Ime in starost\n"); printf("\n"); printf(" \n"); printf("Pozdravljeni, %s. Ste\n",cgi_val(input,"name")); printf("Star %s let.

\n",cgi_val(vnos,"starost")); printf("

\n"); )

Upoštevajte, da sta ta dva programa skoraj enakovredna. Oba vsebujeta rutine za razčlenjevanje, ki zavzamejo samo eno vrstico in obdelajo celoten vnos (zahvaljujoč ustreznim rutinam knjižnice). Rezultat je v bistvu spremenjena različica vašega glavnega programa Hello, World!.

Poskusite zagnati program tako, da izpolnite obrazec in kliknete gumb Pošlji.

Splošna strategija programiranja

Zdaj poznate vsa osnovna načela, potrebna za programiranje CGI. Ko enkrat razumete, kako CGI sprejema informacije in kako jih pošilja nazaj v brskalnik, je dejanska kakovost vašega končnega izdelka odvisna od vaših splošnih sposobnosti programiranja. Namreč, ko programirate CGI (ali karkoli sploh), imejte v mislih naslednje lastnosti:

  • Preprostost
  • Učinkovitost
  • Vsestranskost

Prvi dve lastnosti sta precej pogosti: poskušajte narediti kodo čim bolj berljivo in učinkovito. Vsestranskost velja bolj za programe CGI kot za druge aplikacije. Ko začnete razvijati lastne programe CGI, se boste naučili, da obstaja več osnovnih aplikacij, ki si jih vsakdo želi narediti. Na primer, ena najpogostejših in očitnih nalog programa CGI je obdelava obrazca in pošiljanje rezultatov po e-pošti določenemu prejemniku. Obdelujete lahko več ločenih obrazcev, od katerih ima vsak drug prejemnika. Namesto pisanja programa CGI za vsak obrazec lahko prihranite čas tako, da napišete bolj splošen program CGI, ki velja za vse obrazce.

S pokrivanjem vseh osnovnih vidikov CGI sem vam zagotovil dovolj informacij, da lahko začnete s programiranjem CGI. Če pa želite postati učinkovit razvijalec CGI, morate globlje razumeti, kako CGI komunicira s strežnikom in brskalnikom. Preostanek te knjige podrobno pokriva vprašanja, ki so bila na kratko omenjena v tem poglavju, pa tudi strategijo razvoja aplikacij ter prednosti in omejitve protokola.

Povzetek

V tem poglavju so bile na kratko predstavljene osnove programiranja CGI. Izhod ustvarite s pravilnim formatiranjem podatkov in tiskanjem v stdout. Prejemanje vnosa CGI je nekoliko bolj zapleteno, ker ga je treba pred uporabo razčleniti. Na srečo že obstaja več knjižnic, ki izvajajo razčlenjevanje.

Do zdaj bi morali biti že precej zadovoljni s programiranjem aplikacij CGI. Preostanek te knjige podrobneje opisuje specifikacije, nasvete in strategije programiranja za naprednejše in kompleksnejše aplikacije.

Lastniki spletnih trgovin poznajo pojem "elektronsko poslovanje" iz prve roke, že poznajo odgovor na vprašanje "e-poslovanje - kaj je to?" Če pa prideš zadevi do dna, se pokažejo številne nianse in ta izraz dobi širši pomen.

E-trgovina: kaj je to?

Splošni koncept je naslednji: e-trgovina se razume kot določen pristop k poslovanju, ki vključuje vključitev številnih operacij, ki uporabljajo digitalni prenos podatkov pri zagotavljanju blaga ali opravljanju storitev/dela, vključno z uporabo Internet.

Gre torej za vsako komercialno transakcijo, ki se opravi z uporabo elektronskega komunikacijskega sredstva.

Shema dela je urejena na naslednji način:

  • vsakdo je lahko bloger ali katerikoli drug lastnik svoje internetne strani) se registrira v ta sistem;
  • dobi svojo povezavo;
  • na svojo spletno stran postavi posebno kodo - prikaže se oglas za izbranega uradnega partnerja e-Commerce Partners Network;
  • spremlja konverzijo spletne strani;
  • zasluži določen odstotek za vsak nakup obiskovalca vaše spletne strani, ki sledi partnerski povezavi.

WP e-trgovina

Veliko ljudi se zdaj navdušuje nad e-poslovanjem, predvsem zaradi želje po izdelavi lastne spletne strani, edinstvene spletne trgovine za prodajo lastnih izdelkov. Da bi zadostili temu naraščajočemu povpraševanju, so se razvijalci osredotočili na ustvarjanje predlog za e-trgovino. Poglejmo, kaj je to naslednje.

Takšen primer predloge je e-trgovina WordPress. Je vtičnik nakupovalne košarice za WordPress (eden najbolj znanih sistemov za upravljanje spletnih virov), namenjen predvsem ustvarjanju in organiziranju blogov). Na voljo je popolnoma brezplačno in obiskovalcem spletnega mesta omogoča nakupovanje na spletnem mestu.

Z drugimi besedami, ta vtičnik vam omogoča ustvarjanje spletne trgovine (ki temelji na WordPressu). Ta vtičnik za e-trgovino ima vsa potrebna orodja, nastavitve in možnosti, ki ustrezajo sodobnim potrebam.




Vrh