Irrevocable c board cgi. Karaniwang Gateway Interface (CGI)

Andover, Massachusetts, Nobyembre 19, 2003

Ang Commerce Group, Inc. (NYSE: CGI), ang pinakamalaking manunulat ng private passenger automobile insurance sa Massachusetts at CGI Group Inc. (CGI) (TSX: GIB.A; NYSE: GIB;), isang nangungunang provider ng teknolohiya ng impormasyon at mga serbisyo sa pagpoproseso ng negosyo, ay inihayag ngayon ang paglagda sa isang anim na taong business process outsourcing (BPO) na pag-renew ng kontrata na nagkakahalaga ng US$35 milyon. Magbibigay ang CGI ng mga serbisyo sa pagpoproseso ng buong patakaran para sa mga pribadong pasahero at komersyal na linya ng sasakyan sa Massachusetts pati na rin ang pagbibigay ng tool sa interface ng ahensya ng CollaborativeEdge ng CGI, suporta sa aplikasyon at pagpapanatili, suporta sa regulasyon, pagkonsulta sa mga system, at mga serbisyo sa pamamahala ng dokumento.

Gerald Fels, executive vice-president at CFO ng Commerce Group, ay nagsabi: "Bilang nangungunang provider ng pribadong pampasaherong sasakyan sa Massachusetts, ang layunin namin ay bigyan ang aming mga ahente at empleyado ng mga serbisyong makakatulong sa kanilang gumanap sa kanilang pinakamataas na antas. Sa paglipas ng mga taon, napaunlad namin ang isang matibay na relasyon sa CGI. Matatag at tumpak ang kanilang system at pamilyar na pamilyar ang kanilang team sa aming mga internal processing system. Mahalaga sa amin iyon."

Idinagdag ni Serge LaPalme, presidente, mga serbisyo sa negosyo ng seguro para sa CGI: "Kami ay nalulugod na ipagpatuloy ang aming relasyon sa Commerce Group, isa na tumatagal ng higit sa 30 taon. Ang Commerce Group ay patuloy na isa sa aming pinahahalagahan na mga kasosyo sa negosyo at estratehiko ang aming tagumpay. Sa pagtulong sa aming kliyente na higit na tumutok sa kanilang pangunahing negosyo, sinasamantala namin ang mga bagong teknolohiya kung kailan at saan ito makatuwiran. Alam ng aming koponan ang industriya ng seguro at ang napaka-natatanging kapaligiran ng regulasyon ng Estado at bilang resulta ay mabilis na umangkop umiiral na mga solusyon sa patuloy na umuunlad na sektor na ito."

Tungkol sa The Commerce Group, Inc.

Ang Commerce Group, Inc., isang kompanyang may hawak ng insurance, ay headquartered sa Webster, Massachusetts. Kasama sa mga subsidiary ng seguro sa ari-arian at casualty ng Commerce Group ang The Commerce Insurance Company at Citation Insurance Company sa Massachusetts, Commerce West Insurance Company sa California at American Commerce Insurance Company sa Ohio. Sa pamamagitan ng mga subsidiary nito" na pinagsamang mga aktibidad sa insurance, ang Commerce Group ay niraranggo bilang ika-22 pinakamalaking personal grupo ng insurance ng sasakyan sa bansa ng AM Pinakamahusay, batay sa 2002 direktang nakasulat na premium na impormasyon.

Tungkol sa CGI
Itinatag noong 1976, ang CGI ay ang ikalimang pinakamalaking independent information technology services firm sa North America, batay sa headcount nito. Ang CGI at ang mga kaakibat na kumpanya nito ay gumagamit ng 20,000 propesyonal. Ang annualized revenue run-rate ng CGI ay kasalukuyang CDN$2.8 bilyon (US$1.9 bilyon) at noong Setyembre 30, 2003, ang backlog ng order ng CGI ay CDN$12.3 bilyon (US$9.1 bilyon). Nagbibigay ang CGI ng end-to-end na IT at mga serbisyo sa proseso ng negosyo sa buong mundo mula sa mga opisina sa Canada, United States at Europe. Ang mga bahagi ng CGI ay nakalista sa TSX (GIB.A) at NYSE (GIB) at kasama sa TSX 100 Composite Index gayundin sa S&P/TSX Canadian Information Technology at Canadian MidCap Indices. Website: .

Pahina 1 ng 30

Ngayon, ang mga bagay tulad ng isang guest book, paghahanap sa server, isang form para sa pagpapadala ng mga mensahe ay isang mahalagang katangian ng halos anumang seryosong site. Ang problema ng pagpapakilala ng mga ito at iba pang mga kampanilya at sipol, siyempre, sa lahat ng paraan ay nakakaganyak sa imahinasyon ng isang baguhan na webmaster, na nag-aalis sa kanya ng tulog, gana at pagnanasa sa beer. Sa kasamaang palad, ang pag-aaral ng HTML-sources ng mga page ng mga kakumpitensya ay hindi nagbibigay ng anuman maliban sa mga link sa isang partikular na "cgi-bin", at kahit sa mga newsgroup ay minsan ay may binabanggit na ilang uri ng cgi-scripts. Ang artikulong ito ay nakatuon sa mga pangunahing kaalaman sa paggamit ng parehong mga cgi script para sa kaluwalhatian at kaunlaran ng iyong site.

Upang magsimula, sa palagay ko kailangan nating maunawaan ang mga konsepto. Ang CGI script ay isang programa na tumatakbo sa isang Web server sa kahilingan ng isang kliyente (iyon ay, isang bisita sa Web site). Ang program na ito sa panimula ay hindi naiiba sa karaniwang mga program na naka-install sa iyong computer - ito man ay MS Word o ang Quake na laro. Ang CGI ay hindi isang programming language kung saan nakasulat ang script, ngunit ang Common Gateway Interface ay isang espesyal na interface kung saan inilunsad at nakipag-ugnayan ang script.

Maikling digression tungkol sa CGI

Kaya kung ano ang CGI- mga script at sa pangkalahatan ay katulad na mga bagay. Magsimula tayo sa katotohanan na ang iyong browser (kapag nag-type ka URL) ay konektado ayon sa protocol HTTP kasama ang tinukoy na server at hihilingin sa kanya ang nais na file, tulad nito:

GET /~paaa/cgi-bin/guestbbok.cgi HTTP/1.0-Ito ang pinakamahalagang bagay sa kahilingan

Well, kung ang isang simpleng file ay hiniling, halimbawa .html kung mayroong ganoong file, magpapadala ang server ng tugon sa browser:

HTTP/1.0 200 OK
Uri ng Nilalaman: text/html

Karagdagan pagkatapos ng walang laman na linya (kailangan itong paghiwalayin header mula sa katawan) ay nagmumula sa impormasyon mula sa URL"a ...
Iyon lang talaga www.... pumunta ka mula sa link patungo sa link ....
Ngunit paano kung kailangan mong magdala ng isang bagay sa mapurol na prosesong ito totoo interactive, dynamic, maganda at kahanga-hanga....? Well, may sagot sa tanong na ito. Paano na lang kung sa hiniling URL tukuyin ang isang espesyal na programa ( CGI,programa Karaniwang Gateway Interface - Karaniwang Gateway Interface) at ang katotohanan na ang program na ito ay maglalabas ng isang bagay at ipadala ito sa browser .... Magsisimula ang server .cgi program at, halimbawa, pagkatapos iproseso ang data ng form, pinapasok ka nito sa isang lugar sa database nito, at sasabihin iyon sa iyo isa kang malaking tao :)
Well, sana naintriga kita ......?

Maikling impormasyon tungkol sa kung ano ang kailangan mong malaman upang isulat CGI scripts: Well, una sa lahat, kailangan mong malaman kung ano ang Internet at kung paano ito gumagana (alam mo ba? ;))) ) Well, kaunting mga kasanayan sa programming (ito ang pinakamahalagang bagay)
Sabay-sabay tayong magsulat ng ilang simpleng script at pagkatapos ay sasabihin ko sa iyo kung saan naghalungkat ang aso dito ....
Buweno, lumikha muna ng isang direktoryo sa iyong direktoryo ng tahanan cgi-bin:

cd public_html
mkdir cgi-bin
chmod 0777 cgi-bin

Ang huling linya ay magiging napakahalaga.
Kumuha ng editor at i-type ang: #!/usr/bin/perl
#first.cgi
i-print ang "Uri ng Nilalaman: text/html\n\n";
print" ";
print"

Hello sayo!!!

";
i-print ang "";

I-save ito sa direktoryo cgi-bin sa ilalim ng pangalan una.cgi.Buweno, paano mo ito naligtas?
At ngayon gawin itong maipapatupad (pagkatapos ng lahat, ito ay isang programa):

chmod +x muna.cgi

Well, papalapit na tayo sa solemne moment .... i-type ang linya ng browser http://www.uic.nnov.ru/~your_login/cgi-bin/first.cgi
at tingnan kung ano ang mangyayari. Magkakaroon ng isa sa dalawang bagay, maaaring gagana ang script at makikita mo ang page na nabuo nito (congratulations, dumating na ito sa aming shelf!) O Panloob na Server Error Saka wag kang mag-alala, may ginawa kang mali. Pagkatapos ay kakailanganin mo ng gabay sa paghuli ng mga pulgas. Well, una sa lahat, ang syntax check ay maaaring gawin tulad ng sumusunod:

perl -c muna.cgi

Kaagad kang bibigyan ng Perl ng alinman sa mga mensahe ng error (mabuti, nangyayari na napalampas mo ang isang tuldok-kuwit, nakalimutan mong isara ang mga bracket o mga quote ...) maaari itong maayos sa daan.
Ang mas lohikal na krudo ay laktawan ang output ng walang laman na linya na naghihiwalay sa header mula sa katawan:
i-print ang "Uri ng Nilalaman: text/html\n\n"; #Lahat ay Tama
i-print ang "Uri ng Nilalaman: text/html\n"; #ERROR!!!

