Laikinoji prekyba cgi. Aiški elektroninė prekyba

Elektroninė prekyba aiškia rusų kalba. Kaip veikia internetinis verslas?

Pastaruoju metu atsiranda vis daugiau projektų, susijusių su prekyba internetu. Studijuodamas šią sritį neradau bendro ir suprantamo proceso aprašymo. Todėl nusprendžiau padaryti kažką panašaus į cheat sheet, į kurį visada galite kreiptis, kad suprastumėte procedūrą tokioje srityje kaip elektroninė prekyba.

Iš karto padarysiu išlygą, kad sutelkiau dėmesį į procesus ir kanalus, kurie padeda pritraukti klientus.

Elektroninė prekyba: kas tai?

Įvairių šaltinių apibrėžimai kažką sako apie prekių ar paslaugų pardavimą internetu. Paprastais žodžiais Elektroninė prekyba yra bet kokia veikla internete, kurioje atsiranda pinigų.

Apsipirkimas, pardavimas, draudimas, bankininkystė, elektroniniai pinigai, viskas čia. Paimk ir pasirašyk.

Nuo tikslo

Norint suprasti problemą, siūlau pradėti kelią nuo pačios pabaigos. Koks bet kokio verslo tikslas? Teisingai, užsidirbk pinigų. Taigi įsivaizduokite bet kokį gaminį, pavyzdžiui, silikonines kojines. Kodėl gi ne!

Aš paėmiau pirmą dalyką, kuris atėjo į galvą, paaiškėjo, kad kažkas tokio...

Mūsų užduotis yra užsidirbti pinigų iš šių kojinių. Galvojame apie internetą. Hmm... kodėl gi nesukūrus svetainės ir taip vyks pardavimai, tiesiog palikite mane Maldyvuose! Bet tai nėra taip paprasta.

Man labai patinka piešti. Tai padeda suprasti įvairius procesus. Pieškime?!

Kol kas mūsų modelis atrodo taip. Paimame kojines, įdedame į internetą ir gauname pinigų. Tai tiesiog puiku! Tavo akys dega, delnai prakaituoja ir jau norisi kibti į reikalus. Bet ar jums reikia sukurti svetainę ar pardavimo platformą?

Parduodama svetainė arba platforma

Yra įvairių sprendimų, kaip pateikti gaminį žiniatinklyje. Galite susikurti savo svetainę arba naudotis trečiųjų šalių platformomis (grupėmis, puslapiais socialiniuose tinkluose, pranešimų lentose ir pan.). Sustokime prie svetainės.

Užsisakėte svetainę, paėmėte paruoštą šabloną arba sukūrėte patys naudodami svetainių kūrėją (galite google TVS), nesvarbu. Tada jie padėjo krūvą įvairių rūšių silikoninių kojinių ir džiaugėsi.

Atsiprašau, kad pertraukiau skaitymą. Prisijunkite prie mano telegramos kanalo. Nauji pranešimai apie straipsnius, skaitmeninių produktų kūrimas ir augimo įsilaužimas – viskas. Laukiu tavęs! Tęskime...

Mokėjimo sistemos

Tačiau tam, kad žmogus pas tave pirktų čia ir dabar, reikės koreguoti mokėjimo sistemas. Tai tam tikra paslauga, leidžianti apsipirkti internetu: banko kortelėmis, interneto pinigais, Mobilieji telefonai ir dar krūva. Norėdami tai padaryti, turėsite pasidalinti procentais nuo sandorių, tačiau taip labai palengvinsite savo gyvenimą.

Pasirinkite jums tinkančią paslaugą. Kai kur procentas bus didesnis, o kažkur bus abonementas ar dar kažkas. Tiesiog atlikite nedidelį tyrimą. Įdėkite reikiamą kodą į savo svetainę, susiekite visas operacijas su savo kortelės sąskaita ir voila!

Atrodytų, kad ir viskas. Yra svetainė, prekių kortelės irgi, veikia net mygtukas „pirkti“, bet kažko trūksta... Pirkėjų srauto nėra.

Klientų srautai

Kur: CAC = naujo kliento įsigijimo išlaidos. MKC (marketingcampaign cost) = bendrosios rinkodaros išlaidų, kuriomis siekiama pritraukti klientus (bet ne juos išlaikyti), sąnaudos. W (darbo užmokestis) = atlyginimas rinkodaros specialistams ir pardavimų vadybininkams. S (programinė įranga) = reklamoje ir pardavimuose naudojamos programinės įrangos kaina (pavyzdžiui, naudojama pardavimo platforma, rinkodaros automatizavimas, A/B testavimas, analitinės paslaugos ir kt.). PS (professionalservices) = Profesionalių paslaugų, suteiktų rinkodaros ir pardavimų skyriams, kaina (dizainas, konsultavimas ir kt.). O (kita) = kitos pridėtinės išlaidos, susijusios su rinkodaros ir pardavimo skyriais. CA (customersacquired) = bendras pritrauktų klientų skaičius.

Tačiau reikia nepamiršti ir kliento kokybės, čia padės LTV.

Svarbūs rodikliai: LTV

„Live Time Value“, kliento gyvavimo ciklas, yra dar vienas elektroninės prekybos rodiklis, į kurį reikia atsižvelgti. Tai rodo, kiek vidutiniškai vienas klientas atneša pajamų. Skaičiavimo būdų yra įvairių, aš pasirinkau tikrąjį pagal pelną, kaip vieną tiksliausių.

Tai tiesiog visų pajamų suma per visą kiekvieno kliento pirkimo istoriją. Pridėkite visų klientų pirkimų (operacijų) sumą prie operacijos N, kur operacija N yra paskutinis pirkinys, kurį klientas įsigijo jūsų įmonėje. Jei turite prieigą prie visų klientų operacijų duomenų, galite lengvai tai apskaičiuoti naudodami „Excel“.

LTV = (1 sandoris + 2 sandoris + 3 sandoris... + sandoris N) x pelno dalis pajamose.

LTV apskaičiavimas pagal grynąjį pelną galiausiai parodo tikrąjį pelną, kurį klientas atneša jūsų įmonei. Čia atsižvelgiama į klientų aptarnavimo išlaidas, išlaikymo išlaidas, pritraukimo išlaidas ir kt. Rezultatas – visas skaičiavimų, pagrįstų individualiais duomenimis, kompleksas. Bendras pelnas, gautas vienam klientui per tam tikrą laiką, leis tiksliai suprasti iki šiol jūsų klientų pelningumą.

Kitus metodus galite rasti adresu.

Svarbūs rodikliai: ŠMC ir LTV santykis

Norint suprasti verslo gyvybingumą, labai svarbu pažvelgti į dviejų minėtų CAC:LTV santykį.

  • Mažiau nei 1:1 – Jūs visu greičiu skubate link bankroto.
  • 1:1 – Jūs prarandate pinigus dėl kiekvieno pritraukto kliento.
  • 1:2 – Atrodo gerai, bet atrodo, kad per mažai investuoji pinigų ir galėtum vystytis greičiau. Pradėkite agresyvesnes klientų pritraukimo kampanijas ir pasiekite rodiklius, artimus 1:3.
  • 1:3 – idealus santykis. Turite klestintį verslą ir tvirtą verslo modelį.

Svarbūs rodikliai: IG nepamirškite

Kaip aptarėme aukščiau, elektroninėje prekyboje turite aiškiai suprasti, ar pelninga naudoti įsigijimo kanalą, ar ne. Be LTV ir ŠMC, yra dar vienas svarbus rodiklis – IG. Tai parodo, ar jūsų investicijos, mūsų atveju į reklamą, pasiteisino. Tai yra. kiek mums galiausiai atnešė 1 investuotas rublis.

Skaičiavimui naudojama labai paprasta formulė:

Kur „Kampanijos pajamos“ yra skirtumas tarp pajamų iš kanalo ir jūsų produkto kainos. O pelnui apskaičiuoti atimkite reklamos išlaidas.

Taigi, išsamesnė formulė atrodytų taip:

IG = (kanalo pajamos – kaina) – reklamos išlaidos / reklamos išlaidos x 100 %

Daugiau detalus pavyzdys skaitykite su dėmesiu. Tiesą sakant, ši paprasta formulė dedama į tą pačią Excel lentelę, kurioje viskas apskaičiuojama automatiškai.

Visi trys mūsų aptarti rodikliai yra svarbūs elektroninėje prekyboje. Kiekvienas iš jų leidžia rasti srautų kliūtis ir su jomis dirbti. Čia yra verslo augimo potencialas. Dar šiek tiek papildžiau mūsų modelį su kojinėmis.

Neįmanoma visko sutalpinti į vieną medžiagą, o kas ją taip ilgai skaitys? Vėliau padarysiu atskirą vadovą apie elektroninės prekybos niuansus, kurie gali trukdyti pardavimams.

Iš viso

Apskritai dabar turite bendrą supratimą apie internetinę prekybą ar elektroninę prekybą. Be to, kaip sakoma: „Velnias slypi detalėse“. Išstudijuokite kiekvieną kanalą atskirai, apskaičiuokite veiklos rodiklius ir ieškokite naujų įžvalgų smulkmenose. Pardavimas internetu jums ir dar daugiau! Ir turiu dar vieną medžiagą.

Taip, aš beveik pamiršau, laimingų Naujųjų metų, mieli skaitytojai! Linkiu puikių pergalių ir laimėjimų kitais metais!