Suriin natin ang script:
Unang linya #!/usr/bin/perl Tinutukoy lamang nito kung saan matatagpuan ang Perl sa system. Ang pangalawa ay isang komento lamang - maaari mong sundutin ang anumang bagay pagkatapos ng karatula #
Pagkatapos ay dumating i-print ang "Uri ng Nilalaman: text/html\n\n"; Ito ay isang header na nagsasaad ng uri ng nilalaman na ipi-print ng script sa karaniwang output nitong STDOUT na napupunta sa server para sa pagproseso. Ang isang walang laman na linya ay naghihiwalay sa header mula sa katawan, na sa aming kaso ay

Hello sayo!!!



Ipoproseso ng server ang tugon ng script at, batay dito, bubuo at magpapadala ng tugon sa browser. (Karaniwang hindi binabago ng server ang katawan ng mensahe, dinadagdagan lang nito ang header ng mga field na kinakailangan para sa HTTP protocol)

Buweno, ang mga pangunahing kaalaman ay pinagkadalubhasaan na, ang lahat ay hindi kasing hirap at nakapanlulumo gaya ng tila sa una
Ngayon ay maaari kang magsanay sa pagsulat ng gayong simpleng mga script sa iyong sarili upang makuha ang iyong mga kamay dito.

Kabanata 9.

Programming gamit ang CGI

Ang pagsasama ng isang seksyon sa CGI sa isang database book ay maaaring mukhang kakaiba tulad ng pagkakaroon ng isang kabanata sa pag-aayos ng kotse sa isang cookbook. Siyempre, upang pumunta sa grocery store, kailangan mo ng isang magagamit na kotse, ngunit angkop ba na pag-usapan ito? Ang buong pagpapakilala sa CGI at web programming sa pangkalahatan ay lampas sa saklaw ng aklat na ito, ngunit ang isang maikling pagpapakilala sa mga paksang ito ay sapat na upang mapalawak ang kakayahan ng MySQL at mSQL na kumatawan sa data sa larangan ng Web.

Ang kabanatang ito ay pangunahing inilaan para sa mga nag-aaral tungkol sa mga database ngunit nais ding makakuha ng ilang kaalaman sa Web programming. Kung ang iyong apelyido ay Berners-Lee o Andressen, malamang na hindi ka makakahanap ng isang bagay dito na hindi mo pa alam. Ngunit kahit na hindi ka bago sa CGI, ang pagkakaroon ng isang mabilis na sanggunian na madaling gamitin habang sumisid sa mga misteryo ng MySQL at mSQL ay maaaring maging kapaki-pakinabang.

Ano ang CGI?

Tulad ng karamihan sa mga acronym, ang Common Gateway Interface (CGI ay nangangahulugang Common Gateway Interface) ay hindi gaanong sinasabi. Interface sa ano? Nasaan ang gateway na ito? Anong komunidad ang pinag-uusapan natin? Upang masagot ang mga tanong na ito, bumalik tayo ng kaunti at tingnan ang WWW sa kabuuan.

Si Tim Berners-Lee, isang physicist na nagtrabaho sa CERN, ay gumawa ng Web noong 1990, kahit na ang plano ay nagsimula noong 1988. Ang ideya ay upang paganahin ang mga mananaliksik ng particle physics na madali at mabilis na makipagpalitan ng multimedia data - teksto, mga imahe at tunog - sa pamamagitan ng Internet. Ang WWW ay binubuo ng tatlong pangunahing bahagi: HTML, URL at HTTP. HTML- ang wika sa pag-format na ginagamit upang kumatawan sa nilalaman sa Web. url- ito ang address na ginamit upang makakuha ng nilalaman sa HTML na format (o kung hindi man) mula sa web server. At sa wakas http- ito ay isang wika na naiintindihan ng web server at nagpapahintulot sa mga kliyente na humiling ng mga dokumento mula sa server.

Ang kakayahang magpadala ng lahat ng uri ng impormasyon sa Internet ay isang rebolusyon, ngunit ang isa pang posibilidad ay natuklasan sa lalong madaling panahon. Kung maaari kang magpadala ng anumang teksto sa Web, kung gayon bakit hindi ka makapagpadala ng tekstong nilikha ng isang programa, at hindi kinuha mula sa isang natapos na file? Nagbubukas ito ng dagat ng mga posibilidad. Ang isang simpleng halimbawa ay ang paggamit ng isang programa na nagpi-print ng kasalukuyang oras upang makita ng mambabasa ang tamang oras sa tuwing titingnan nila ang pahina. Nakita ng ilang matatalinong pinuno sa National Center for Supercomputing Applications (NCSA) na gumagawa ng web server ang pagkakataong ito, at hindi nagtagal ay ipinanganak ang CGI.

Ang CGI ay isang hanay ng mga panuntunan kung saan ang mga program sa isang server ay maaaring magpadala ng data sa mga kliyente sa pamamagitan ng isang web server. Ang detalye ng CGI ay sinamahan ng mga pagbabago sa HTML at HTTP na nagpakilala ng bagong feature na kilala bilang mga form.

Bagama't pinapayagan ng CGI ang mga programa na magpadala ng data sa isang kliyente, pinapalawak ng mga form ang kakayahang ito sa pamamagitan ng pagpayag sa isang kliyente na magpadala ng data sa programang CGI na iyon. Ngayon ang gumagamit ay hindi lamang makita ang kasalukuyang oras, ngunit itakda din ang orasan! Ang mga form ng CGI ay nagbukas ng pinto sa tunay na interaktibidad sa mundo ng Web. Kasama sa mga karaniwang CGI application ang:

  • Dynamic na HTML. Ang buong site ay maaaring mabuo ng isang programa ng CGI.
  • Mga search engine na nakakahanap ng mga dokumento na may mga salita na tinukoy ng user.
  • Mga guestbook at bulletin board kung saan maaaring idagdag ng mga user ang kanilang mga mensahe.
  • Mga form ng order.
  • Mga talatanungan.
  • Pagkuha ng impormasyon mula sa isang database na naka-host sa server.

Sa mga susunod na kabanata, tatalakayin natin ang lahat ng mga CGI application na ito, gayundin ang ilan pang iba. Lahat ng mga ito ay nagbibigay ng isang mahusay na pagkakataon upang ikonekta ang CGI sa isang database, na kung saan ay interesado kami sa seksyong ito.

Mga HTML Form

Bago tuklasin ang mga detalye ng CGI, kapaki-pakinabang na tingnan ang pinakakaraniwang paraan upang makakuha ng interface ang mga end user sa mga CGI program: mga HTML form. Ang mga form ay bahagi ng wikang HTML na nagbibigay sa end user ng iba't ibang uri ng mga field. Ang data na ipinasok sa mga patlang ay maaaring ipadala sa web server. Maaaring gamitin ang mga patlang upang maglagay ng teksto o maging mga pindutan na maaaring i-click o lagyan ng tsek ng user. Narito ang isang halimbawa ng isang HTML na pahina na naglalaman ng isang form:

<НТМL><НЕАD><ТITLЕ>Aking pahina ng form


<р>Ito ay isang pahina ng form.


Ilagay ang iyong pangalan:



Lumilikha ang form na ito ng 40-character na string kung saan maaaring ilagay ng user ang kanilang pangalan. Sa ilalim ng linya ng pag-input mayroong isang pindutan, kapag pinindot, ang data ng form ay inilipat sa server. Ang mga sumusunod ay ang mga tag na nauugnay sa form na sinusuportahan ng HTML 3.2, ang pinakamalawak na ginagamit na pamantayan ngayon. Maaaring ilagay ang mga pangalan ng tag at attribute sa anumang kaso, ngunit sinusunod namin ang opsyonal na convention na ang mga pambungad na tag ay nakasulat sa uppercase at closing tag sa lowercase.


Ang tag na ito ay tumuturo sa simula ng form. Ang isang pansarang tag ay kinakailangan sa dulo ng form

. Sa pagitan ng mga tag
Tatlong katangian ang pinapayagan: ACTION ay tumutukoy sa URL o kaugnay na landas sa CGI program kung saan ipapadala ang data; Tinukoy ng METHOD ang HTTP na paraan kung saan isusumite ang form (maaari itong GET o POST, ngunit halos palaging gagamit kami ng POST); Tinutukoy ng ENCTYPE ang paraan ng pag-encode ng data (dapat lamang gamitin kung mayroon kang malinaw na pag-unawa sa iyong ginagawa).


Nagbibigay ng pinaka-flexible na paraan para sa input ng user. Mayroong siyam na iba't ibang uri ng tag . Ang uri ay tinukoy ng TYPE attribute. Ang nakaraang halimbawa ay gumagamit ng dalawang tag : ang isa ay may uri na SUBMIT at ang isa ay may uri ng TEXT bilang default. Ang siyam na uri ay ang mga sumusunod:

TEKSTO

Isang field para sa user na magpasok ng isang linya ng text.

PASSWORD

Pareho sa TEXT, ngunit ang ipinasok na teksto ay hindi ipinapakita sa screen.

CHECKBOX

Isang flag na maaaring itakda at i-clear ng user.

RADYO

Isang radio button na dapat isama sa kahit isa pang radio button. Ang gumagamit ay maaari lamang pumili ng isa sa kanila.

IPASA

Ang button na, kapag na-click, ay nagsusumite ng form sa web server.

I-RESET

Isang button na, kapag na-click, ibinabalik ang form sa mga default na halaga nito.

FILE

Katulad ng isang text box, ngunit nangangailangan ng pagpasok ng pangalan ng isang file na ipapadala sa server.

NAGTATAGO

Isang invisible na field na maaaring mag-imbak ng data.

LARAWAN

Katulad ng SUBMIT button, ngunit maaari kang magtakda ng larawan para sa larawan sa button.