Pasaulinio žiniatinklio dėka beveik kiekvienas gali pateikti informaciją internete akims lengvai prieinama ir plačiai paskleista forma. Be jokios abejonės, naršėte internete ir matėte kitas svetaines, o dabar tikriausiai žinote, kad baisūs akronimai, tokie kaip „HTTP“ ir „HTML“, yra tiesiog „žiniatinklio“ ir „informacijos išreiškimo internete būdo“ santrumpa. Galbūt jau turite informacijos pateikimo internete patirties.

Internetas pasirodė esąs ideali terpė informacijai platinti, kaip matyti iš didžiulio jo populiarumo ir plačios plėtros. Nors kai kurie suabejojo ​​interneto naudingumu ir daugiausia sieja su jo plitimu bei populiarumu įkyri reklama,Internetas neabejotinai yra svarbi terpė pateikti bet kokią informaciją. Yra ne tik daug paslaugų, leidžiančių elektroniniu būdu teikti naujausią informaciją (naujienas, orus, tiesioginius sporto renginius) ir informacinę medžiagą, bet ir daug kitų duomenų. IRS, išplatinusi visas savo 1995 m. mokesčių deklaracijų formas ir kitą informaciją per pasaulinį tinklą, neseniai pripažino, kad gavo gerbėjų laiškų savo svetainėje. Kas galėjo pagalvoti, kad IRS kada nors gaus gerbėjų laiškus? Taip atsitiko ne todėl, kad jo svetainė buvo gerai sukurta, o todėl, kad ji pasirodė esanti tikrai naudinga priemonė tūkstančiams, galbūt milijonams žmonių.

Kuo žiniatinklis yra unikalus ir toks patrauklus? informacijos tarnyba? Visų pirma, tai suteikia duomenų hipermedijos sąsają. Pagalvokite apie savo kompiuterio standųjį diską. Paprastai duomenys išreiškiami linijiniu būdu, panašiai kaip failų sistemoje. Pavyzdžiui, turite keletą aplankų ir kiekviename aplanke yra arba dokumentai, arba kiti aplankai. Internetas naudoja kitokią paradigmą informacijai išreikšti, vadinamą hipermedija. Hiperteksto sąsaja susideda iš dokumento ir nuorodų. Nuorodos yra žodžiai, kuriuos spustelėjus norite pamatyti kitus dokumentus arba rasti kitokio tipo informaciją. Žiniatinklis išplečia hiperteksto sąvoką ir apima kitų tipų laikmenas, tokias kaip grafika, garsai, vaizdo įrašai (iš čia ir pavadinimas „hipermedija“). Pasirinkę tekstą arba grafiką dokumente, galite matyti susijusią informaciją apie pasirinktą elementą įvairiomis formomis.

Beveik visi gali pasinaudoti šiuo paprastu ir unikaliu informacijos pateikimo ir platinimo būdu – nuo ​​akademikų, kurie nori iš karto naudoti duomenis su savo kolegomis, iki verslo žmonių, kurie su visais dalijasi informacija apie savo įmonę. Tačiau, nors informacijos teikimas yra nepaprastai svarbus, per pastaruosius kelerius metus daugelis jautė, kad informacijos gavimas yra ne mažiau svarbus procesas.

Nors žiniatinklis suteikia unikalią hipermedijos sąsają informacijai, yra daug kitų veiksmingų duomenų platinimo būdų. Pavyzdžiui, tinklo paslaugos, tokios kaip failų perdavimo protokolas (FTP) ir Gopher naujienų grupė, egzistavo daug anksčiau nei pasaulinis žiniatinklis. Elektroninis paštas buvo pagrindinė komunikacijos ir informacijos mainų priemonė internete ir daugelyje kitų tinklų beveik nuo pat šių tinklų atsiradimo pradžios. Kodėl internetas tapo tokiu populiariu informacijos platinimo būdu? Daugialypės terpės interneto aspektas labai prisidėjo prie precedento neturinčios sėkmės, tačiau norint, kad internetas būtų efektyviausias, jis turi būti interaktyvus.

Be galimybės priimti vartotojo įvesties ir teikti informaciją, internetas būtų visiškai statiška aplinka. Informacija būtų prieinama tik autoriaus nurodytu formatu. Tai pakenktų vienai iš skaičiavimo galimybių apskritai: interaktyviai informacijai. Pavyzdžiui, užuot versus vartotoją peržiūrėti kelis dokumentus taip, lyg jis ar ji žiūrėtų knygą ar žodyną, būtų geriau leisti vartotojui nustatyti dominančios temos raktinius žodžius. Vartotojai gali tinkinti duomenų pateikimą, o ne pasikliauti griežta turinio teikėjo apibrėžta struktūra.

Terminas „žiniatinklio serveris“ gali būti klaidinantis, nes jis gali reikšti ir fizinį įrenginį, ir programinę įrangą, kurią jis naudoja bendraujant su interneto naršyklėmis. Kai naršyklė prašo nurodyto žiniatinklio adreso, ji pirmiausia prisijungia prie įrenginio per internetą ir siunčia žiniatinklio serverio programinei įrangai užklausą dėl dokumento. Ši programinė įranga veikia nepertraukiamai, laukdama tokių užklausų ir atitinkamai atsakydama.

Nors serveriai gali siųsti ir gauti duomenis, pats serveris funkcionalumą ribotas. Pavyzdžiui, pats primityviausias serveris gali siųsti tik reikiamą failą į naršyklę. Serveris dažniausiai nežino, ką daryti su ta ar kita papildoma įvestimi. Jei IPT nenurodo serveriui, kaip su jais elgtis Papildoma informacija, greičiausiai serveris nepaisys įvesties.

Kad serveris galėtų atlikti kitas operacijas, be failų paieškos ir siuntimo į interneto naršyklę, reikia žinoti, kaip išplėsti serverio funkcionalumą. Pavyzdžiui, žiniatinklio serveris negali ieškoti duomenų bazėje pagal raktažodį, kurį įvedė vartotojas, ir grąžina kelis atitinkančius dokumentus, nebent tokia galimybė kažkaip buvo užprogramuota serveryje.

Kas yra CGI?

Bendroji šliuzo sąsaja (CGI) yra sąsaja su serveriu, leidžianti išplėsti serverio funkcionalumą. Naudodami CGI galite interaktyviai bendrauti su vartotojais, kurie pasiekia jūsų svetainę. Teoriniu lygmeniu CGI leidžia serveriui išanalizuoti (interpretuoti) įvestį iš naršyklės ir grąžinti informaciją pagal vartotojo įvestą informaciją. Praktiniu lygmeniu CGI yra sąsaja, leidžianti programuotojui rašyti programas, kurios lengvai bendrauja su serveriu.

Paprastai, norėdami išplėsti serverio galimybes, turėsite patys modifikuoti serverį. Šis sprendimas yra nepageidautinas, nes reikia suprasti apatinį interneto protokolo tinklo programavimo lygmenį. Tam taip pat reikės redaguoti ir perkompiliuoti serverio šaltinio kodą arba parašyti pasirinktinį serverį kiekvienai užduočiai. Tarkime, kad norite išplėsti serverio galimybes, kad jis veiktų kaip žiniatinklio į el. paštą šliuzas, paimdamas vartotojo įvestą informaciją iš naršyklės ir išsiųsdamas ją kitam vartotojui el. paštu. Serveris turėtų įterpti kodą, kad išanalizuoti įvestį iš naršyklės, persiųsti jį el. paštu kitam vartotojui ir per tinklo ryšį persiųsti atsakymą atgal į naršyklę.

Pirma, tokiai užduočiai atlikti reikalinga prieiga prie serverio kodo, o tai ne visada įmanoma.

Antra, tai sudėtinga ir reikalauja didelių techninių žinių.

Trečia, tai taikoma tik konkrečiam serveriui. Jei jums reikės perkelti serverį į kitą platformą, turėsite paleisti arba bent jau praleisti daug laiko perkeldami kodą į tą platformą.

Kodėl CGI?

CGI siūlo nešiojamą ir paprastą šių problemų sprendimą. CGI protokolas apibrėžia standartinį programų ryšio su žiniatinklio serveriu būdą. Neturėdami jokių specialių žinių, galite rašyti programą bet kuria kompiuterio kalba, kuri yra sąsaja ir bendrauja su žiniatinklio serveriu. Ši programa veiks su visais žiniatinklio serveriais, kurie supranta CGI protokolą.

CGI ryšys vyksta naudojant standartinę įvestį ir išvestį, o tai reiškia, kad jei žinote, kaip spausdinti ir skaityti duomenis naudodami savo programavimo kalbą, galite parašyti žiniatinklio serverio programą. Be įvesties ir išvesties analizavimo, CGI programų programavimas beveik prilygsta bet kurios kitos programos programavimui. Pavyzdžiui, norėdami užprogramuoti programą „Sveikas, pasauli“, naudokite savo kalbos spausdinimo funkcijas ir CGI programoms nustatytą formatą, kad išspausdintumėte atitinkamą pranešimą.

Programavimo kalbos pasirinkimas

Kadangi CGI yra universali sąsaja, jūs neapsiribojate jokia konkrečia mašinos kalba. Svarbus dažnai užduodamas klausimas: kokias programavimo kalbas galima naudoti CGI programavimui? Galite naudoti bet kurią kalbą, kuri leidžia atlikti šiuos veiksmus:

  • Spausdinti į standartinę išvestį
  • Skaityti iš standartinės įvesties
  • Skaityti iš kintamųjų režimų

Beveik visos programavimo kalbos ir daugelis scenarijų kalbų atlieka šiuos tris dalykus, ir jūs galite naudoti bet kurį iš jų.

Kalbos priskiriamos vienai iš šių dviejų klasių: vertimų ir vertimų. Išversta kalba, pvz., C arba C++, paprastai yra mažesnė ir greitesnė, o verčiamoms kalboms, tokioms kaip Perl arba Rexx, kartais paleidžiant reikia įkelti didelį vertėją. Be to, galite platinti dvejetainius kodus (kodą, kuris verčiamas į mašinos kalbą) be šaltinio kodo, jei jūsų kalba yra verčiama. Interpretuojamų scenarijų platinimas paprastai reiškia šaltinio kodo platinimą.

Prieš rinkdamiesi kalbą, pirmiausia turite apsvarstyti savo prioritetus. Turite pasverti vienos programavimo kalbos greičio ir efektyvumo naudą su kitos programavimo paprastumu. Jei norite išmokti kitą kalbą, užuot vartoję tą, kurią jau mokate, atidžiai pasverkite abiejų kalbų privalumus ir trūkumus.

Dvi dažniausiai naudojamos CGI programavimo kalbos yra C ir Perl (abu aptariamos šioje knygoje). Abu turi aiškių privalumų ir trūkumų. Perl yra labai aukšto lygio kalba ir tuo pačiu galinga kalba, ypač tinkama tekstui analizuoti. Nors dėl naudojimo paprastumo, lankstumo ir galios ji yra patraukli CGI programavimo kalba, dėl santykinai didelio dydžio ir lėtesnio veikimo ji kartais tampa netinkama kai kurioms programoms. C programos yra mažesnės, efektyvesnės ir užtikrina žemesnio lygio sistemos valdymą, tačiau jas sudėtingiau programuoti, jose nėra lengvų integruotų teksto apdorojimo procedūrų ir jas sunkiau derinti.

Kuri kalba labiausiai tinka CGI programavimui? Tą, kurį laikote patogesniu programavimo požiūriu. Abi yra vienodai veiksmingos programuojant CGI programas, o su tinkamomis bibliotekomis abi turi panašias galimybes. Tačiau jei turite sunkiai pasiekiamą serverį, galite naudoti mažesnes, išverstas C programas.

Įspėjimai

Yra keletas svarbių CGI programų alternatyvų. Daugelyje serverių dabar yra API programavimas, todėl lengviau programuoti tiesioginius serverio plėtinius, o ne atskiras CGI programas. API serveriai paprastai yra efektyvesni nei CGI programos. Kiti serveriai turi integruotas funkcijas, kurios gali apdoroti specialius ne CGI elementus, pvz., duomenų bazių susiejimą. Galiausiai, kai kurias programas galima valdyti naudojant kai kurias naujas kliento (o ne serverio) technologijas, pvz., „Java“. Ar dėl tokių sparčių technologijų pokyčių CGI greitai pasens?

Vargu ar. CGI turi keletą pranašumų, palyginti su naujesnėmis technologijomis.

  • Jis yra universalus ir nešiojamas. Galite rašyti CGI programą naudodami beveik bet kurią programavimo kalbą bet kurioje platformoje. Kai kurios alternatyvos, pvz., serverio API, apsiriboja tam tikromis kalbomis ir yra daug sunkiau išmokstamos.
  • Mažai tikėtina, kad kliento pusės technologijos, tokios kaip „Java“, pakeis CGI, nes yra kai kurių programų, kurias paleisti serverio programos yra daug geriau pritaikytos.
  • Daugelis CGI apribojimų yra HTML arba HTTP apribojimai. Tobulėjant interneto standartams, tobulėja ir CGI galimybės.

Santrauka

Bendroji šliuzo sąsaja yra protokolas, kuriuo programos sąveikauja su žiniatinklio serveriais. CGI universalumas suteikia programuotojams galimybę rašyti šliuzo programas beveik bet kuria kalba, nors yra daug kompromisų, susijusių su skirtingomis kalbomis. Be šios galimybės interaktyvių interneto puslapių kūrimas būtų sudėtingas, geriausiu atveju prireiktų serverio modifikacijų, o interaktyvumas būtų nepasiekiamas daugumai vartotojų, kurie nėra svetainės administratoriai.

2 skyrius: Pagrindai

Prieš keletą metų sukūriau puslapį Harvardo koledžui, kuriame žmonės galėtų pateikti pastabų apie juos. Tuo metu internetas buvo jaunas, o dokumentų trūko. Aš, kaip ir daugelis kitų, mokydamasis CGI programavimo rėmiausi trumpa dokumentacija ir kitų sukurtomis programavimo sistemomis. Nors šis tyrimo metodas pareikalavo šiek tiek paieškų, daug eksperimentų ir sukėlė daug klausimų, jis buvo labai efektyvus. Šis skyrius yra mano ankstyvojo darbo su CGI rezultatas (žinoma, su keliais pataisymais).

Nors užtrunka šiek tiek laiko, kol visiškai suprasite ir įsisavinsite bendrą šliuzo sąsają, pats protokolas yra gana paprastas. Kiekvienas, turintis keletą pagrindinių programavimo įgūdžių ir susipažinęs su žiniatinkliu, gali greitai išmokti programuoti gana sudėtingas CGI programas, kaip aš ir kiti išmokome daryti prieš keletą metų.

Šio skyriaus tikslas – visapusiškai, nors ir glaustai, pateikti CGI pagrindus. Kiekviena čia aptarta sąvoka išsamiai pristatoma tolesniuose skyriuose. Tačiau baigę šį skyrių galite iš karto pradėti programuoti CGI programas. Kai pasieksite šį lygį, galėsite išmokti CGI subtilybių skaitydami likusią šios knygos dalį arba tiesiog eksperimentuodami patys.

CGI programavimą galite suskirstyti į dvi užduotis: gauti informaciją iš žiniatinklio naršyklės ir siųsti informaciją atgal į naršyklę. Tai daroma gana intuityviai, kai susipažįstate su įprastu CGI programų naudojimu. Dažnai vartotojo prašoma užpildyti kokią nors formą, pavyzdžiui, įrašyti savo vardą. Kai vartotojas užpildo formą ir paspaudžia Enter, ši informacija siunčiama į CGI programą. Tada CGI programa turi konvertuoti šią informaciją į ką nors jai suprantamą, atitinkamai ją apdoroti ir išsiųsti atgal į naršyklę, nesvarbu, ar tai paprastas patvirtinimas, ar paieškos daugiafunkcėje duomenų bazėje rezultatas.

Kitaip tariant, programuojant CGI reikia suprasti, kaip gauti įvestį iš interneto naršyklės ir kaip išsiųsti išvestį atgal. Tai, kas vyksta tarp CGI programos įvesties ir išvesties etapų, priklauso nuo kūrėjo tikslo. Pamatysite, kad pagrindinis CGI programavimo sunkumas slypi šiame tarpiniame etape; Kai išmoksite dirbti su įvestimi ir išvestimi, to iš esmės pakanka, kad taptumėte CGI kūrėju.

Šiame skyriuje sužinosite CGI įvesties ir išvesties principus, taip pat kitų pagrindinių įgūdžių, kurių jums prireiks rašant ir naudojant CGI, įskaitant tokius dalykus kaip HTML formų kūrimas ir CGI programų pavadinimų suteikimas. Šiame skyriuje aptariamos šios temos:

  • Tradicinė programa „Sveikas, pasauli!“;
  • CGI išvestis: informacijos siuntimas atgal, kad būtų rodomas interneto naršyklėje;
  • Programos konfigūravimas, diegimas ir paleidimas. Sužinosite apie įvairias interneto platformas ir serverius;
  • CGI įvestis: žiniatinklio naršyklės siunčiamos informacijos interpretavimas. Įvadas į keletą naudingų programavimo bibliotekų, skirtų tokiai įvesties analizei;
  • Paprastas pavyzdys: jis apima visas tam tikro skyriaus pamokas;
  • Programavimo strategija.

Dėl šio skyriaus pobūdžio aš paliečiu tik kai kurias temas. Nesijaudink; Visos šios temos yra išsamiau aptariamos kituose skyriuose.

Labas pasauli!

Pradedate nuo tradicinės įvadinės programavimo problemos. Parašysite programą, kuri parodys "Sveikas, pasauli!" savo interneto naršyklėje. Prieš rašydami šią programą, turite suprasti, kokią informaciją žiniatinklio naršyklė tikisi gauti iš CGI programų. Taip pat turite žinoti, kaip paleisti šią programą, kad galėtumėte pamatyti, kaip ji veikia.

CGI yra nepriklausoma nuo kalbos, todėl šią programą galite įdiegti bet kuria kalba. Čia naudojamos kelios skirtingos kalbos, kad būtų parodytas kiekvienos kalbos nepriklausomumas. Perle programa „Sveikas, pasauli“. parodyta sąraše 2.1.