Maliban sa mga tag ng attribute na TYPE karaniwang may katangiang NAME na nag-uugnay sa data na ipinasok sa field sa ilang pangalan. Ang pangalan at data ay ipinapasa sa server sa value=value style. Sa nakaraang halimbawa, ang field ng text ay pinangalanang firstname . Maaari mong gamitin ang attribute na VALUE upang itakda ang mga field na may uri ng TEXT, PASSWORD , FILE , at HIDDEN sa mga paunang natukoy na halaga. Ang parehong katangian, na ginamit sa mga pindutan tulad ng SUBMIT o RESET, ay nagpapakita ng tinukoy na teksto sa kanila. Ang mga field ng uri ng RADIO at CHECKBOX ay maaaring ipakita bilang set gamit ang CHECKED attribute na walang value.

Ang SIZE attribute ay ginagamit upang itakda ang haba ng TEXT, PASSWORD, at FILE na mga field. Ang MAXLENGTH attribute ay maaaring gamitin upang limitahan ang haba ng inilagay na text. Tinutukoy ng katangian ng SRC ang URL ng larawang ginamit sa uri ng IMAGE. Sa wakas, ang attribute na ALIGN ay tumutukoy sa pagkakahanay ng imahe para sa uri ng IMAGE at maaaring TOP, MIDDLE, BOTTOM (default), LEFT, o RIGHT (itaas, gitna, ibaba, kaliwa, kanan).

.

Tulad ng tag , sa tag , at anumang text sa pagitan ng mga tag ay tatanggapin bilang default na text , katulad ng VALUE attribute para sa isang tag . Para sa Tag

, pagbibigay ng lugar upang makapasok sa sanaysay. Ang data ay pinangalanang "sanaysay". Ang block ng text ay 70 character ang lapad at 10 linya ang lalim. Space sa pagitan ng mga tag

maaaring gamitin bilang halimbawang sanaysay. -->

uri ng "SUBMIT" at "RESET", ayon sa pagkakabanggit. Ang button na "SUBMIT" ay may na-override na label na "Enter data," at ang "RESET" na button ay may default na label (tinukoy ng browser). Ang pag-click sa "SUBMIT" na buton ay magpapadala ng data sa web server, ang "RESET" na buton ay ibabalik ang R data sa orihinal nitong estado, na tatanggalin ang lahat ng data na ipinasok ng user. -->


Ang tanging uri ng input na hindi namin nagamit dito ay ang uri ng IMAGE para sa tag . Maaari itong magamit bilang isang alternatibong paraan ng pagsusumite ng form. Gayunpaman, ang uri ng IMAGE ay bihirang tugma sa text-based at hindi masyadong tumutugon na mga browser, kaya masinop na iwasan ito maliban kung ang iyong site ay may mayaman na graphical na istilo.

Ngayong pamilyar ka na sa mga pangunahing kaalaman ng mga HTML form, handa ka nang galugarin ang CGI mismo.

Pagtutukoy ng CGI

Kaya ano nga ba ang "set ng mga panuntunan" na nagpapahintulot sa isang CGI program sa, halimbawa, Batavia, Illinois, na makipag-ugnayan sa isang web browser sa Outer Mongolia? Ang opisyal na detalye ng CGI, kasama ang maraming iba pang impormasyon tungkol sa CGI, ay matatagpuan sa NCSA server sa http://hoohoo . ncsa.uluc.edu/cgi/. Gayunpaman, ang kabanatang ito ay umiiral upang hindi mo kailangang maglakbay nang matagal at hanapin ito sa iyong sarili.

Mayroong apat na paraan kung saan nagpapasa ang CGI ng data sa pagitan ng CGI-npor frame at ng web server, at samakatuwid ay ang Web client:

  • mga variable ng kapaligiran.
  • Command line.
  • Karaniwang input device.
  • karaniwang output device.

Sa apat na pamamaraang ito, ipinapadala ng server ang lahat ng data na ipinadala ng kliyente sa programa ng CGI. Ginagawa ng CGI program ang magic nito at ipapadala ang output pabalik sa server, na nagpapasa nito sa client.

Ang data na ito ay batay sa isang Apache HTTP server. Ang Apache ay ang pinakamalawak na ginagamit na web server at tumatakbo sa halos anumang platform, kabilang ang Windows 9x at Windows NT. Gayunpaman, maaaring ilapat ang mga ito sa lahat ng HTTP server na sumusuporta sa CGI. Ang ilang mga pinagmamay-ariang server, gaya ng mula sa Microsoft at Netscape, ay maaaring may mga karagdagang feature o gumagana sa ibang paraan. Habang ang mukha ng Web ay patuloy na nagbabago sa isang hindi kapani-paniwalang bilis, ang mga pamantayan ay nagbabago pa rin at ang hinaharap ay tiyak na magbabago. Gayunpaman, hanggang sa CGI ay nababahala, ang teknolohiyang ito ay tila mahusay na itinatag - ang presyo para dito ay ang iba pang mga teknolohiya, tulad ng mga applet, ay pinalitan ito. Anumang mga programang CGI na iyong isinulat gamit ang impormasyong ito ay halos tiyak na magagawang tumakbo sa karamihan ng mga web server sa loob ng maraming taon na darating.

Kapag ang isang CGI program ay na-invoke sa pamamagitan ng isang form, ang pinakakaraniwang interface, ang browser ay nagpapadala ng mahabang string sa server na nagsisimula sa path sa CGI program at ang pangalan nito. Sinusundan ito ng iba't ibang data, na tinatawag na path information, na ipinapasa sa CGI program sa pamamagitan ng PATH_INFO environment variable (Figure 9-1). Ang impormasyon ng landas ay sinusundan ng isang "?" na sinusundan ng data ng form, na ipinadala sa server gamit ang pamamaraang HTTP GET. Ang data na ito ay ginawang available sa CGI program sa pamamagitan ng QUERY_STRING environment variable. Ang anumang data na ipinapadala ng page gamit ang HTTP POST method, na siyang pinakakaraniwang ginagamit, ay ipapasa sa CGI program sa pamamagitan ng standard input. Ang isang karaniwang string na maaaring matanggap ng isang server mula sa isang browser ay ipinapakita sa Figure 1. 9-1. pinangalanang programa formread sa catalog cgi-bin tinawag ng server na may karagdagang impormasyon sa landas dagdag/impormasyon at choice=help request data - marahil bilang bahagi ng orihinal na URL. Panghuli, ang data ng form mismo (ang tekstong "CGI programming" sa field na "mga keyword") ay ipinadala sa pamamagitan ng pamamaraang HTTP POST.

Mga variable ng kapaligiran

Kapag ang isang server ay nagpatupad ng isang CGI program, una sa lahat ay nagpapasa ito ng ilang data dito upang tumakbo sa anyo ng mga variable ng kapaligiran. Mayroong labing pitong variable na opisyal na tinukoy sa detalye, ngunit marami pa ang hindi opisyal na ginagamit sa pamamagitan ng mekanismong inilalarawan sa ibaba na tinatawag na HTTP_/nec/zams/n. CGI program

ay may access sa mga variable na ito tulad ng anumang shell environment variable kapag tumakbo mula sa command line. Sa isang shell script, halimbawa, ang F00 environment variable ay maaaring ma-access bilang $F00; sa Perl ang tawag na ito ay mukhang $ENV("F00") ; sa C - getenv("F00"); at iba pa. Inililista ng Talahanayan 9-1 ang mga variable na palaging itinakda ng server, kahit na null ang mga ito. Bilang karagdagan sa mga variable na ito, ang data na ibinalik ng kliyente sa header ng kahilingan ay itinalaga sa mga variable ng form na HTTP_F00 , kung saan ang F00 ay ang pangalan ng header. Halimbawa, karamihan sa mga web browser ay nagsasama ng impormasyon ng bersyon sa isang header na pinangalanang USEfl_AGENT . Maaaring makuha ng iyong CGI npor framework ang impormasyong ito mula sa variable na HTTP_USER_AGENT.

Talahanayan 9-1.Mga variable sa kapaligiran ng CGI

variable ng kapaligiran

Paglalarawan

CONTENT_LENGTH

Ang haba ng data na ipinasa ng mga pamamaraan ng POST o PUT, sa mga byte.

CONTENT_TYPE

Ang uri ng MIME ng data na nakalakip gamit ang mga pamamaraang POST o PUT.

GATEWAY_INTERFACE

Numero ng bersyon ng detalye ng CGI na sinusuportahan ng server.

PATH_INFO

Karagdagang impormasyon ng landas na ibinigay ng kliyente. Halimbawa, para sa isang kahilingan http://www.myserver.eom/test.cgi/this/is/a/ landas?patlang=berde ang halaga ng variable na PATH_INFO ay magiging /this/is/a/path.

PATH_TRANSLATED

Pareho sa PATH_INFO , ngunit ang server ay gumagawa ng lahat


Isang posibleng pagsasalin, halimbawa, isang extension ng pangalan tulad ng "-account". »

QUERY_STRING

Lahat ng data kasunod ng "?" sa URL. Ito rin ang data na ipinasa kapag ang REQ-UEST_METHOD ng form ay GET.

REMOTE_ADDR

Ang IP address ng kliyente na gumagawa ng kahilingan.

REMOTE_HOST

Ang hostname ng client machine, kung available.

REMOTE_IDENT

Kung ang web server at client support type pagkakakilanlan identd, pagkatapos ito ay ang username ng account na gumagawa ng kahilingan.

REQUEST_METHOD

Ang paraan na ginamit ng kliyente upang gawin ang kahilingan. Para sa mga CGI program na gagawin namin, ito ay karaniwang POST o GET.

PANGALAN NG SERVER Ang hostname - o IP address kung hindi available ang pangalan - ng makina kung saan tumatakbo ang web server.
SERVER_PORT Ang numero ng port na ginagamit ng web server.
SERVER_PROTOCOL
Ang protocol na ginagamit ng kliyente upang makipag-usap sa server. Sa aming kaso, ang protocol na ito ay halos palaging HTTP.
SERVER_SOFTWARE Impormasyon ng bersyon ng web server na nagpapatakbo ng CGI program.