Sąrašas 2.1. Labas pasauli! Perl. #!/usr/local/bin/perl # Hello.cgi – mano pirmasis CGI programos spausdinimas "Content-Type: text/html\n\n"; spausdinti" \n"; spausdinti " Labas pasauli!"; spausdinti"\n"; spausdinti " \n"; spausdinti "

Labas pasauli!

\n"; spausdinti " \n";

Išsaugokite šią programą kaip hello.cgi ir įdiekite ją tinkamoje vietoje. (Jei nesate tikri, kur ji yra, nesijaudinkite; tai sužinosite toliau šio skyriaus skyriuje „CGI programos diegimas ir vykdymas“.) Daugumoje serverių jums reikalingas katalogas yra cgi-bin . Dabar iškvieskite programą iš savo interneto naršyklės. Daugumai tai reiškia, kad reikia atidaryti šį vienodą išteklių ieškiklį (URL):

http://hostname/directoryname/hello.cgi

Pagrindinio kompiuterio pavadinimas yra jūsų žiniatinklio serverio pavadinimas, o katalogo pavadinimas yra katalogas, kuriame įdėjote hello.cgi (tikriausiai cgi-bin).

Skaldomas labas.cgi

Apie hello.cgi reikia atkreipti dėmesį į keletą dalykų.

Pirma, naudokite paprastas spausdinimo komandas. CGI programoms nereikia jokių specialių failų deskriptorių ar išvesties deskriptorių. Norėdami išsiųsti išvestį į naršyklę, tiesiog spausdinkite į stdout.

Antra, atkreipkite dėmesį, kad pirmojo spausdinimo teiginio turinys (turinio tipas: tekstas/html) nerodomas jūsų žiniatinklio naršyklėje. Galite siųsti bet kokią norimą informaciją atgal į naršyklę (HTML puslapį, grafiką ar garsą), bet pirmiausia turite nurodyti naršyklei, kokius duomenis jai siunčiate. Ši eilutė nurodo naršyklei, kokios informacijos galima tikėtis tokiu atveju, HTML puslapis.

Trečia, programa vadinama hello.cgi. Ne visada reikia naudoti .cgi plėtinį su savo CGI programos pavadinimu. Nors daugelio kalbų šaltinio kode taip pat naudojamas .cgi plėtinys, jis nenaudojamas kalbos tipui nurodyti, bet yra būdas serveriui identifikuoti failą kaip vykdomąjį failą, o ne kaip grafikos failą, HTML failą ar tekstinis failas. Serveriai dažnai sukonfigūruojami taip, kad bandytų vykdyti tik tuos failus, kurie turi šį plėtinį, rodydami visų kitų turinį. Nors plėtinio .cgi naudoti nereikia, tai vis tiek laikoma gera praktika.

Apskritai hello.cgi susideda iš dviejų pagrindinių dalių:

  • nurodo naršyklei, kokios informacijos galima tikėtis (turinio tipas: tekstas/html)
  • nurodo naršyklei, ką rodyti (Sveikas, pasauli!)

Labas pasauli! C

Kad būtų parodytas CGI programų kalbos nepriklausomumas, 2.2 sąraše rodomas hello.cgi programos, parašytos C, atitikmuo.

Sąrašas 2.2. Labas pasauli! C. /* hello.cgi.c – Sveiki, pasaulis CGI */ #include int main() ( printf("Turinio tipas: text/html\r\n\r\n"); printf(" \n"); printf(" Labas pasauli!\n"); printf("\n"); printf(" \n"); printf("

Labas pasauli!

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

Pastaba

Atminkite, kad hello.cgi Perl versija naudoja turinio tipo spausdinimą ": text/html\n\n "; Nors C versija naudoja Printf ("Turinio tipas: text/html\r\n\r\n");

Kodėl „Perl“ spausdina operatorių dviem naujomis eilutėmis (\n), o C printf baigiasi dviem karietos grįžimais ir naujomis eilutėmis (\r\n)?

Techniškai tikimasi, kad antraštės (visos išvesties prieš tuščią eilutę) bus atskirtos karietos grąžinimu ir naujomis eilutėmis. Deja, DOS ir Windows kompiuteriuose Perl verčia \r kaip kitą naują eilutę, o ne kaip vežimo grąžinimą.

Nors Perl išimtis yra techniškai neteisinga, ji veiks beveik visuose protokoluose ir yra vienodai nešiojama visose platformose. Todėl visuose šios knygos „Perl“ pavyzdžiuose naudoju naujas eilutes skiriančias antraštes, o ne karietos grąžinimus ir naujas eilutes.

Tinkamas šios problemos sprendimas pateiktas 4 skyriuje „Išvada“.

Nei žiniatinklio serveriui, nei naršyklei nerūpi, kokia kalba rašoma programa. Nors kiekviena kalba turi privalumų ir trūkumų kaip CGI programavimo kalba, geriausia naudoti tą kalbą, su kuria dirbti jums patogiausia. (Programavimo kalbos pasirinkimas plačiau aptartas 1 skyriuje „Bendra šliuzo sąsaja (CGI)“).

CGI atvaizdavimas

Dabar galite atidžiau pažvelgti į informacijos siuntimo į interneto naršyklę problemą. Pavyzdyje „Sveikas, pasauli“ matote, kad žiniatinklio naršyklės tikisi dviejų duomenų rinkinių: antraštės, kurioje yra tokia informacija, kaip rodoma informacija (pvz., turinio tipas: eilutė) ir faktinė informacija (kokia žiniatinklio naršyklė! ekranai). Šios dvi informacijos dalys yra atskirtos tuščia eilute.

Antraštė vadinama HTTP antrašte. Jame pateikiama svarbi informacija apie informaciją, kurią gaus naršyklė. Yra keletas skirtingų HTTP antraščių tipų, o labiausiai paplitusi yra ta, kurią naudojote anksčiau: Turinio tipas: antraštė. Galite naudoti skirtingus HTTP antraščių derinius, atskirtus karietos grąžinimu ir naujomis eilutėmis (\r\n). Tuščią eilutę, skiriančią antraštę nuo duomenų, taip pat sudaro vežimo grąžinimas ir nauja eilutė (kodėl reikalingos abi, trumpai aptarta ankstesnėje pastaboje ir išsamiai aprašyta 4 skyriuje). Apie kitas HTTP antraštes sužinosite 4 skyriuje; Šiuo metu jūs susiduriate su turinio tipu: antrašte.

Turinio tipas: antraštė apibūdina duomenų, kuriuos grąžina CGI, tipą. Tinkamas šios antraštės formatas:

Turinio tipas: potipis/tipas

Kur potipis / tipas yra tinkamas daugiafunkcinio interneto pašto plėtinių (MIME) tipas. Labiausiai paplitęs MIME tipas yra HTML tipas: text/html. 2.1 lentelėje išvardyti dar keli įprasti MIME tipai, kurie bus aptarti; Išsamesnis MIME tipų sąrašas ir analizė pateikta 4 skyriuje.

Pastaba

MIME iš pradžių buvo sukurtas apibūdinti pašto pranešimų turinį. Tai tapo gana įprastu būdu pateikti turinio tipo informaciją. Daugiau apie MIME galite perskaityti RFC1521. RFC internete reiškia užklausas dėl komentarų, kurios yra sprendimų, kuriuos priima grupės internete, bandančios nustatyti standartus, santraukos. RFC1521 rezultatus galite peržiūrėti šiuo adresu: http://andrew2.andrew.cmu.edu/rfc/rfc1521.html

2.1 lentelė. Kai kurie paplitę tipai MIME. MIME tipas Aprašymas Teksto/html Hiperteksto žymėjimo kalba (HTML) Tekstas/paprastas teksto failai Vaizdas/gif Grafiniai failai GIF Vaizdas/jpeg Suspausti grafiniai failai JPEG Garso/pagrindiniai garso failai Sun *.au Audio/x-wav Windows failai *

Po antraštės ir tuščios eilutės tiesiog išspausdinkite duomenis reikiama forma. Jei siunčiate HTML, po antraštės atspausdinkite HTML žymas ir duomenis į stdout. Taip pat galite siųsti grafikos, garso ir kitus dvejetainius failus tiesiog atspausdindami failo turinį į stdout. Keli to pavyzdžiai pateikti 4 skyriuje.

CGI programos diegimas ir paleidimas

Šis skyrius šiek tiek nukrypsta nuo CGI programavimo ir kalba apie tinklo serverio konfigūravimą naudoti CGI, programų diegimą ir paleidimą. Daugiau ar mažiau išsamiai susipažinsite su skirtingais serveriais skirtingoms platformoms, tačiau norėdami rasti geriausią variantą, turėsite įsigilinti į savo serverio dokumentus.

Visiems serveriams reikia vietos serverio failams ir vietos HTML dokumentams. Šioje knygoje serverio sritis vadinama ServerRoot, o dokumentų sritis – DocumentRoot. UNIX įrenginiuose ServerRoot paprastai yra /usr/local/etc/httpd/, o DocumentRoot paprastai yra /usr/local/etc/httpd/htdocs/. Tačiau tai neturės įtakos jūsų sistemai, todėl visas nuorodas į ServerRoot ir DocumentRoot pakeiskite savo ServerRoot ir DocumentRoot.

Kai pasiekiate failus naudodami žiniatinklio naršyklę, nurodykite failą URL, susijusį su DocumentRoot. Pavyzdžiui, jei jūsų serverio adresas yra mymachine.org, tada šį failą pasieksite naudodami šį URL: http://mymachine.org/index.html

CGI serverio konfigūravimas

Dauguma žiniatinklio serverių yra iš anksto sukonfigūruoti, kad būtų galima naudoti CGI programas. Paprastai du parametrai nurodo serveriui, ar failas yra CGI programa, ar ne:

  • Paskirtas katalogas. Kai kurie serveriai leidžia nustatyti, kad visi failai nurodytame kataloge (paprastai pagal numatytuosius nustatymus vadinami cgi-bin) yra CGI.
  • Failų vardų plėtiniai. Daugelis serverių turi tokią išankstinę konfigūraciją, leidžiančią visus failus, kurie baigiasi .cgi, apibrėžti kaip CGI.

Paskirtojo katalogo metodas yra praeities reliktas (patys pirmieji serveriai jį naudojo kaip vienintelį būdą nustatyti, kurie failai yra CGI programos), tačiau jis turi keletą privalumų.

  • Ji palaiko CGI programas centralizuotas, neleidžiant kitiems katalogams tapti netvarkingiems.
  • Jūs neapsiribojate jokiu konkrečiu failo vardo plėtiniu, todėl galite pavadinti failus kaip tik norite. Kai kurie serveriai leidžia priskirti kelis skirtingus katalogus kaip CGI katalogus.
  • Tai taip pat suteikia daugiau galimybių valdyti, kas gali įrašyti CGI. Pavyzdžiui, jei turite serverį ir palaikote sistemą su keliais vartotojais ir nenorite, kad jie naudotų savo CGI scenarijus, prieš tai neaudituodami programos saugumo sumetimais, galite priskirti tik tuos failus ribotame centralizuotame kataloge kaip CGI. . Tada vartotojai turės pateikti jums įdiegtas CGI programas, o pirmiausia galite patikrinti kodą, kad įsitikintumėte, jog programa neturi didelių saugos problemų.

CGI žymėjimas naudojant failo pavadinimo plėtinį gali būti naudingas dėl savo lankstumo. Jūs neapsiribojate vienu CGI programų katalogu. Daugumą serverių galima sukonfigūruoti atpažinti CGI naudojant failo pavadinimo plėtinį, nors pagal numatytuosius nustatymus ne visi taip sukonfigūruoti.

Įspėjimas

Prisiminkite saugos problemų svarbą, kai konfigūruojate serverį CGI. Kai kurie patarimai bus aptarti čia, o 9 skyriuje „CGI apsauga“ šie aspektai aprašyti išsamiau.

CGI diegimas UNIX serveriuose

Nepriklausomai nuo to, kaip sukonfigūruotas jūsų UNIX serveris, turite atlikti kelis veiksmus, kad įsitikintumėte, jog jūsų CGI programos veikia taip, kaip tikėtasi. Jūsų žiniatinklio serveris paprastai veiks kaip neegzistuojantis vartotojas (ty UNIX vartotojas niekas – paskyra, kuri neturi failų teisių ir negali būti prisijungusi). CGI scenarijai (parašyti Perl, Bourne apvalkalu ar kita scenarijų kalba) turi būti vykdomi ir skaitomi visame pasaulyje.

Užuomina

Norėdami, kad jūsų failai būtų visame pasaulyje skaitomi ir vykdomi, naudokite šią UNIX leidimų komandą: chmod 755 failo pavadinimas.

Jei naudojate scenarijų kalbą, pvz., Perl arba Tcl, pirmoje scenarijaus eilutėje nurodykite visą vertėjo kelią. Pavyzdžiui, Perl scenarijus, naudojant perl kataloge /usr/local/bin, prasidėtų šia eilute:

#!/usr/local/bin/perl

Įspėjimas

Niekada nedėkite interpretatoriaus (perl arba Tcl Wish) į /cgi-bin katalogą. Tai kelia pavojų jūsų sistemai apie tai išsamiau.

Kai kurie bendrieji UNIX serveriai

NCSA ir Apache serveriai turi panašius konfigūracijos failus, nes Apache serveris iš pradžių buvo pagrįstas NCSA kodu. Pagal numatytuosius nustatymus jie sukonfigūruoti taip, kad bet kuris failas cgi-bin kataloge (pagal numatytuosius nustatymus esantis ServerRoot) būtų CGI programa. Norėdami pakeisti cgi-bin katalogo vietą, galite redaguoti conf/srm.conf konfigūracijos failą. Šio katalogo konfigūravimo formatas yra

ScriptAlias ​​​​fakedirectoryname realdirectoryname

kur fakedirectoryname yra pseudokatalogo pavadinimas (/cgi-bin), o realdirectoryname yra visas kelias, kuriame iš tikrųjų saugomos CGI programos. Galite sukonfigūruoti daugiau nei vieną „ScriptAlias“ pridėdami daugiau „ScriptAlias“ eilučių.

Numatytoji konfigūracija yra pakankama daugeliui vartotojų poreikių. Bet kuriuo atveju turite redaguoti srm.conf failo eilutę, kad nustatytumėte teisingą tikrojo katalogo pavadinimą. Pavyzdžiui, jei jūsų CGI programos yra /usr/local/etc/httpd/cgi-bin, jūsų srm.conf failo „ScriptAlias“ eilutė turėtų būti maždaug tokia:

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

Norėdami pasiekti arba susieti CGI programas, esančias šiame kataloge, naudokite šį URL:

Http://hostname/cgi-bin/programname

Kur pagrindinio kompiuterio pavadinimas yra jūsų žiniatinklio serverio pagrindinio kompiuterio pavadinimas, o programos pavadinimas yra jūsų CGI pavadinimas.

Pavyzdžiui, tarkime, kad nukopijavote programą hello.cgi į savo cgi-bin katalogą (pvz., /usr/local/etc/httpd/cgi-bin) savo žiniatinklio serveryje www.company.com. Norėdami pasiekti savo CGI, naudokite šį URL: http://www.company.com/cgi-bin/hello.cgi

Jei norite sukonfigūruoti savo NCSA arba Apache serverį, kad atpažintų bet kurį failą su .cgi plėtiniu kaip CGI, turite redaguoti du konfigūracijos failus. Pirmiausia faile srm.conf panaikinkite šios eilutės komentarą:

AddType application/x-httpd-cgi .cgi

Tai susies MIME tipo CGI su .cgi plėtiniu. Dabar turime pakeisti failą access.conf, kad galėtume paleisti CGI bet kuriame kataloge. Norėdami tai padaryti, įtraukite ExecCGI parinktį į parinkčių eilutę. Tai atrodys panašiai kaip ši eilutė:

Parinkčių indeksai FollowSymLinks ExecCGI

Dabar bet koks failas su plėtiniu .cgi laikomas CGI; prieiti prie jo kaip prie bet kurio failo savo serveryje.

CERN serveris sukonfigūruojamas taip pat, kaip ir Apache ir NCSA serveriai. Vietoj ScriptAlias ​​CERN serveris naudoja komandą Exec. Pavyzdžiui, faile httpd.conf pamatysite šią eilutę:

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

Kiti UNIX serveriai gali būti konfigūruojami tokiu pačiu būdu; Tai išsamiau aprašyta serverio dokumentacijoje.

CGI diegimas sistemoje „Windows“.

Dauguma serverių, skirtų „Windows 3.1“, „Windows 95“ ir „Windows NT“, yra sukonfigūruoti naudojant „failo vardo plėtinio“ metodą CGI atpažinimui. Apskritai, norint pakeisti „Windows“ serverio konfigūraciją, tiesiog reikia paleisti serverio konfigūravimo programą ir atlikti atitinkamus pakeitimus.

Kartais gali būti sunku sukonfigūruoti serverį, kad jis tinkamai paleistų scenarijų (pvz., Perl). DOS arba Windows sistemoje negalėsite nurodyti vertėjo pirmoje scenarijaus eilutėje, kaip tai daroma UNIX atveju. Kai kurie serveriai turi iš anksto nustatytą konfigūraciją, leidžiančią susieti tam tikrus failų vardų plėtinius su vertėju. Pavyzdžiui, daugelis „Windows“ žiniatinklio serverių daro prielaidą, kad failai, kurie baigiasi .pl, yra „Perl“ scenarijai.

Jei serveris nevykdo šio tipo failų susiejimo, galite apibrėžti paketo paketinį failą, kuris iškviečia ir interpretatorių, ir scenarijų. Kaip ir UNIX serveryje, neįdiekite vertėjo nei cgi-bin kataloge, nei bet kuriame žiniatinklio pasiekiamame kataloge.

CGI diegimas „Macintosh“.

Dvi labiausiai žinomos „Macintosh“ serverio parinktys yra „WebStar StarNine“ ir jos pirmtakas „MacHTTP“. Abu atpažįsta CGI pagal failo vardo plėtinį.

MacHTTP supranta du skirtingus plėtinius: .cgi ir .acgi, kuris reiškia asinchroninį CGI. Įprastos CGI programos, įdiegtos „Macintosh“ kompiuteryje (su plėtiniu .cgi), žiniatinklio serveris bus užimtas, kol CGI baigs veikti, todėl serveris sustabdys visas kitas užklausas. Kita vertus, asinchroninis CGI leidžia serveriui priimti užklausas net jam veikiant.