SCRIPT_NAME

Ang path sa script na isasagawa, gaya ng tinukoy ng kliyente. Maaaring gamitin kapag ang isang URL ay tumutukoy sa sarili nito, at upang ang mga script na isinangguni sa iba't ibang lugar ay maipatupad nang iba depende sa lugar.

Narito ang isang halimbawa ng Perl CGI script na naglalabas ng lahat ng environment variable na itinakda ng server, gayundin ang lahat ng legacy na variable, gaya ng PATH, na itinakda ng shell na nagsimula sa server.

#!/usr/bin/perl -w

ilimbag<< HTML;

Uri ng nilalaman: text/html\n\n

<р>Mga variable ng kapaligiran

HTML

foreach (mga key %ENV) ( i-print ang "$_: $ENV($_)
\n";)

ilimbag<

HTML

Ang lahat ng mga variable na ito ay maaaring gamitin at kahit na mabago ng iyong CGI program. Gayunpaman, ang mga pagbabagong ito ay hindi nakakaapekto sa web server na naglunsad ng programa.

Command line

Pinapayagan ng CGI na maipasa ang mga argumento sa isang CGI program bilang mga opsyon sa command line, na bihirang gamitin. Ito ay bihirang gamitin dahil ang mga praktikal na aplikasyon nito ay kakaunti, at hindi namin ito tatalakayin nang detalyado. Ang bottom line ay kung ang QUERY_STRING environment variable ay hindi naglalaman ng " = " character, ang CGI program ay isasagawa gamit ang command line na mga parameter na kinuha mula sa QUERY_STRING . Halimbawa, http://www.myserver.com/cgi- bin/daliri?ugat ay tatakbo sa ugat ng daliri www.myserver.com.

Mayroong dalawang pangunahing aklatan na nagbibigay ng CGI interface sa Perl. Ang una sa kanila - cgi-lib.pl Kagamitan cgi-lib.pl napaka-common dahil sa mahabang panahon ito lang ang malaking library na available. Idinisenyo ito upang gumana sa Perl 4, ngunit gumagana rin ito sa Perl 5. Ang pangalawang library, CGI.pm, mas bago at sa maraming paraan nakahihigit cgi-lib.pl CGI.pm isinulat para sa Perl 5 at gumagamit ng isang ganap na object-oriented na pamamaraan upang gumana sa data ng CGI. Module CGI.pm pini-parse ang karaniwang input at ang QUERY_STRING variable at iniimbak ang data sa isang CGI object. Kailangan lang ng iyong program na gumawa ng bagong CGI object at gumamit ng mga simpleng pamamaraan tulad ng paramQ para kunin ang data na kailangan mo. Halimbawa 9-2 ay nagsisilbing isang maikling pagpapakita kung paano CGI.pm binibigyang kahulugan ang datos. Gagamitin ang lahat ng mga halimbawa ng Perl sa kabanatang ito CGI.pm.

Halimbawa 9-2. Pag-parse ng data ng CGI sa Perl

#!/usr/bin/perl -w

gumamit ng CGI qw(:standard);

# Ginagamit ang CGI.pm module. qw(:standard) import

# namespace ng karaniwang CGI function na makukuha

# mas malinis na code. Magagawa ito kung ang script

# isang CGI object lang ang ginagamit.

$mycgi = bagong CGI; #Gumawa ng CGI object na magiging "gateway" sa data ng form

@fields = $mycgi->param; # I-extract ang mga pangalan ng lahat ng filled form fields

print header, start_html("CGI.pm test"); ft "header" at "start_html" na mga pamamaraan,

# ibinigay

Pinapadali ng # CGI.pm na makuha ang HTML.

Ang # "header" ay naglalabas ng kinakailangang HTTP header, a

Ang #"start_html" ay naglalabas ng HTML header na may ibinigay na pangalan,

#a din tag .

print"<р>Data ng form:
";

foreach (@fields) ( print $_, ":",- $mycgi->param($_), "
"; }

# Para sa bawat field, ipakita ang pangalan at halaga na nakuha gamit

# $mycgi->param("fieldname").

i-print ang end_html; # Shorthand para sa pag-output ng mga end tag "".

Pinoproseso ang input sa C

Dahil ang mga pangunahing API para sa MySQL at mSQL ay nakasulat sa C, hindi namin ganap na abandunahin ang C pabor sa Perl, ngunit magbibigay kami ng ilang halimbawa ng C kung saan naaangkop. Mayroong tatlong malawak na ginagamit na C library para sa CGI programming: cgic Tom Boutell*; cgihtml Eugene Kim t at libcgi mula sa EIT*. naniniwala kami na cgic ay ang pinakakumpleto at madaling gamitin. Gayunpaman, kulang ito sa kakayahang magbilang ng lahat ng mga variable ng form kapag hindi mo ito kilala nang maaga. Sa katunayan, maaari itong idagdag sa isang simpleng patch, ngunit iyon ay lampas sa saklaw ng kabanatang ito. Samakatuwid, sa Halimbawa 9-3, ginagamit namin ang aklatan cgihtml, upang ulitin ang script sa itaas ng Perl sa C.

Halimbawa 9-3.Pag-parse ng data ng CGI sa C

/* cgihtmltest.c - Generic na CGI program para mag-print ng mga key at ang mga value ng mga ito

mula sa data na natanggap mula sa form */

#isama

#include "cgi-lib.h" /* Naglalaman ito ng lahat ng kahulugan ng function ng CGI */

#include "html-lib.h" /* Naglalaman ito ng "lahat ng kahulugan ng mga function ng helper para sa HTML */

void print_all(lllist 1)

/* Ang mga function na ito ay naglalabas ng data na isinumite sa form sa parehong format tulad ng nasa itaas na Perl script. Nagbibigay din ang Cgihtml ng built-in na function

Print_entries() na ginagawa ang parehong gamit ang format ng listahan ng HTML. */ (

node*window;

/* Ang uri ng "node" ay tinukoy sa cgihtml library at tumutukoy sa isang naka-link na listahan na naglalaman ng lahat ng data ng form. */

bintana = i.ulo; /* Nagtatakda ng pointer sa simula ng data ng form */

habang (window != NULL) ( /* I-traverse ang naka-link na listahan sa huling (unang walang laman) elemento */

printf(" %s:%s
\n",window->entry.name,replace_ltgt(window->entry.value));

/* Output data. Ang Replace__ltgt() ay isang function na nauunawaan ang HTML encoding ng text at tinitiyak na ito ay tama na ipinapakita sa client browser. */

window = window->susunod; /* Ilipat sa susunod na elemento sa listahan. */

} }

int main() (

maglista ng mga entry; /* Pointer sa na-parse na data*/

int katayuan; /* Isang integer na kumakatawan sa katayuan */

html_header(); /* HTML helper function na naglalabas ng HTML header */

html_begin("cgihtml test");

/* Isang HTML helper function na naglalabas ng simula ng HTML page na may tinukoy na pamagat. */

status = read_cgi_input(&mga entry); /* Nagsasagawa ng pag-input at pag-parse ng data ng form */

printf("<р>Data ng form:
");

print_all(mga entry); /* Tinatawag ang print_all() function na tinukoy sa itaas. */

html_end(); /* Isang HTML helper function na naglalabas sa dulo ng HTML page. */

List_clear(&mga entry); /* Pinapalaya ang memorya na inookupahan ng data ng form. */

bumalik 0; )

Karaniwang output device

Ang data na ipinadala ng isang CGI program sa karaniwang output ay binabasa ng web server at ipinadala sa kliyente. Kung ang pangalan ng script ay nagsisimula sa nph-, ang data ay direktang ipinadala sa kliyente nang walang interbensyon mula sa web server. Sa kasong ito, ang CGI program ay dapat bumuo ng isang wastong HTTP header na mauunawaan ng kliyente. Kung hindi, hayaan ang web server na bumuo ng HTTP header para sa iyo.

Kahit hindi mo ginagamit nph-script, kailangan mong bigyan ang server ng isang direktiba na magsasabi dito ng impormasyon tungkol sa iyong pagpapalabas. Ito ay karaniwang isang Content-Type HTTP header, ngunit maaari rin itong maging Lokasyon header. Ang heading ay dapat na sundan ng isang walang laman na linya, ibig sabihin, isang bagong linya o isang kumbinasyon ng CR/LF.

Sinasabi ng header na Uri ng Nilalaman sa server kung anong uri ng data ang inihahatid ng iyong CGI program. Kung ito ay isang HTML na pahina, ang string ay dapat na Content-Type: teksto/html. Ang header ng Lokasyon ay nagsasabi sa server ng ibang URL - o ibang path sa parehong server - kung saan ididirekta ang kliyente. Dapat ganito ang hitsura ng pamagat: Lokasyon: http:// www. myserver. com/ibang/lugar/.

Pagkatapos ng mga header ng HTTP at ang walang laman na string, maaari mong ipadala ang aktwal na data na ginagawa ng iyong programa - isang HTML page, isang imahe, teksto, o anumang bagay. Kabilang sa mga CGI program na kasama ng Apache server ay nph-test-cgi at subukan ang cgi, na mahusay na nagpapakita ng pagkakaiba sa pagitan ng nph at non-nph heading, ayon sa pagkakabanggit.

Sa seksyong ito, gagamitin natin ang mga aklatan CGI.pm at cgic, na may mga function para sa pag-output ng parehong mga header ng HTTP at HTML. Papayagan ka nitong tumuon sa output ng aktwal na nilalaman. Ang mga function ng helper na ito ay ginagamit sa mga halimbawa sa naunang bahagi ng kabanatang ito.

Mahahalagang Tampok ng CGI Scripts

Alam mo na talaga kung paano gumagana ang CGI. Ang kliyente ay nagpapadala ng data, kadalasan sa pamamagitan ng isang form, sa web server. Ang server ay nagpapatupad ng CGI program, na nagpapasa ng data dito. Ginagawa ng CGI program ang pagproseso nito at ibinabalik ang output nito sa server, na nagpapadala nito sa kliyente. Ngayon, mula sa pag-unawa kung paano gumagana ang mga frame ng CGI-npor, kailangan nating magpatuloy sa pag-unawa kung bakit malawakang ginagamit ang mga ito.

Bagama't sapat na ang iyong nalalaman mula sa kabanatang ito upang magsama-sama ng isang simpleng gumaganang CGI program, may ilang mas mahalagang bagay na dapat isaalang-alang bago ka makapagsulat ng mga talagang gumaganang programa para sa MySQL o mSQL. Una, kailangan mong matutunan kung paano magtrabaho sa maraming mga form. Pagkatapos ay kailangan mong matutunan ang ilang mga hakbang sa seguridad na pipigil sa mga umaatake na magkaroon ng ilegal na pag-access sa iyong mga file ng server o sirain ang mga ito.

Memorya ng estado

Ang pagiging stateful ay isang mahalagang paraan ng pagbibigay ng magandang serbisyo sa iyong mga user, at hindi lamang para sa paglaban sa mga matitigas na kriminal, gaya ng maaaring mukhang. Ang problema ay sanhi ng katotohanan na ang HTTP ay isang tinatawag na "walang memorya" na protocol. Nangangahulugan ito na ang kliyente ay nagpapadala ng data sa server, ang server ay nagbabalik ng data sa kliyente, at pagkatapos ay ang lahat ay pumupunta sa kanilang sariling paraan. Ang server ay hindi nag-iimbak ng data tungkol sa kliyente na maaaring kailanganin sa mga susunod na operasyon. Katulad nito, walang garantiya na ang kliyente ay magse-save ng anumang data tungkol sa transaksyon na maaaring magamit sa ibang pagkakataon. Nagpapataw ito ng agaran at makabuluhang limitasyon sa paggamit ng World Wide Web.

Ang pag-script ng CGI sa ilalim ng protocol na ito ay kahalintulad ng hindi matandaan ang isang pag-uusap. Sa tuwing nakikipag-usap ka sa isang tao, gaano man kadalas mo siyang nakausap noon, kailangan mong ipakilala ang iyong sarili at maghanap ng karaniwang paksang pag-uusapan. Hindi na kailangang sabihin, hindi ito nakakatulong sa pagiging produktibo. Ipinapakita ng Figure 9-2 na sa tuwing ang isang kahilingan ay umabot sa isang CGI program, isa itong ganap na bagong instance ng program na walang koneksyon sa nauna.

Sa panig ng kliyente, sa pagdating ng Netscape Navigator, mayroong isang mukhang hacky na solusyon na tinatawag na cookies. Binubuo ito ng paglikha ng bagong HTTP header na maaaring ipadala pabalik-balik sa pagitan ng kliyente at server, katulad ng mga header ng Uri ng Nilalaman at Lokasyon. Ang client browser, kapag natanggap ang cookie header, ay dapat mag-imbak ng data sa cookie, pati na rin ang pangalan ng domain kung saan gumagana ang cookie. Pagkatapos noon, sa tuwing binibisita ang isang URL sa loob ng tinukoy na domain, dapat ibalik ang cookie header sa server para magamit sa mga CGI program sa server na iyon.

Ang paraan ng cookie ay pangunahing ginagamit upang iimbak ang user ID. Ang impormasyon ng bisita ay maaaring maimbak sa isang file sa server machine. Ang natatanging ID ng user na ito ay maaaring ipadala bilang cookie sa browser ng user, pagkatapos nito, sa tuwing bibisita ang user sa site, awtomatikong ipapadala ng browser ang ID na ito sa server. Ipinapasa ng server ang ID sa CGI program, na nagbubukas ng kaukulang file at nakakakuha ng access sa lahat ng data tungkol sa user. Nangyayari ang lahat ng ito sa paraang hindi nakikita ng gumagamit.

Kahit gaano kapaki-pakinabang ang pamamaraang ito, hindi ito ginagamit ng karamihan sa malalaking site bilang kanilang tanging paraan ng pag-alala sa estado. Mayroong ilang mga dahilan para dito. Una, hindi lahat ng browser ay sumusuporta sa cookies. Hanggang kamakailan lamang, ang pangunahing browser para sa mga taong may kapansanan sa paningin (hindi banggitin ang mga taong may hindi sapat na bilis ng koneksyon sa network) - Lynx - ay hindi sumusuporta sa cookies. Hindi pa rin ito "opisyal" na sumusuporta sa kanila, kahit na ang ilan sa mga malawak na magagamit nitong "mga sangay sa gilid" ay ginagawa. Pangalawa, at higit sa lahat, tinatali ng cookies ang user sa isang partikular na makina. Isa sa mga dakilang birtud ng Web ay na ito ay naa-access mula sa kahit saan sa mundo. Hindi alintana kung saan nilikha o naimbak ang iyong web page, maaari itong ipakita mula sa anumang makina na nakakonekta sa Internet. Gayunpaman, kung susubukan mong i-access ang isang cookie-enabled na site mula sa makina ng ibang tao, lahat ng iyong personal na data na sinusuportahan ng cookie ay mawawala.

Gumagamit pa rin ng cookies ang maraming site upang i-personalize ang mga page ng user, ngunit karamihan ay pinupunan ang mga ito ng tradisyonal na interface ng istilo ng pag-log in/password. Kung ang site ay na-access mula sa isang browser na hindi sumusuporta sa cookies, ang pahina ay naglalaman ng isang form kung saan ipinasok ng user ang login name at password na itinalaga sa kanya noong una niyang binisita ang site. Kadalasan ang form na ito ay maliit at katamtaman upang hindi matakot sa karamihan ng mga user na hindi interesado sa anumang pag-personalize, ngunit gusto lang na pumunta pa. Kapag nagpasok ang isang user ng login name at password sa form, hahanapin ng CGI ang data file ng user na parang ipinadala ang pangalan na may cookie. Gamit ang pamamaraang ito, maaaring magrehistro ang isang user sa isang personalized na website mula sa kahit saan sa mundo.

Bilang karagdagan sa mga gawain ng accounting para sa mga kagustuhan ng gumagamit at pangmatagalang imbakan ng impormasyon tungkol dito, ang isa ay maaaring magbigay ng isang mas banayad na halimbawa ng pag-alala ng estado, na ibinibigay ng mga tanyag na search engine. Kapag naghanap ka gamit ang mga serbisyo tulad ng AltaVista o Yahoo, kadalasan ay nakakakuha ka ng mas maraming resulta kaysa sa maipapakita mo sa isang format na madaling basahin. Ang problemang ito ay nalulutas sa pamamagitan ng pagpapakita ng isang maliit na bilang ng mga resulta - karaniwang 10 o 20 - at pagbibigay ng ilang paraan ng pag-navigate upang tingnan ang susunod na pangkat ng mga resulta. Bagama't ang pag-uugaling ito ay tila karaniwan at inaasahan sa karaniwang Web surfer, ang aktwal na pagpapatupad ay hindi mahalaga at nangangailangan ng estado na alalahanin.

Kapag ang isang user ay unang humiling sa isang search engine, kinokolekta nito ang lahat ng mga resulta, posibleng napapailalim sa ilang paunang natukoy na limitasyon. Ang lansihin ay ibigay ang mga resultang ito nang sabay-sabay sa maliit na halaga, habang inaalala kung anong uri ng user ang humiling ng mga resultang ito at kung anong bahagi ang susunod niyang inaasahan. Isinasantabi ang pagiging kumplikado ng mismong search engine, nahaharap tayo sa problema ng patuloy na pagbibigay sa user ng ilang impormasyon sa isang pahina. Isaalang-alang ang Halimbawa 9-4, na nagpapakita ng isang CGI script na naglalabas ng sampung linya ng isang file at nagbibigay-daan ito upang tingnan ang susunod o nakaraang sampung linya.

Halimbawa 9-4. Pag-save ng estado sa isang CGI script

#!/usr/bin/perl -w

gumamit ng CGI;

Buksan(F,"/usr/dict/words") o mamatay("Hindi mabuksan! $!");

#This is the file that will be output, can be anything.

$output = bagong CGI;

sub print_range ( # Ito ang pangunahing function ng programa, ang aking $start = shift;

# Panimulang linya ng file, ang aking $count = 0;

# Pointer, ang aking $line = "";

# Kasalukuyang linya ng file, i-print ang $output->header,

$output->start_html("Aking Diksyunaryo");

# Bumubuo ng HTML na may pamagat na "My Dictionary", print " \n";

habang ($count< $start) and ($line = )) ($count++; )

# Laktawan ang lahat ng linya bago magsimula, habang (($count< $start+10) and ($line ? )) ( i-print ang $line; $count++; )

# I-print ang susunod na 10 linya.

aking $newnext = $start+10; aking $newprev = $start-10;

# Magtakda ng mga panimulang string para sa "Susunod" at "Nakaraang" URL,

print"

";

maliban kung ($start == 0) ( # Paganahin ang "Nakaraang" URL maliban kung ikaw

# ay wala na sa simula.

print qq%Nakaraang%; )

maliban kung (eof) ( # Isama ang "Next" URL maliban kung # wala sa dulo ng file.

print qq%Susunod%;

}

i-print ang "HTML;HTML

exit(0); )

# Kung walang data, magsimula muli,

kung (hindi $output->param) (

&print_range(0); )

# Kung hindi, magsimula sa string na tinukoy sa data.

&print_range($output->param("start"));

Sa halimbawang ito, ang pag-alala sa estado ay ginagawa gamit ang pinakasimpleng paraan. Walang problema sa pag-save ng data, dahil itinatago namin ito sa isang file sa server. Kailangan lang nating malaman kung saan sisimulan ang output, kaya isinama lang ng script ang panimulang punto para sa susunod o nakaraang pangkat ng mga linya sa URL, na kung saan ay kailangan lang upang makabuo ng susunod na pahina.

Gayunpaman, kung kailangan mo ng higit pa sa pag-scroll sa isang "file, kung gayon ang pag-asa sa isang URL ay maaaring maging mahirap. Mapapawi mo ang kahirapan na ito sa pamamagitan ng paggamit ng HTML form at pagsasama ng data ng estado sa mga tag. HIDDEN type. Ang diskarteng ito ay matagumpay na ginamit ng maraming site, na nagbibigay-daan sa iyong mag-link sa pagitan ng mga kaugnay na CGI program, o pagpapalawak ng paggamit ng isang CGI program, tulad ng sa nakaraang halimbawa. Sa halip na tumukoy sa isang partikular na bagay, gaya ng isang home page, maaaring tumuro ang data ng URL sa isang awtomatikong nabuong user ID.

Ito ay kung paano gumagana ang AltaVista at iba pang mga search engine. Ang unang paghahanap ay bumubuo ng isang user ID na tahasang kasama sa mga kasunod na URL. Ang ID na ito ay nauugnay sa isa o higit pang mga file na naglalaman ng mga resulta ng query. Dalawa pang halaga ang kasama sa URL: ang kasalukuyang posisyon sa file ng resulta at ang direksyon kung saan mo gustong lumipat pa rito. Ang tatlong halagang ito ay ang lahat na kailangan upang patakbuhin ang makapangyarihang mga sistema ng nabigasyon ng malalaking search engine.

Gayunpaman, may kulang pa. Ang file na ginamit sa aming halimbawa /usr/diet/mga salita Napakalaki. Paano kung iwanan natin ito sa kalagitnaan ng pagbabasa, ngunit gusto nating balikan ito mamaya? Kung hindi mo matandaan ang URL ng susunod na page, walang paraan para bumalik, kahit ang AltaVista ay hindi ka papayagan. Kung i-restart mo ang iyong computer o nagsimulang magtrabaho mula sa isa pa, imposibleng bumalik sa mga resulta ng nakaraang paghahanap nang hindi muling ipinapasok ang query. Gayunpaman, ang pangmatagalang pagiging stateful na ito ay nasa puso ng pag-personalize ng website na napag-usapan namin sa itaas, at sulit na makita kung paano ito magagamit. Ang Halimbawa 9-5 ay isang binagong bersyon ng Halimbawa 9-4.

Halimbawa 9-5. Patuloy na memorya ng estado

#!/usr/bin/perl -w

gumamit ng CGI;

umask 0;

Buksan(F,"/usr/dict/words") o mamatay("Hindi mabuksan! $!");

Chdir("users") or die("Hindi ko mapalitan sa $ directory!");

# Ito ang direktoryo kung saan maiimbak ang lahat ng data

# tungkol sa gumagamit.

Output = bagong CGI;

kung (hindi $output->param) (

i-print ang $output->header,

$output->start_html("Aking Diksyunaryo");

i-print ang "HTML;


<р>Ilagay ang iyong username:


HTML

exit(0); )

$user = $output->param("username");

## Kung wala ang file ng user, gawin ito at i-install

## paunang halaga sa "0",

kung (hindi -e "$user") (

bukas (U, ">$user") o mamatay("Hindi mabuksan! $!");

i-print ang U "0\n";

isara U;

&print_range("0");

## kung umiiral ang user at hindi tinukoy sa URL

## panimulang halaga, basahin ang huling halaga at magsimula doon.

) elsif (hindi $output->param("simula")) (

Open(U,"Suser") or die("Hindi mabuksan ang user! $!");

$simula = ; isara U;

chomp $starl;

upprint range($start);

## Kung umiiral ang user at hindi tinukoy sa URL

## paunang halaga, isulat ang paunang halaga

## sa isang file ng gumagamit at simulan ang output.

) iba(

Open(U,">$user") or die("Hindi mabuksan ang user para sa pagsusulat! $!");

print U $output->param("simula"), "\n";

isara U;

&print_range($output->param("start 1)); )

sub print_range(

aking $start = shift;

ang aking $count = 0;

aking $line = " "

i-print ang $output->header,

$output->start_html(" Aking Diksyunaryo ");

print"

\n"; 

habang ($count< $start) and ($line = )) ($count++; )

habang ($count< $start+10) and ($line = ))

i-print ang $line; $count++;

aking $newnext = $start+10;

aking $newprev = $start-10;

print"

maliban kung (Start == 0)

{

ilimbag

qq%

nakaraang%;

}

maliban kung (eof) ( print qq%Next%;

# Pansinin na ang username na "username" ay idinagdag sa URL.

# Kung hindi, makakalimutan ng CGI kung sinong user ang kinakausap nito.

}

i-print ang $output->end_html;

exit(0") ;

}

Mga hakbang sa seguridad

Kapag nagpapatakbo ng mga server ng Internet, maging sila man ay HTTP o kung hindi man, ang seguridad ay isang pangunahing alalahanin. Ang pagpapalitan ng data sa pagitan ng kliyente at ng server, na isinagawa sa loob ng balangkas ng

Ang CGI ay nagtataas ng ilang mahahalagang isyu na may kaugnayan sa proteksyon ng data. Ang CGI protocol mismo ay medyo ligtas. Ang CGI program ay tumatanggap ng input mula sa server sa pamamagitan ng standard input o environment variable, na parehong ligtas. Ngunit kapag ang isang CGI program ay may kontrol sa data, ang mga aksyon nito ay hindi pinaghihigpitan. Ang isang mahinang nakasulat na CGI program ay maaaring magbigay-daan sa isang umaatake na makakuha ng access sa system ng server. Isaalang-alang ang sumusunod na halimbawa ng CGI program:

#!/usr/bin/perl -w

gumamit ng CGI;

ang aking $output = bagong CGI;

my $username = $output"param("username");

i-print ang $output->header, $output->start_html("Finger Output"),

"

"," daliri $username", "
", $output->end_html;

Ang program na ito ay nagbibigay ng wastong CGI interface sa command daliri. Kung patakbuhin mo ang programa tulad ng finger.cgi, ililista nito ang lahat ng kasalukuyang gumagamit sa server. Kung patakbuhin mo ito tulad ng finger.cgi?username=fred, pagkatapos ay magpapakita ito ng impormasyon tungkol sa gumagamit na "fred" sa server. Maaari mo ring patakbuhin ito tulad ng daliri. oo.com upang ipakita ang impormasyon tungkol sa malayuang gumagamit. Gayunpaman, kung patakbuhin mo ito tulad ng finger.cgi?username=fred; maaaring mangyari ang mga hindi kanais-nais na bagay. Ang backstroke operator na """ " sa Perl ay nagpapalabas ng isang proseso ng shell at nagpapatupad ng isang utos na nagbabalik ng resulta. Sa programang ito" daliri $username* ginamit bilang isang madaling paraan upang magsagawa ng finger command at makuha ang output nito. Gayunpaman, pinapayagan ng karamihan sa mga shell ang maraming mga command na pagsamahin sa parehong linya. Halimbawa, ginagawa ito ng anumang processor tulad ng Bourne processor gamit ang "; ". Kaya"daliri fred; mail patakbuhin muna ang utos daliri, at tapos utos mail na maaaring magpadala ng buong file ng password ng server sa isang hindi gustong user.

Ang isang solusyon ay ang pag-parse ng data ng form upang maghanap ng nakakahamak na nilalaman. Maaari mong, sabihin, hanapin ang simbolo na ";" at tanggalin ang lahat ng mga character na sumusunod dito. Posibleng gawing imposible ang gayong pag-atake sa pamamagitan ng paggamit ng mga alternatibong pamamaraan. Ang CGI program sa itaas ay maaaring muling isulat tulad nito:

#!/usr/local/bin/perl -w

gumamit ng CGI;

ang aking $output = bagong CGI;

my $username = $output->param("username");

$|++;

# Huwag paganahin ang buffering upang maipadala ang lahat ng data sa kliyente,

i-print ang $output->header, $putput->start_html("Finger Output"), "

\n"; 

$pid = open(C_OUT, "-|");# Ang Perl idiom na ito ay naglalabas ng proseso ng bata at nagbubukas

# channel sa pagitan ng mga proseso ng magulang at anak,

kung ($pid) (# Ito ang proseso ng magulang.

ilimbag ; ft I-print ang output ng proseso ng bata.

print"

", $output->end_html;

exit(O); ft Tapusin ang programa. )

elsif (defined $pid) ( # Ito ay isang proseso ng bata.

$|++; # Huwag paganahin ang buffering.

exec("/usr/bin/finger",$username) or die("exec() call failed.");

# Ipatupad ang programa ng daliri na may Susername lamang
# argument ng command line. ) else ( die("fork() failed"); )

# Error checking.

Tulad ng nakikita mo, hindi ito isang mas kumplikadong programa. Ngunit kung patakbuhin mo ito tulad ng finger.cgi?username=fred; pagkatapos ay ang programa ng daliri ay isasagawa kasama ang argumento fred; mail bilang isang username.

Bilang karagdagang hakbang sa seguridad, ang script na ito ay tahasang nagpapatakbo ng daliri bilang /usr/bin/finger. Sa hindi malamang na kaganapan na ang isang web server ay pumasa sa isang hindi pangkaraniwang PATH sa iyong CGI program, ang pagpapatakbo ng daliri lamang ay maaaring maging sanhi ng maling programa na tumakbo. Ang isa pang hakbang sa seguridad ay maaaring gawin sa pamamagitan ng pagsusuri sa variable ng kapaligiran ng PATH at pagtiyak na mayroon itong katanggap-tanggap na halaga. Magandang ideya na tanggalin ang kasalukuyang gumaganang direktoryo mula sa PATH, maliban kung sigurado kang hindi iyon ang kaso kapag kailangan mo talagang isagawa ang program dito.

Ang isa pang mahalagang pagsasaalang-alang sa seguridad ay nauugnay sa mga karapatan ng gumagamit. Bilang default, pinapatakbo ng web server ang CGI program na may mga karapatan ng user na nagsimula sa server mismo. Ito ay karaniwang isang pseudo-user, tulad ng "nobody", na may limitadong mga karapatan, kaya ang CGI program ay mayroon ding ilang mga karapatan. Ito ay karaniwang isang magandang bagay, dahil kung maa-access ng isang umaatake ang server sa pamamagitan ng isang CGI program, hindi sila makakagawa ng maraming pinsala. Ang halimbawa ng pagnanakaw ng password ay nagpapakita kung ano ang maaaring gawin, ngunit ang aktwal na pinsala sa system ay karaniwang limitado.

Gayunpaman, nililimitahan din ng pagtakbo bilang isang pinaghihigpitang user ang mga kakayahan ng CGI. Kung ang isang CGI program ay kailangang magbasa o magsulat ng mga file, magagawa lamang nito kung saan mayroon itong pahintulot na iyon. Halimbawa, sa pangalawang stateful na halimbawa, pinapanatili ang isang file para sa bawat user. Ang programa ng CGI ay dapat na may pahintulot sa pagbasa at pagsulat sa direktoryo na naglalaman ng mga file na ito, hindi banggitin ang mga file mismo. Magagawa ito sa pamamagitan ng paglikha ng direktoryo bilang parehong user bilang server, na may mga pahintulot na magbasa/magsulat para lamang sa user na iyon. Gayunpaman, para sa isang gumagamit tulad ng "walang sinuman", tanging ang ugat ang may ganitong kakayahan. Kung hindi ka superuser, kakailanganin mong makipag-ugnayan sa administrator ng system para sa bawat pagbabago sa CGI.

Ang isa pang paraan ay gawing libre ang pagbabasa at pagsusulat ng direktoryo, na epektibong nag-aalis ng anumang proteksyon mula rito. Dahil ang tanging paraan upang ma-access ang mga file na ito mula sa labas ng mundo ay sa pamamagitan ng iyong programa, ang panganib ay hindi kasinglaki ng maaaring tila. Gayunpaman, kung ang isang butas ay matatagpuan sa programa, ang malayuang gumagamit ay magkakaroon ng ganap na access sa lahat ng mga file, kabilang ang kakayahang sirain ang mga ito. Bilang karagdagan, magagawa rin ng mga lehitimong user na nagtatrabaho sa server na baguhin ang mga file na ito. Kung gagamitin mo ang pamamaraang ito, dapat na mapagkakatiwalaan ang lahat ng mga gumagamit ng server. Gayundin, gamitin ang bukas na direktoryo para lamang sa mga file na kailangan ng CGI program; sa madaling salita, huwag ilagay sa panganib ang mga hindi kinakailangang file.

Kung ito ang iyong unang pagkakalantad sa CGI programming, ang karagdagang pag-aaral ay maaaring ipagpatuloy sa iba't ibang paraan. Dose-dosenang mga libro ang naisulat tungkol sa paksa, marami sa mga ito ay ipinapalagay na walang anumang kaalaman sa programming. CGI Programming sa World Wide Web publishing house O "Ang Reilly and Associates ay sumasaklaw sa materyal mula sa mga simpleng script sa iba't ibang wika hanggang sa talagang kamangha-manghang mga trick at trick. Sagana din ang pampublikong impormasyon sa WWW. Magandang ideya na magsimula sa Talagang Madali ang CGI(Talagang CGI lang) sa http://www.jmarshall.com/easy/cgi/ .

CGI at mga database

Mula sa simula ng panahon ng Internet, ang mga database ay nakipag-ugnayan sa pagbuo ng World Wide Web. Sa pagsasagawa, tinitingnan ng maraming tao ang Web bilang isang higanteng database ng impormasyon sa multimedia.

Ang mga search engine ay nagbibigay ng pang-araw-araw na halimbawa ng mga benepisyo ng mga database. Ang search engine ay hindi pumunta sa buong Internet na naghahanap ng mga keyword sa sandaling hihilingin mo ang mga ito. Sa halip, ang mga developer ng site ay gumagamit ng iba pang mga programa upang lumikha ng isang higanteng index na nagsisilbing isang database kung saan kinukuha ng search engine ang mga entry. Ang mga database ay nag-iimbak ng impormasyon sa paraang nagbibigay-daan sa mabilis na random na pagkuha ng access.

Dahil sa kanilang pagkasumpungin, ang mga database ay nagbibigay sa Web ng higit na kapangyarihan: ginagawa nila itong isang potensyal na interface para sa anumang bagay. Halimbawa, ang pangangasiwa ng system ay maaaring gawin nang malayuan sa pamamagitan ng isang web interface sa halip na hilingin sa isang administrator na mag-log on sa nais na sistema. Ang pagkonekta ng mga database sa Web ay nasa puso ng isang bagong antas ng interaktibidad sa Internet.

Isa sa mga dahilan kung bakit ang mga database ay konektado sa Web ay lumalabas nang regular: karamihan sa impormasyon ng mundo ay nasa mga database na. Ang mga database na umiral bago ang pagdating ng Web ay tinatawag na mga legacy database (kumpara sa mga database na hindi nakakonekta sa Web na nilikha noong mga nakaraang panahon, na dapat tawaging "masamang ideya"). Maraming mga korporasyon (at maging mga indibidwal) ang nahaharap ngayon sa hamon ng pagbibigay ng access sa mga legacy na database na ito sa Web. Maliban kung ang iyong legacy database ay MySQL o mSQL, ang paksang ito ay nasa labas ng saklaw ng aklat na ito.

Gaya ng nasabi kanina, ang iyong imahinasyon lamang ang makakapaglilimita sa komunikasyon sa pagitan ng mga database at sa Web. Sa kasalukuyan ay may libu-libong natatangi at kapaki-pakinabang na mga database na makukuha mula sa Web. Ang mga uri ng mga database na gumagana sa labas ng mga application na ito ay medyo naiiba. Ang ilan sa kanila ay gumagamit ng mga programang CGI bilang isang interface sa isang database server tulad ng MySQL o mSQL. Ang mga uri na ito ay pinaka-interesante sa amin. Ang iba ay gumagamit ng mga komersyal na application upang makipag-ugnayan sa mga sikat na database ng desktop gaya ng Microsoft Access at Claris FileMaker Pro. At ang iba ay gumagana lamang sa mga flat text file, na kung saan ay ang pinakasimpleng database na posible.

Ang tatlong uri ng mga database ay maaaring gamitin upang bumuo ng mga kapaki-pakinabang na website ng anumang laki at kumplikado. Isa sa aming mga layunin sa susunod na ilang mga kabanata ay upang dalhin ang kapangyarihan ng MySQL mSQL sa Web gamit ang CGI programming.

Ang mga may-ari ng mga online na tindahan ay pamilyar sa konsepto ng "electronic commerce" mismo, tiyak na alam nila ang sagot sa tanong na "e-commerce - ano ito". Ngunit kung naiintindihan mo ang kakanyahan, pagkatapos ay maraming mga nuances ang lumitaw at ang terminong ito ay tumatagal ng isang mas malawak na kahulugan.

E-commerce: ano ito?

Ang pangkalahatang konsepto ay ang mga sumusunod: ang e-commerce ay nauunawaan bilang isang tiyak na diskarte sa paggawa ng negosyo, na kinabibilangan ng pagsasama ng ilang mga operasyon na gumagamit ng digital data transmission sa probisyon ng mga kalakal o ang pagbibigay ng mga serbisyo/gawa, kabilang ang sa pamamagitan ng Internet.

Kaya, ito ay anumang komersyal na transaksyon na isinasagawa gamit ang isang elektronikong paraan ng komunikasyon.

Ang scheme ng trabaho ay nakaayos tulad ng sumusunod:

  • sinuman ay maaaring maging isang blogger o sinumang iba pang may-ari ng kanyang sariling pahina sa Internet) na nagrerehistro sa sistemang ito;
  • nakakakuha ng sarili nitong link;
  • naglalagay ng espesyal na code sa web page nito - lumilitaw ang isang advertisement ng napiling opisyal na kasosyo ng e-Commerce Partners Network;
  • sinusubaybayan ang conversion ng website;
  • kumikita ng tiyak na porsyento para sa bawat pagbili ng isang bisita sa kanyang site na nag-click sa isang link na kaakibat.

WP eCommerce

Ang isang malaking bilang ng mga tao ay masigasig na ngayon tungkol sa e-commerce, pangunahin dahil sa pagnanais na lumikha ng kanilang sariling website, isang natatanging online na tindahan upang magbenta ng kanilang sariling mga produkto. Upang matugunan ang lumalaking demand na ito, ang mga developer ay nakatuon sa paglikha ng mga template ng e-commerce (mga template ng e-commerce). Ano ito ay isasaalang-alang pa natin.

Ang isang halimbawa ng mga template ay ang WordPress e-commerce. Ito ay isang shopping cart plugin para sa WordPress (isa sa pinakasikat na web resource management system, na pangunahing inilaan para sa paglikha at pag-aayos ng mga blog). Ito ay ganap na walang bayad at nagbibigay-daan sa mga bisita ng site na bumili sa pahina ng Internet.

Sa madaling salita, pinapayagan ka ng plugin na ito na lumikha ng isang online na tindahan (batay sa WordPress). Ang e-commerce plugin na ito ay mayroong lahat ng kinakailangang tool, setting at opsyon para matugunan ang mga pangangailangan ngayon.

E-commerce sa naiintindihan na Russian. Paano gumagana ang negosyo sa Internet?

Kamakailan, parami nang parami ang mga proyektong nauugnay sa online commerce na nakikita. Sa pag-aaral ng direksyon na ito, hindi ako makahanap ng pangkalahatan at naiintindihan na paglalarawan ng proseso. Samakatuwid, nagpasya akong gumawa ng isang bagay tulad ng isang cheat sheet, na maaari mong palaging sumangguni upang maunawaan ang pamamaraan sa isang lugar tulad ng e-commerce.

Magpapareserba ako kaagad na nakatuon ako sa mga proseso at channel na tumutulong sa pagdadala ng mga customer.

E-commerce: tungkol saan ito?

May sinasabi ang mga kahulugan mula sa iba't ibang mapagkukunan tungkol sa pagbebenta ng mga produkto o serbisyo sa Internet. Sa simpleng salita, ang e-commerce ay anumang aktibidad sa network kung saan lumalabas ang pera.

Shopping, selling, insurance, banking, electronic money, lahat ay nandito. Kunin mo, pirmahan mo.

Mula sa target

Upang maunawaan ang isyu, iminumungkahi kong simulan ang paglalakbay mula sa pinakadulo. Ano ang layunin ng anumang negosyo? Tama, kumita ng pera. Kaya, isipin ang anumang produkto, halimbawa, mga medyas na silicone. Bakit hindi!

Kinuha ko ang unang bagay na pumasok sa isip ko, ito pala ay ito ...

Ang aming gawain ay kumita ng pera sa mga medyas na ito. Iniisip namin ang tungkol sa Internet. Hmm…bakit hindi "i-cut down" ang site at ganoon ang magiging benta, panatilihin mo lang ako Maldives! Ngunit, hindi lahat ay sobrang simple.

Mahilig talaga akong gumuhit. Nakakatulong ito upang maunawaan ang iba't ibang proseso. Magdrawing tayo?!

Sa ngayon, ganito ang hitsura ng aming modelo. Kumuha kami ng mga medyas, inilalagay ang mga ito sa Internet at kumuha ng pera. Ang galing lang! Namumula ang mga mata, pinagpapawisan ang mga palad at gusto ko nang kunin ang negosyong ito. Ngunit kailangan mong gumawa ng isang website o isang platform para sa pagbebenta?

Website o platform para sa pagbebenta

Mayroong iba't ibang mga solusyon para sa paglalagay ng iyong produkto sa World Wide Web. Maaari kang lumikha ng iyong sariling website o gumamit ng mga third-party na site (mga grupo, pahina sa mga social network, bulletin board, atbp.). Huminto tayo sa site.

Nag-order sila ng isang website, kumuha ng yari na template, o ginawa ito mismo gamit ang constructor (maaaring i-google ang CMS), hindi mahalaga. Pagkatapos ay naglagay sila ng isang bungkos ng mga silicone na medyas ng iba't ibang uri at masaya.

Patawarin mo ako sa pag-abala sa aking pagbabasa. Sumali sa aking telegram channel. Mga sariwang anunsyo ng mga artikulo, pagbuo ng mga digital na produkto at pag-hack ng paglago, lahat ay naroroon. Naghihintay sa iyo! Nagpapatuloy kami...

Mga sistema ng pagbabayad

Ngunit upang ang isang tao ay makabili mula sa iyo dito at ngayon, kakailanganing i-tweak ang mga sistema ng pagbabayad. Ito ay isang uri ng serbisyo na nagbibigay-daan sa iyong bumili online sa pamamagitan ng: mga bank card, pera sa Internet, mga mobile phone at marami pang iba. Para dito, kailangan mong ibahagi ang isang porsyento ng mga transaksyon, ngunit sa paraang ito ay lubos mong pasimplehin ang iyong buhay.

Piliin ang serbisyong nababagay sa iyo. Sa isang lugar ay magkakaroon ng mas mataas na porsyento, at sa isang lugar ay isang subscriber o iba pa. I-research lang ng konti ang tanong. Ilagay ang iyong sarili ng kinakailangang code sa site, i-link ang lahat ng mga transaksyon sa iyong card account at voila!

Mukhang iyon lang. Mayroong isang website, mga card ng produkto, at kahit na ang "buy" na pindutan ay gumagana, ngunit may nawawala ... Walang daloy ng mga customer na bibili.

Dumadaloy ang customer

Saan: CAC = Gastos sa Pagkuha ng Bagong Customer. MCC (marketingcampaigncosts) = Ang kabuuang halaga ng gastos sa marketing para makakuha (ngunit hindi mapanatili) ang mga customer. W (sahod) = Sahod para sa mga marketer at sales manager. S (software) = Halaga ng software na ginagamit sa pag-advertise at pagbebenta (hal. platform ng pagbebenta, automation ng marketing, pagsubok sa A/B, mga serbisyo ng analytics, atbp.). PS (propesyonal na serbisyo) = Halaga ng mga propesyonal na serbisyong ibinibigay sa mga departamento ng marketing at pagbebenta (disenyo, pagkonsulta, atbp.). O (other) = Iba pang overhead na nauugnay sa marketing at sales department. CA (customersacquired) = Kabuuang bilang ng mga customer na nakuha.

Ngunit hindi natin dapat kalimutan ang tungkol sa kalidad ng kliyente, makakatulong ang LTV dito.

Mahahalagang tagapagpahiwatig: LTV

Ang Live Time Value, ang lifecycle ng customer, ay isa pang sukatan ng e-commerce na dapat isaalang-alang. Ipinapakita nito kung magkano ang kita ng isang kliyente sa karaniwan. Mayroong iba't ibang mga diskarte sa pagkalkula, pinili ko ang aktwal na kita bilang isa sa mga pinaka tumpak.

Ito ay simpleng kabuuan ng kabuuang kita sa kasaysayan ng pagbili para sa bawat indibidwal na customer. Idagdag ang kabuuan ng lahat ng pagbili ng customer (mga transaksyon) sa transaksyon N, kung saan ang transaksyon N ang huling pagbili na ginawa ng customer sa iyong kumpanya. Kung mayroon kang access sa lahat ng data ng transaksyon ng customer, madali mong makalkula ito gamit ang Excel.

LTV = (transaksyon 1 + transaksyon 2 + transaksyon 3… + transaksyon N) x bahagi ng kita sa kita.

Ang pagkalkula ng LTV batay sa netong kita sa huli ay nagpapakita ng aktwal na kita na dinadala ng kliyente sa iyong kumpanya. Dito, ang halaga ng serbisyo sa customer, ang halaga ng pagpapanatili, ang halaga ng pagkuha, atbp. ay isinasaalang-alang. Ang resulta ay isang buong kumplikadong mga kalkulasyon batay sa indibidwal na data. Ang pinagsama-samang kita na nabuo ng isang kliyente sa paglipas ng panahon ay magbibigay sa iyo ng tumpak na pag-unawa sa kakayahang kumita ng iyong mga kliyente hanggang sa kasalukuyan.

Ang iba pang mga diskarte ay matatagpuan sa.

Mahahalagang sukatan: CAC sa LTV ratio

Upang maunawaan ang kakayahang mabuhay ng isang negosyo, napakahalagang tingnan ang ratio ng dalawang nabanggit na sukatan ng CAC:LTV.

  • Mas mababa sa 1:1 - Ikaw ay patungo sa bangkarota.
  • 1:1 - Nalulugi ka sa bawat naaakit na kliyente.
  • 1:2 - Mukhang maganda, ngunit mukhang hindi sapat ang iyong pamumuhunan at maaaring mas mabilis na lumago. Ilunsad ang mas agresibong mga kampanya sa pagkuha ng customer at makamit ang malapit sa 1:3 na mga ratio.
  • 1:3 - Mainam na ratio. Mayroon kang isang umuunlad na negosyo at isang malakas na modelo ng negosyo.

Mahahalagang tagapagpahiwatig: Ang ROI ay hindi nakalimutan

Tulad ng tinalakay natin sa itaas, sa e-commerce ay kinakailangan na malinaw na maunawaan kung kumikita ba ang paggamit ng acquisition channel o hindi. Bilang karagdagan sa LTV at CAC, may isa pang mahalagang tagapagpahiwatig, ito ay ROI. Ipinapakita nito kung nagbunga ang iyong pamumuhunan, sa aming kaso sa advertising. Yan ay. kung magkano ang 1 invested ruble na dinala sa amin sa huli.

Para sa pagkalkula, isang napaka-simpleng formula ang ginagamit:

Kung saan ang "Kita ng Kampanya" ay ang pagkakaiba sa pagitan ng kita ng channel at ang halaga ng iyong produkto. At para kalkulahin ang kita, ibawas ang mas maraming gastos sa advertising.

Kaya, ang isang mas detalyadong formula ay magiging ganito:

ROI = (Kita ng Channel - Gastos) - Mga Gastos sa Advertising / Mga Gastos sa Advertising x 100%

Magbasa ng mas detalyadong halimbawa na may kalkulasyon. Sa katunayan, ang simpleng formula na ito ay inilalagay lahat sa parehong talahanayan ng Excel, kung saan ang lahat ay awtomatikong kinakalkula.

Lahat ng tatlong indicator na aming nasuri ay mahalaga sa E-commerce. Binibigyang-daan ka ng bawat isa sa kanila na makahanap ng mga bottleneck sa iyong mga stream at makipagtulungan sa kanila. Nasa kanila ang potensyal ng paglago para sa negosyo. Nagdagdag ako ng kaunti sa aming modelo na may medyas.

Hindi posibleng magkasya ang lahat sa isang materyal, at sino ang magbabasa nito nang napakatagal? Mamaya gagawa ako ng hiwalay na gabay sa mga nuances ng e-commerce na maaaring makagambala sa mga benta.

Kabuuan

Sa pangkalahatan, mayroon ka na ngayong pangkalahatang pag-unawa sa online na kalakalan o e-commerce. Dagdag pa, tulad ng sinasabi nila: "Ang diyablo ay nasa mga detalye." Pag-aralan ang bawat isa sa mga channel nang hiwalay, kalkulahin ang mga tagapagpahiwatig ng pagganap at maghanap ng mga bagong insight sa mga detalye. Benta sa internet sa iyo, oo higit pa! At isa pang bagay mula sa akin.

Oo, halos nakalimutan ko, Maligayang Bagong Taon sa iyo, mahal na mga mambabasa! Nais ko sa iyo ang magagandang tagumpay at tagumpay sa darating na taon!



error: Ang nilalaman ay protektado!!