CGI Macintosh kūrėjas, naudojantis bet kurį iš šių žiniatinklio serverių, jei įmanoma, turėtų naudoti tik .acgi plėtinį, o ne .cgi plėtinį. Jis turėtų veikti su dauguma CGI programų; jei neveikia, pervardykite programą į .cgi.

Vykdomas CGI

Įdiegę CGI, yra keli būdai jį vykdyti. Jei jūsų CGI programa yra tik išvesties programa, pvz., programa Hello,World, galite ją vykdyti tiesiog pasiekę jos URL.

Dauguma programų veikia kaip serverio programa HTML formoje. Prieš išmokdami gauti informaciją iš šių formų, pirmiausia perskaitykite trumpą įvadą apie tokių formų kūrimą.

Greita pamoka apie HTML formas

Dvi svarbiausios žymos HTML formoje yra

Ir . Daugumą HTML formų galite sukurti naudodami tik šias dvi žymas. Šiame skyriuje išnagrinėsite šias žymas ir nedidelį galimų tipų ar atributų poaibį. . Išsamus vadovas ir nuoroda į HTML formas yra 3 skyriuje „HTML ir formos“.

Žyma

Žyma naudojamas norint nustatyti, kuri HTML failo dalis turi būti naudojama vartotojo įvestai informacijai. Tai reiškia, kaip dauguma HTML puslapių vadina CGI programą. Žymos atributai nurodo programos pavadinimą ir vietą – lokaliai arba kaip visą URL, naudojamą kodavimo tipą ir programos naudojamą duomenų judėjimo metodą.

Kitoje eilutėje rodomos žymos specifikacijos :

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

Atributas ENCTYPE neatlieka ypatingo vaidmens ir paprastai nėra įtrauktas į žymą . Išsami informacija apie ENCTYPE žymą pateikta 3 skyriuje. Vienas iš ENCTYPE naudojimo būdų parodytas 14 skyriuje „Prekės ženklo plėtiniai“.

Atributas ACTION nurodo CGI programos URL. Vartotojui užpildžius formą ir pateikus informaciją, visa informacija užkoduojama ir perkeliama į CGI programą. Pati CGI programa išsprendžia informacijos dekodavimo ir apdorojimo problemą; Šis aspektas aptariamas toliau šiame skyriuje „Įvesties iš naršyklės priėmimas“.

Galiausiai atributas METHOD aprašo, kaip CGI programa turėtų gauti įvestį. Du metodai, GET ir POST, skiriasi tuo, kaip jie perduoda informaciją CGI programai. Abu yra aptariami „Įvesties iš naršyklės priėmimas“.

Kad naršyklė leistų vartotojui įvesti, visos formos žymos ir informacija turi būti apsupta žyma . Nepamirškite uždarymo žymos

kad būtų nurodyta formos pabaiga. Formoje negalite turėti formos, tačiau galite nustatyti formą, kuri leistų pateikti informacijos dalis įvairios vietos; šis aspektas plačiai aptariamas 3 skyriuje.

Žyma

Naudodami žymą galite sukurti teksto įvesties juostas, radijo mygtukus, žymimuosius langelius ir kitus būdus priimti įvestį . Šis skyrius apima tik teksto įvesties laukus. Norėdami įgyvendinti šį lauką, naudokite žymą su šiais atributais:

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

NAME yra simbolinis kintamojo, kuriame yra vartotojo įvesta reikšmė, pavadinimas. Jei įtrauksite tekstą į atributą VALUE, tas tekstas bus kaip numatytasis teksto įvesties lauke. Atributas SIZE leidžia nurodyti horizontalų įvesties lauko ilgį, kuris bus rodomas naršyklės lange. Galiausiai MAXLENGTH nurodo maksimalų simbolių skaičių, kurį vartotojas gali įvesti į lauką. Atminkite, kad atributai VALUE, SIZE, MAXLENGTH yra neprivalomi.

Formos pateikimas

Jei formoje turite tik vieną teksto lauką, vartotojas gali pateikti formą tiesiog įvesdamas informaciją klaviatūra ir paspausdamas Enter. Priešingu atveju vartotojas turi turėti kitą būdą pateikti informaciją. Vartotojas pateikia informaciją naudodamas pateikimo mygtuką su šia žyma:

< Input type=submit >

Ši žyma formoje sukuria mygtuką Pateikti. Vartotojas, baigęs pildyti formą, gali pateikti jos turinį URL, nurodytu formos atributu ACTION, spustelėdamas mygtuką Pateikti.

Priimama įvestis iš naršyklės

Aukščiau pateikti pavyzdžiai, kaip įrašyti CGI programą, kuri siunčia informaciją iš serverio į naršyklę. Iš tikrųjų CGI programa, kuri tik išveda duomenis, neturi daug taikomųjų programų (kai kurie pavyzdžiai pateikti 4 skyriuje). Svarbesnė CGI galimybė yra gauti informaciją iš naršyklės – tai funkcija, suteikianti žiniatinkliui interaktyvų pobūdį.

CGI programa iš naršyklės gauna dviejų tipų informaciją.

  • Pirma, ji gauna įvairios informacijos apie naršyklę (jos tipą, ką ji gali peržiūrėti, pagrindinį pagrindinį kompiuterį ir pan.), serverį (jo pavadinimą ir versiją, vykdymo prievadą ir pan.) ir CGI programą. pati (programos pavadinimas ir kur ji yra). Serveris visą šią informaciją perduoda CGI programai per aplinkos kintamuosius.
  • Antra, CGI programa gali priimti vartotojo įvestį. Ši informacija, užkoduota naršyklės, siunčiama per aplinkos kintamąjį (GET metodas) arba per standartinę įvestį (stdin – POST metodas).

aplinkos įvairovė

Naudinga žinoti, kokie aplinkos kintamieji yra prieinami CGI programai tiek mokymo metu, tiek derinant. 2.2 lentelėje išvardyti kai kurie galimi CGI aplinkos kintamieji. Taip pat galite parašyti CGI programą, kuri išveda aplinkos kintamuosius ir jų reikšmes į žiniatinklio naršyklę.

2.2 lentelė. Kai kurie svarbūs CGI aplinkos kintamieji Aplinkos kintamasis Paskirtis REMOTE_ADDR kliento įrenginio IP adresas. REMOTE_HOST Kliento įrenginio priegloba. HTTP _ACCEPT Išvardija MIME duomenų tipus, kuriuos naršyklė gali interpretuoti. HTTP _USER_AGENT Naršyklės informacija (naršyklės tipas, versijos numeris, operacinė sistema ir kt.). REQUEST_METHOD GAUTI arba POST. CONTENT_LENGTH Įvesties dydis, jei siunčiama naudojant POST. Jei nėra įvesties arba naudojamas GET metodas, šis parametras neapibrėžtas. QUERY_STRING Yra įvesties informacija, kai ji perduodama naudojant GET metodą. PATH_INFO Leidžia vartotojui nurodyti kelią iš komandinė eilutė CGI (pavyzdžiui, http://hostname/cgi-bin/programname/path). PATH_TRANSLATED Išverčia santykinį kelią PATH_INFO į tikrąjį kelią sistemoje.

Norėdami parašyti CGI programą, kuri rodo aplinkos kintamuosius, turite žinoti, kaip atlikti du dalykus:

  • Apibrėžkite visus aplinkos kintamuosius ir atitinkamas jų reikšmes.
  • Spausdinkite rezultatus naršyklėje.

Jūs jau žinote, kaip atlikti paskutinę operaciją. Perl aplinkoje aplinkos kintamieji saugomi asociatyviame masyve %ENV, kuris įvedamas aplinkos kintamojo pavadinimu. 2.3 sąraše yra env.cgi, Perl programa, kuri pasiekia mūsų tikslą.

Sąrašas 2.3. Perl programa, env.cgi, spausdinanti visus CGI aplinkos kintamuosius.

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

CGI aplinka

\n"; foreach $env_var (raktai %ENV) ( spausdinti " $env_var= $ENV($env_var)
\n"; ) spausdinti " \n";

Panaši programa gali būti parašyta C; Visas kodas yra 2.4 sąraše.

Sąrašas 2.4. Env.cgi.c C. /* env.cgi.c */ #include išorinė char **aplinka; int main() ( char **p = aplinka; printf("Turinio tipas: text/html\r\n\r\n"); printf(" \n"); printf(" CGI aplinka\n"); printf("\n"); printf(" \n"); printf("

CGI aplinka

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

GAUTI ar PASIsiųsti?

Kuo skiriasi GET ir POST metodai? GET perduoda užkoduotą įvesties eilutę per aplinkos kintamąjį QUERY_STRING, o POST perduoda ją per stdin. POST yra tinkamiausias metodas, ypač formoms su didelė suma duomenis, nes siunčiamos informacijos kiekiui apribojimų nėra, o naudojant GET metodą ribojamas medijos plotas. Tačiau GET turi tam tikrą naudingą savybę; tai išsamiai aprašyta 5 skyriuje „Įvestis“.

Kad nustatytų, kuris metodas naudojamas, CGI programa patikrina aplinkos kintamąjį REQUEST_METHOD, kuris bus nustatytas į GET arba POST. Jei nustatyta į POST, užkoduotos informacijos ilgis saugomas CONTENT_LENGTH aplinkos kintamajame.

Užkoduota įvestis

Kai vartotojas pateikia formą, naršyklė pirmiausia užkoduoja informaciją prieš siųsdama ją į serverį, o tada į CGI programą. Kai naudojate žymą , kiekvienam laukui suteikiamas simbolinis pavadinimas. Vartotojo įvesta reikšmė pateikiama kaip kintamojo reikšmė.

Norėdami tai nustatyti, naršyklė naudoja URL kodavimo specifikaciją, kurią galima apibūdinti taip:

  • Skirtingus laukus atskiria ampersandu (&).
  • Atskiria pavadinimą ir reikšmes lygybės ženklais (=), kai pavadinimas yra kairėje ir reikšmė dešinėje.
  • Tarpus pakeičia pliuso ženklais (+).
  • Pakeičia visus „nenormalius“ simbolius procento ženklu (%), po kurio nurodomas dviženklis šešioliktainis simbolio kodas.

Jūsų galutinė užkoduota eilutė bus panaši į šią:

Name1=value1&name2=value2&name3=value3...

Pastaba: URL kodavimo specifikacijos pateiktos RFC1738.

Pavyzdžiui, tarkime, kad turite formą, kurioje buvo prašoma įvesti vardą ir amžių. HTML kodas, kuris buvo naudojamas šiai formai rodyti, rodomas 2.5 sąraše.

Sąrašas 2.5. HTML kodas, skirtas vardo ir amžiaus formai rodyti.

Vardas ir amžius

Įveskite savo vardą:

Įveskite savo amžių:

Tarkime, vartotojas vardo laukelyje įveda Joe Schmoe, o amžiaus lauke – 20. Įvestis bus užkoduota įvesties eilutėje.

Vardas=Joe+Schmoe&age=20

Nagrinėjama įvestis

Kad ši informacija būtų naudinga, turite naudoti informaciją apie ką nors, ką gali naudoti jūsų CGI programos. Įvesties analizės strategijos aprašytos 5 skyriuje. Praktiškai jums niekada nereikės galvoti, kaip analizuoti įvestį, nes keli ekspertai jau yra sukūrę bibliotekas, kurios atlieka analizę ir yra prieinamos visiems. Dvi tokios bibliotekos pateikiamos šiame skyriuje šiuose skyriuose: cgi -lib.pl skirta Perl (parašė Steve Brenner) ir cgihtml, skirta C (parašė aš).

Bendroji daugelio bibliotekų paskirtis įvairių kalbų, yra išanalizuoti užkoduotą eilutę ir įdėti pavadinimo ir reikšmių poras į duomenų struktūrą. Yra akivaizdus pranašumas naudojant kalbą, kuri turi integruotas duomenų struktūras, tokias kaip Perl; tačiau dauguma žemo lygio kalbų, tokių kaip C ir C++, bibliotekų apima duomenų struktūrą ir paprogramių vykdymą.

Nebūtina pasiekti visiško bibliotekų supratimo; svarbiau išmokti juos naudoti kaip įrankius, palengvinančius CGI programuotojo darbą.

Cgi-lib.pl

Cgi-lib.pl naudoja Perl asociatyvinius masyvus. Funkcija &ReadParse analizuoja įvesties eilutę ir įveda kiekvieną pavadinimo/reikšmės porą pagal pavadinimą. Pavyzdžiui, atitinkamos Perl eilutės, reikalingos ką tik pateiktai įvesties eilutei „vardas/amžius“ iššifruoti, būtų

&ReadParse(*input);

Dabar, norėdami pamatyti įvestą „pavadinimo“ reikšmę, galite pasiekti asociatyvinis masyvas$input("vardas"). Panašiai, norėdami pasiekti "age" reikšmę, turite pažvelgti į kintamąjį $input ("amžius").

Cgihtml

C neturi jokių integruotų duomenų struktūrų, todėl cgihtml įdiegia savo nuorodų sąrašą, skirtą naudoti su CGI analizės tvarka. Tai apibrėžia įrašo tipo struktūrą taip:

Typedef struct ( Char *pavadinimas; Char *reikšmė; ) Įrašo tipas;

Norint išanalizuoti įvesties eilutę „vardas/amžius“ C, naudojant cgihtml, naudojama:

/* deklaruoti susietą sąrašą, vadinamą input */ Llist input; /* išanalizuoti įvestį ir vietą susietame sąraše */ read_cgi_input(&input);

Norėdami pasiekti informaciją apie amžių, galite rankiniu būdu išanalizuoti sąrašą arba naudoti turimą funkciją cgi _val().

#įtraukti #įtraukti Char *amžius = malloc(dydis(char)*strlen(cgi_val(įvestis, "amžius")) + 1); Strcpy(amžius, cgi_val(įvestis, "amžius"));

„Amžiaus“ reikšmė dabar saugoma amžiaus eilutėje.

Pastaba: užuot naudojęs paprastą masyvą (pvz., char age ;)), dinamiškai paskirstau atminties vietą eilutės amžiui. Nors tai apsunkina programavimą, tai vis dėlto svarbu saugumo požiūriu. Tai išsamiau aptariama 9 skyriuje.

Paprasta CGI programa

Jūs ketinate parašyti CGI programą nameage.cgi, kuri tvarko vardo / amžiaus formą. Duomenų apdorojimas (tai, ką aš paprastai vadinu „daiktu tarpais“) yra minimalus. Nameage.cgi tiesiog iššifruoja įvestį ir parodo vartotojo vardą bei amžių. Nors toks įrankis nėra labai naudingas, jis parodo svarbiausią CGI programavimo aspektą: įvestį ir išvestį.

Naudojate tą pačią formą, kaip ir anksčiau, iškviesdami laukus „vardas ir amžius“. Kol kas nesijaudinkite dėl tvirtumo ir efektyvumo; išspręsti esamą problemą paprasčiausiu būdu. Perl ir C sprendimai rodomi atitinkamai 2.6 ir 2.7 sąrašuose.

Sąrašas 2.6. Nameage.cgi Perl

#!/usr/local/bin/perl # nameage.cgi reikalauja "cgi-lib.pl" &ReadParse(*input); spausdinti "Content-Type: text/html\r\n\r\n"; spausdinti" \n"; spausdinti " Vardas ir amžius\n"; spausdinti "\n"; spausdinti " \n"; spausdinti "Sveiki, " . $input("vardas") . ". Jums\n"; print $input("age") . " metų.

\n"; spausdinti " \n";

Sąrašas 2.7. nameage.cgi C

/* nameage.cgi.c */ #include #include "cgi-lib.h" int main() ( list input; read_cgi_input(&input); printf("Turinio tipas: text/html\r\n\r\n"); printf(" \n"); printf(" Vardas ir amžius\n"); printf("\n"); printf(" \n"); printf("Sveiki, %s. Jūs esate\n",cgi_val(input,"vardas")); printf("%s metų.

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

Atkreipkite dėmesį, kad šios dvi programos yra beveik lygiavertės. Jose abiejose yra analizavimo veiksmų, kurie užima tik vieną eilutę ir apdoroja visą įvestį (dėl atitinkamų bibliotekos veiksmų). Išvestis iš esmės yra modifikuota pagrindinės „Hello, World!“ programos versija.

Pabandykite paleisti programą užpildydami formą ir spustelėdami mygtuką Pateikti.

Bendroji programavimo strategija

Dabar žinote visus pagrindinius CGI programavimo principus. Kai suprantate, kaip CGI gauna informaciją ir kaip siunčia ją atgal į naršyklę, tikroji galutinio produkto kokybė priklauso nuo jūsų bendrieji gebėjimai prie programavimo. Būtent, kai programuojate CGI (ar bet ką, tuo klausimu), nepamirškite šių savybių:

  • Paprastumas
  • Efektyvumas
  • Universalumas

Pirmosios dvi savybės yra gana dažnos: stenkitės, kad jūsų kodas būtų kuo skaitomesnis ir efektyvesnis. Universalumas labiau taikomas CGI programoms nei kitoms programoms. Kai pradėsite kurti savo savo programas CGI, sužinosite, kad yra keletas pagrindinių programų, kurias visi nori sukurti. Pavyzdžiui, viena iš labiausiai paplitusių ir akivaizdžiausių CGI programos užduočių yra apdoroti formą ir išsiųsti rezultatus el. paštu konkrečiam gavėjui. Galite apdoroti kelias atskiras formas, kurių kiekviena turi skirtingą gavėją. Užuot rašę CGI programą kiekvienai atskirai formai, galite sutaupyti laiko rašydami daugiau bendroji programa CGI, kuris tinka visoms formoms.

Apimdamas visus pagrindinius CGI aspektus, pateikiau pakankamai informacijos, kad galėtumėte pradėti programuoti CGI. Tačiau norėdami tapti efektyviu CGI kūrėju, turite giliau suprasti, kaip CGI bendrauja su serveriu ir naršykle. Likusioje šios knygos dalyje išsamiai aptariamos problemos, kurios buvo trumpai paminėtos šiame skyriuje, taip pat taikomųjų programų kūrimo strategija ir protokolo privalumai bei apribojimai.

Santrauka

Šiame skyriuje trumpai pristatomi CGI programavimo pagrindai. Išvestį kuriate teisingai formatuodami duomenis ir spausdindami į stdout. CGI įvesties gavimas yra šiek tiek sudėtingesnis, nes prieš naudojant jį reikia išanalizuoti. Laimei, jau yra keletas bibliotekų, kurios atlieka analizavimą.

KAM šiuo momentu Turėtumėte gana lengvai išmokti programuoti CGI programas. Likusioje šios knygos dalyje išsamiau aprašomos specifikacijos, patarimai ir programavimo strategijos, skirtos sudėtingesnėms ir sudėtingesnėms programoms.

Internetinių parduotuvių savininkai yra susipažinę su „elektroninės komercijos“ sąvoka, jie jau žino atsakymą į klausimą „e-komercija – kas tai? Bet jei įsigilini į esmę, išryškėja daug niuansų ir šis terminas įgauna platesnę prasmę.

Elektroninė prekyba: kas tai?

Bendra sąvoka yra tokia: elektroninė prekyba suprantama kaip tam tikras požiūris į verslą, apimantis daugelio operacijų, kuriose naudojamas skaitmeninis duomenų perdavimas teikiant prekes ar teikiant paslaugas/darbus, įtraukimą, įskaitant naudojimąsi Internetas.

Taigi tai yra bet koks komercinis sandoris, kuris atliekamas naudojant elektronines ryšio priemones.

Darbo schema išdėstyta taip:

  • Kiekvienas gali būti tinklaraštininkas ar bet kuris kitas savo interneto puslapio savininkas) registruojasi šioje sistemoje;
  • gauna savo nuorodą;
  • savo tinklalapyje įdeda specialų kodą – pasirodo reklama apie pasirinktą prekę oficialus partneris Elektroninės prekybos partnerių tinklas;
  • stebi svetainės konversiją;
  • uždirba tam tikrą procentą už kiekvieną jūsų svetainės lankytojo, kuris seka filialo nuorodą, pirkinį.

WP elektroninė prekyba

Nemažai žmonių dabar aistringai užsiima elektronine prekyba, pirmiausia dėl noro susikurti savo svetainę, unikalią internetinę parduotuvę savo gaminiams parduoti. Siekdami patenkinti šią augančią paklausą, kūrėjai sutelkė dėmesį į el. prekybos šablonų kūrimą. Pažiūrėkime, kas tai yra toliau.

Vienas iš tokių šablonų pavyzdžių yra „WordPress“ elektroninė prekyba. Tai „WordPress“ (vienos garsiausių žiniatinklio išteklių valdymo sistemų) pirkinių krepšelio papildinys, skirtas visų pirma tinklaraščiams kurti ir tvarkyti. Jis teikiamas visiškai nemokamai ir leidžia svetainės lankytojams pirkti svetainėje.

Kitaip tariant, šis įskiepis leidžia sukurti internetinę parduotuvę (pagal WordPress). Šis elektroninės prekybos papildinys turi visus reikiamus įrankius, nustatymus ir parinktis, atitinkančias šiuolaikinius poreikius.

Andoveris, Masačusetsas, 2003 m. lapkričio 19 d

„Commerce Group, Inc. (NYSE: CGI), didžiausia privačių keleivinių automobilių draudimo kūrėja Masačusetse ir CGI Group Inc. (CGI) (TSX: GIB.A; NYSE: GIB;), pirmaujanti informacinių technologijų ir verslo apdorojimo paslaugų teikėja, šiandien paskelbė pasirašiusi šešerių metų trukmės verslo procesų užsakomųjų paslaugų (BPO) sutartį, kurios vertė siekia 35 mln. CGI teiks visas politikos apdorojimo paslaugas Masačusetso privačioms keleivinių ir komercinių automobilių linijoms, taip pat teiks CGI agentūros „CollaborativeEdge“ sąsajos įrankį, programų palaikymą ir priežiūrą, reguliavimo palaikymą, konsultavimo sistemas ir dokumentų valdymo paslaugas.

Geraldas Felsas, „Commerce Group“ vykdomasis viceprezidentas ir finansų direktorius, pareiškė: „Kaip pirmaujantis privačių keleivinių automobilių tiekėjas Masačusetso valstijoje, mūsų tikslas yra suteikti savo agentams ir darbuotojams paslaugas, kurios padėtų jiems dirbti aukščiausiu lygiu. Bėgant metams mes puoselėjome tvirtus ryšius su CGI. Jų sistema yra tvirta ir tiksli, o jų komanda puikiai išmano mūsų vidines apdorojimo sistemas. Tai mums svarbu“.

Serge'as LaPalme, CGI draudimo verslo paslaugų prezidentas, pridūrė: „Labai džiaugiamės galėdami tęsti santykius su „Commerce Group“, kurie tęsiasi daugiau nei 30 metų. „Commerce Group“ ir toliau yra vienas iš mūsų vertinamų verslo partnerių ir yra strateginis Padėdami savo klientui toliau sutelkti dėmesį į savo pagrindinę veiklą, mes naudojame naujas technologijas tada, kai tai prasminga pritaikyti esamus sprendimus šiam nuolat besivystančiam sektoriui“.

Apie „The Commerce Group, Inc.

Draudimo kontroliuojančiosios bendrovės „Commerce Group, Inc.“ būstinė yra Websteryje, Masačusetso valstijoje. „Commerce Group“ nuosavybės ir nelaimingų atsitikimų draudimo dukterinės įmonės yra „The Commerce Insurance Company“ ir „Citation Insurance Company“ Masačusetse, „Commerce West Insurance Company“ Kalifornijoje ir „American Commerce Insurance Company“ Ohajo valstijoje. Per savo dukterines bendroves „Commerce Group“ užima 22 vietą. didžiausia asmeninių automobilių draudimo grupė šalyje A.M. Geriausia, remiantis 2002 m. tiesiogine rašytinio draudimo įmokų informacija.

Apie CGI
Įkurta 1976 m., CGI yra penkta pagal savo darbuotojų skaičių nepriklausoma informacinių technologijų paslaugų įmonė Šiaurės Amerikoje. CGI ir su juo susijusiose įmonėse dirba 20 000 specialistų. CGI metinės pajamos šiuo metu yra 2,8 mlrd. CDN USD (1,9 mlrd. USD), o 2003 m. rugsėjo 30 d. CGI užsakymų kiekis sudarė 12,3 mlrd. CDN USD (9,1 mlrd. USD). CGI teikia visapusiškas IT ir verslo procesų paslaugas klientams visame pasaulyje iš biurų Kanadoje, Jungtinės Valstijos ir Europa. CGI akcijos kotiruojamos TSX (GIB.A) ir NYSE (GIB) ir yra įtrauktos į TSX 100 sudėtinį indeksą, taip pat į S&P/TSX Kanados informacinių technologijų ir Kanados vidutinės kapitalizacijos indeksus: .

2012 m.: įsigytas britiškas „Logica“.

2012 m. birželį „CGI Group“ paskelbė pasirašiusi sutartį dėl didžiausios Europos sistemų integratoriaus „Logica“ pirkimo. Sandorio suma yra 2,8 milijardo Kanados dolerių (2,7 milijardo dolerių). Pagal pasiektus susitarimus CGI taip pat sutiko prisiimti įsipareigojimus grąžinti Logica 515 mln. Kanados dolerių skolą.

Sandoriui finansuoti CGI planuoja surinkti 1 milijardą Kanados dolerių išleisdama papildomai 46,7 milijono akcijų, pasiskolinti 2 milijardus Kanados dolerių iš Kanados imperatoriškojo prekybos banko, Kanados nacionalinio banko ir Toronto-Dominion banko bei apie 650 milijonų Kanados dolerių. dolerių daugiau – dabartinės kredito linijos ribose.

Siūloma vienos akcijos kaina buvo 59,8% didesnė nei „Logica“ uždarymo kaina 2012 m. gegužės 30 d. Sandoris sudaro maždaug 6,6 karto didesnį „Logica“ pelną prieš palūkanas, mokesčius, nusidėvėjimą ir amortizaciją (EBITDA) per 12 mėnesių laikotarpį, pasibaigusį 2011 m. gruodžio 31 d

Tikimasi, kad „Logica“ įsigijimas padidins CGI pelną vienai akcijai 25–30%, neįskaitant įsigijimo ir integravimo išlaidų. Dėl susijungimo susidariusios įmonės darbo jėga ir metinės pajamos bus daugiau nei dvigubai didesnės nei CGI. Sujungtos įmonės darbuotojai sudarys apie 72 tūkstančius darbuotojų, dirbančių biuruose 43 šalyse, o metinės pajamos sieks apie 10,4 milijardo Kanados dolerių (9,6 milijardo dolerių).

Naujoji įmonė bus šešta pagal dydį tarp pasaulio IT konsultantų. Didžiausios iš jų yra IBM, „Accenture“, „Cap Gemini“, „Tata Consultancy“ ir „Infosys“, „Reuters“ skaičiavimais.

„Logica“ yra pirmaujanti verslo ir technologijų paslaugų įmonė, turinti atsidavusių profesionalų ir patikimų ilgalaikių klientų“, – sakė CGI prezidentas ir generalinis direktorius Michael Roach už tinkamą kainą ir tinkamu laiku sukurti vieną iš nedaugelio didžiausių nepriklausomų visapusiškų technologijų paslaugų teikėjų.

CGI direktorių valdyba vienbalsiai patvirtino sandorį. Jį planuojama užbaigti iki 2012 m. rugsėjo mėn., gavus akcininkų pritarimą ir laikantis standartinių procedūrų. Įmonės integravimo procesą planuojama užbaigti per 3 metus