Vyberte položku Stránka

Neodvolateľná c doska cgi. Common Gateway Interface (CGI)

Andover, Massachusetts, 19. november 2003

Spoločnosť The Commerce Group, Inc. (NYSE: CGI), najväčší poskytovateľ poistenia súkromných osobných automobilov v Massachusetts a CGI Group Inc. (CGI) (TSX: GIB.A; NYSE: GIB;), popredný poskytovateľ informačných technológií a služieb podnikového spracovania, dnes oznámil podpísanie šesťročnej obnovy zmluvy o outsourcingu obchodných procesov (BPO) v hodnote 35 miliónov USD. CGI bude poskytovať kompletné služby spracovania politiky pre súkromné ​​osobné a komerčné automobilové linky v Massachusetts, ako aj poskytovanie nástroja rozhrania agentúry CGI CollaborativeEdge, aplikačnej podpory a údržby, regulačnej podpory, systémového poradenstva a služieb správy dokumentov.

Gerald Fels, výkonný viceprezident a finančný riaditeľ Commerce Group, uviedol: „Ako popredný poskytovateľ súkromných osobných automobilov v Massachusetts je naším cieľom poskytovať našim agentom a zamestnancom služby, ktoré im pomôžu dosahovať najvyššiu úroveň. V priebehu rokov sme si vybudovali silný vzťah s CGI. Ich systém je robustný a presný a ich tím dobre pozná naše interné systémy spracovania. To je pre nás dôležité."

Serge LaPalme, prezident, poisťovacie obchodné služby pre CGI, dodal: "Sme veľmi radi, že pokračujeme v našom vzťahu s Commerce Group, ktorý trvá viac ako 30 rokov. Commerce Group je aj naďalej jedným z našich vážených obchodných partnerov a strategicky náš úspech. Aby sme našim klientom pomohli ďalej sa sústrediť na ich hlavnú činnosť, využívame nové technológie tam, kde to má zmysel. Náš tím dôverne pozná poisťovníctvo a veľmi jedinečné regulačné prostredie štátu, a preto sa rýchlo prispôsobujeme existujúce riešenia pre tento neustále sa vyvíjajúci sektor."

O spoločnosti The Commerce Group, Inc.

The Commerce Group, Inc., holdingová poisťovňa, má ústredie vo Websteri, Massachusetts. Medzi dcérske spoločnosti majetkového a úrazového poistenia Commerce Group patria The Commerce Insurance Company a Citation Insurance Company v Massachusetts, Commerce West Insurance Company v Kalifornii a American Commerce Insurance Company v Ohiu. Commerce Group je prostredníctvom kombinovaných poisťovacích aktivít svojich dcérskych spoločností na 22. mieste. skupina poistenia automobilov v krajine od AM Najlepšie na základe informácií o priamom predpísanom poistnom z roku 2002.

O CGI
Spoločnosť CGI bola založená v roku 1976 a je piatou najväčšou nezávislou spoločnosťou poskytujúcou informačné technológie v Severnej Amerike podľa počtu zamestnancov. CGI a jej pridružené spoločnosti zamestnávajú 20 000 odborníkov. Anualizované výnosy CGI sú v súčasnosti 2,8 miliardy CDN (1,9 miliardy USD) a k 30. septembru 2003 bol počet nevybavených objednávok CGI 12,3 miliardy CDN (9,1 miliardy USD). CGI poskytuje klientom po celom svete komplexné IT služby a služby v oblasti obchodných procesov z pobočiek v Kanade, Spojených štátoch a Európe. Akcie CGI sú kótované na TSX (GIB.A) a NYSE (GIB) a sú zahrnuté v TSX 100 Composite Index, ako aj v S&P/TSX Canadian Information Technology a Canadian MidCap Indices. Webová stránka: .

Strana 1 z 30

Dnes sú také veci ako kniha návštev, vyhľadávanie na serveri, formulár na odosielanie správ základným atribútom takmer každej serióznej stránky. Problém zavádzania týchto a iných zvončekov a píšťaliek, samozrejme, vo všetkých smeroch vzrušuje predstavivosť začínajúceho správcu webu, zbavuje ho spánku, chuti do jedla a túžby po pive. Žiaľ, štúdium HTML zdrojov stránok konkurentov nedáva nič iné ako odkazy na určitý „cgi-bin“ a dokonca aj v diskusných skupinách sa občas objavia nejaké cgi-skripty. Tento článok je venovaný základom používania tých istých cgi skriptov pre slávu a prosperitu vášho webu.

Na začiatok si myslím, že musíme pochopiť pojmy. CGI skript je program, ktorý sa spúšťa na webovom serveri na žiadosť klienta (t. j. návštevníka webu). Tento program sa v zásade nelíši od bežných programov, ktoré sú nainštalované na vašom počítači – či už ide o MS Word alebo hru Quake. CGI nie je programovací jazyk, v ktorom je skript napísaný, ale Common Gateway Interface je špeciálne rozhranie, s ktorým sa skript spúšťa a interaguje s ním.

Krátka odbočka o CGI

Takže čo je CGI- skriptá a všeobecne podobné veci. Začnime tým, že váš prehliadač (keď ste zadali URL) je pripojený podľa protokolu HTTP so zadaným serverom a požiada ho o požadovaný súbor, asi takto:

GET /~paaa/cgi-bin/guestbbok.cgi HTTP/1.0-To je najdôležitejšia vec v žiadosti

No, ak sa požaduje jednoduchý súbor napr .html ak existuje takýto súbor, server odošle odpoveď prehliadaču:

HTTP/1.0 200 OK
Typ obsahu: text/html

Ďalej za prázdny riadok (je potrebné oddeliť hlavička od telo) pochádzajú informácie z URL"a ...
To je v podstate všetko www... prechádzate z odkazu na odkaz ....
Čo ak však potrebujete do tohto fádneho procesu niečo vniesť naozaj interaktívne, dynamické, krásne a veľkolepé....? No na túto otázku existuje odpoveď. Len čo keby v žiadanom URLšpecifikovať špeciálny program ( CGI,program Spoločné rozhranie brány - Spoločné rozhranie brány) a to, že tento program niečo vydá a odošle do prehliadača .... Server sa spustí .cgi program a napríklad po spracovaní údajov formulára vás zapíše niekde do svojej databázy a povie vám to si veľký chlap :)
No dúfam, že som vás zaujala......?

Stručné informácie o tom, čo potrebujete vedieť napísať CGI skriptá: No v prvom rade treba vedieť čo internetu a ako to funguje (vieš? ;))) ) No, trochu programátorských zručností (to je najdôležitejšia vec)
Napíšeme spolu nejaký jednoduchý scenár a potom ti poviem, kde sa tu ten pes hrabal ....
Najprv si vytvorte adresár vo svojom domovskom adresári cgi-bin:

cd public_html
mkdir cgi-bin
chmod 0777 cgi-bin

Posledný riadok bude veľmi dôležitý.
Vezmite editor a napíšte: #!/usr/bin/perl
#first.cgi
print "Typ obsahu: text/html\n\n";
tlačiť" ";
tlačiť"

Ahoj!!!

";
vytlačiť "";

Uložte ho do adresára cgi-bin pod menom najprv.cgi.No a ako si to zachránil?
A teraz ho urobte spustiteľným (koniec koncov, toto je program):

chmod +x prvý.cgi

No, blížime sa k slávnostnej chvíli .... napíšte do riadku prehliadača http://www.uic.nnov.ru/~your_login/cgi-bin/first.cgi
a uvidíte, čo sa stane. Bude jedna z dvoch vecí, buď bude skript fungovať a uvidíte ním vygenerovanú stránku (blahoželáme, dorazila do našej police!) Alebo Interná chyba servera Potom sa nebojte, niečo ste urobili zle. Potom budete potrebovať návod na chytanie bĺch. V prvom rade je možné vykonať kontrolu syntaxe takto:

perl -c prvý.cgi

Perl vám okamžite zobrazí buď chybové hlásenia (dobre, stane sa, že ste vynechali bodkočiarku, zabudli ste uzavrieť zátvorky alebo úvodzovky ...), toto sa dá opraviť priamo počas cesty.
Logickejšie je preskočiť výstup prázdneho riadku, ktorý oddeľuje hlavičku od tela:
print "Typ obsahu: text/html\n\n"; #Všetko je správne
print "Typ obsahu: text/html\n"; #CHYBA!!!

Poďme analyzovať skript:
Prvá línia #!/usr/bin/perl Jednoducho určuje, kde sa v systéme nachádza Perl. Druhý je len komentár - po značke môžete strčiť čokoľvek #
Potom príde print "Typ obsahu: text/html\n\n"; Toto je hlavička označujúca typ obsahu, ktorý skript vytlačí na svoj štandardný výstup STDOUT ide na server na spracovanie. Prázdny riadok oddeľuje hlavičku od tela, čo v našom prípade je

Ahoj!!!



Server spracuje odpoveď skriptu a na základe nej vygeneruje a odošle odpoveď prehliadaču (Server väčšinou nemení telo správy, iba doplní hlavičku o polia potrebné pre HTTP protokol)

No základy sú už zvládnuté, všetko nie je také ťažké a deprimujúce, ako by sa na prvý pohľad mohlo zdať
Teraz si môžete sami precvičiť písanie takýchto jednoduchých skriptov, aby ste to dostali do rúk.

Kapitola 9.

Programovanie s CGI

Začlenenie časti o CGI do databázovej knihy sa môže zdať rovnako zvláštne ako mať kapitolu o oprave áut v kuchárskej knihe. Samozrejme, aby ste mohli ísť do obchodu s potravinami, potrebujete prevádzkyschopné auto, ale je vhodné o tom hovoriť? Úplný úvod do CGI a webového programovania vo všeobecnosti presahuje rámec tejto knihy, ale krátky úvod do týchto tém postačuje na rozšírenie schopnosti MySQL a mSQL reprezentovať údaje vo sfére webu.

Táto kapitola je určená hlavne pre tých, ktorí sa učia o databázach, ale chceli by získať aj nejaké znalosti o webovom programovaní. Ak je vaše priezvisko Berners-Lee alebo Andressen, je nepravdepodobné, že tu nájdete niečo, čo by ste ešte nevedeli. Ale aj keď nie ste v CGI nováčikom, mať po ruke rýchlu referenciu pri ponorení sa do tajomstiev MySQL a mSQL môže byť celkom užitočné.

čo je CGI?

Ako väčšina skratiek, Common Gateway Interface (CGI znamená Common Gateway Interface) toho veľa nehovorí. Rozhranie s čím? Kde je táto brána? O akej komunite hovoríme? Pre zodpovedanie týchto otázok sa vráťme trochu späť a pozrime sa na WWW ako celok.

Tim Berners-Lee, fyzik, ktorý pracoval v CERN-e, prišiel s webom v roku 1990, hoci plán sa datuje do roku 1988. Cieľom bolo umožniť výskumníkom časticovej fyziky jednoducho a rýchlo si vymieňať multimediálne dáta – text, obrázky a zvuk – cez internet. WWW sa skladal z troch hlavných častí: HTML, URL a HTTP. HTML- formátovací jazyk používaný na reprezentáciu obsahu na webe. url- toto je adresa používaná na získanie obsahu vo formáte HTML (alebo inom) z webového servera. A nakoniec http- je to jazyk, ktorému webový server rozumie a umožňuje klientom vyžiadať si dokumenty zo servera.

Možnosť posielať všetky druhy informácií cez internet bola revolúciou, no čoskoro sa objavila ďalšia možnosť. Ak môžete poslať akýkoľvek text cez web, prečo potom nemôžete odoslať text vytvorený programom a nie prevzatý z hotového súboru? To otvára more možností. Jednoduchým príkladom je použitie programu, ktorý vytlačí aktuálny čas, aby čitateľ pri každom zobrazení stránky videl správny čas. Niekoľko šikovných hláv v Národnom centre pre superpočítačové aplikácie (NCSA), ktorí stavali webový server, videlo túto príležitosť a čoskoro sa zrodilo CGI.

CGI je súbor pravidiel, podľa ktorých môžu programy na serveri odosielať údaje klientom cez webový server. Špecifikáciu CGI sprevádzali zmeny v HTML a HTTP, ktoré zaviedli novú funkciu známu ako formuláre.

Zatiaľ čo CGI umožňuje programom posielať dáta klientovi, formuláre rozširujú túto schopnosť tým, že umožňujú klientovi posielať dáta do tohto CGI programu. Teraz môže používateľ nielen vidieť aktuálny čas, ale aj nastaviť hodiny! Formuláre CGI otvorili dvere skutočnej interaktivite vo svete webu. Bežné aplikácie CGI zahŕňajú:

  • Dynamický HTML. Celé stránky môžu byť generované jediným CGI programom.
  • Vyhľadávače, ktoré hľadajú dokumenty s používateľsky zadanými slovami.
  • Knihy návštev a nástenky, kde môžu používatelia pridávať svoje správy.
  • Objednávkové formuláre.
  • Dotazníky.
  • Extrahovanie informácií z databázy hosťovanej na serveri.

V nasledujúcich kapitolách rozoberieme všetky tieto aplikácie CGI, ako aj niekoľko ďalších. Všetky poskytujú vynikajúcu príležitosť na pripojenie CGI k databáze, čo nás v tejto časti zaujíma.

HTML formuláre

Pred skúmaním špecifík CGI je užitočné pozrieť sa na najbežnejší spôsob, akým koncoví používatelia získavajú rozhranie k programom CGI: formuláre HTML. Formuláre sú súčasťou jazyka HTML, ktorý poskytuje koncovému používateľovi rôzne typy polí. Údaje zadané do polí možno odoslať na webový server. Polia môžu byť použité na zadávanie textu alebo môžu byť tlačidlami, na ktoré môže používateľ kliknúť alebo zaškrtnúť. Tu je príklad stránky HTML obsahujúcej formulár:

<НТМL><НЕАD><ТITLЕ>Moja stránka s formulárom


<р>Toto je stránka formulára.


Zadajte svoje meno:



Tento formulár vytvorí 40-miestny reťazec, do ktorého môže používateľ zadať svoje meno. Pod vstupným riadkom sa nachádza tlačidlo, po stlačení sa údaje formulára prenesú na server. Nasledujú značky súvisiace s formulármi, ktoré podporuje HTML 3.2, dnes najpoužívanejší štandard. Názvy značiek a atribútov je možné zadať v každom prípade, ale dodržiavame voliteľnú konvenciu, že úvodné značky sa píšu veľkými písmenami a záverečné značky sa píšu malými písmenami.


Táto značka ukazuje na začiatok formulára. Na konci formulára sa vyžaduje uzatváracia značka

. Medzi značkami
Povolené sú tri atribúty: ACTION špecifikuje URL alebo relatívnu cestu k CGI programu, do ktorého budú dáta odoslané; METHOD špecifikuje HTTP metódu, ktorou sa formulár odošle (môže to byť GET alebo POST, ale takmer vždy použijeme POST); ENCTYPE špecifikuje metódu kódovania údajov (malo by sa použiť len vtedy, ak jasne rozumiete tomu, čo robíte).


Poskytuje najflexibilnejší spôsob vstupu používateľa. V skutočnosti existuje deväť rôznych typov značiek . Typ je určený atribútom TYPE. Predchádzajúci príklad používa dve značky : štandardne jeden typu SUBMIT a druhý typu TEXT. Deväť typov je nasledujúcich:

TEXT

Pole, do ktorého používateľ zadá jeden riadok textu.

HESLO

Rovnaké ako TEXT, ale zadaný text sa nezobrazuje na obrazovke.

CHECKBOX

Príznak, ktorý môže používateľ nastaviť a vymazať.

RÁDIO

Prepínač, ktorý musí byť kombinovaný s aspoň jedným ďalším prepínačom. Používateľ si môže vybrať iba jednu z nich.

PREDLOŽIŤ

Tlačidlo, ktoré po kliknutí odošle formulár na webový server.

RESETOVAŤ

Tlačidlo, ktoré po kliknutí obnoví formulár na predvolené hodnoty.

SÚBOR

Podobné ako textové pole, ale vyžaduje zadanie názvu súboru, ktorý sa odošle na server.

SKRYTÝ

Neviditeľné pole, ktoré môže uchovávať údaje.

OBRÁZOK

Podobne ako pri tlačidle ODOSLAŤ, ale na tlačidle môžete nastaviť obrázok pre obrázok.

Okrem značiek atribútu TYPE zvyčajne majú atribút NAME, ktorý spája údaje zadané do poľa s nejakým názvom. Názov a údaje sa odosielajú na server v štýle hodnota=hodnota. V predchádzajúcom príklade bolo textové pole pomenované krstné meno . Atribút VALUE môžete použiť na nastavenie polí typu TEXT, PASSWORD, FILE a HIDDEN na preddefinované hodnoty. Rovnaký atribút, ktorý sa používa s tlačidlami ako SUBMIT alebo RESET, na nich zobrazuje zadaný text. Polia typu RADIO a CHECKBOX je možné zobraziť ako nastavené pomocou atribútu CHECKED bez hodnoty.

Atribút SIZE sa používa na nastavenie dĺžky polí TEXT, PASSWORD a FILE. Na obmedzenie dĺžky zadávaného textu je možné použiť atribút MAXLENGTH. Atribút SRC určuje adresu URL obrázka použitého v type IMAGE. Nakoniec atribút ALIGN určuje zarovnanie obrázka pre typ IMAGE a môže byť TOP, MIDDLE, BOTTOM (predvolené), LEFT alebo RIGHT (hore, uprostred, dole, vľavo, vpravo).

.

Ako značka , na štítku a akýkoľvek text medzi značkami bude akceptovaný ako predvolený text , podobne ako atribút VALUE pre značku . Pre Tag

, kde je miesto na zadanie eseje. Údaje sa nazývajú „esej“. Blok textu má šírku 70 znakov a hĺbku 10 riadkov. Medzera medzi značkami

možno použiť ako vzorovú esej. -->

typu "SUBMIT" a "RESET". Tlačidlo „ODOSLAŤ“ má prepísaný štítok „Zadať údaje“ a tlačidlo „RESETOVAŤ“ má predvolený štítok (definovaný prehliadačom). Kliknutím na tlačidlo „ODESLAŤ“ odošlete údaje na webový server, tlačidlom „RESET“ obnovíte údaje R do pôvodného stavu, pričom sa vymažú všetky údaje zadané používateľom. -->


Jediný typ vstupu, ktorý sme tu nepoužili, je typ IMAGE pre značku . Dalo by sa použiť ako alternatívny spôsob odoslania formulára. Typ IMAGE je však málokedy kompatibilný s textovými a málo citlivými prehliadačmi, takže je rozumné sa mu vyhnúť, pokiaľ vaša stránka nemá bohatý grafický štýl.

Teraz, keď ste oboznámení so základmi HTML formulárov, ste pripravení preskúmať samotné CGI.

CGI špecifikácia

Takže čo presne je „súbor pravidiel“, ktorý umožňuje programu CGI v, povedzme, Batavia, Illinois, komunikovať s webovým prehliadačom vo Vonkajšom Mongolsku? Oficiálnu špecifikáciu CGI spolu s množstvom ďalších informácií o CGI možno nájsť na serveri NCSA na adrese http://hoohoo . ncsa.uluc.edu/cgi/. Táto kapitola však existuje preto, aby ste nemuseli dlho cestovať a hľadať ju sami.

Existujú štyri spôsoby, ako CGI odovzdáva údaje medzi rámcom CGI-npor a webovým serverom, a teda webovým klientom:

  • premenné prostredia.
  • Príkazový riadok.
  • Štandardné vstupné zariadenie.
  • štandardné výstupné zariadenie.

Pomocou týchto štyroch metód server odošle všetky údaje odoslané klientom do programu CGI. Program CGI potom urobí svoje čaro a pošle výstup späť na server, ktorý ho prepošle klientovi.

Tieto údaje sú založené na serveri Apache HTTP. Apache je najpoužívanejší webový server a beží na takmer akejkoľvek platforme, vrátane Windows 9x a Windows NT. Môžu sa však použiť na všetky servery HTTP, ktoré podporujú CGI. Niektoré proprietárne servery, ako napríklad servery od spoločností Microsoft a Netscape, môžu mať ďalšie funkcie alebo môžu fungovať odlišne. Ako sa tvár webu neustále mení neuveriteľnou rýchlosťou, štandardy sa stále vyvíjajú a budúcnosť sa určite zmení. Čo sa však CGI týka, zdá sa, že táto technológia je dobre zavedená – cena za to je tá, že ju nahradili iné technológie, ako napríklad applety. Akékoľvek CGI programy, ktoré napíšete pomocou týchto informácií, budú takmer určite schopné bežať na väčšine webových serverov ešte mnoho rokov.

Keď je program CGI vyvolaný prostredníctvom formulára, najbežnejšieho rozhrania, prehliadač odošle serveru dlhý reťazec, ktorý začína cestou k programu CGI a jeho názvom. Potom nasledujú rôzne ďalšie údaje, nazývané informácie o ceste, ktoré sú odovzdané programu CGI cez premennú prostredia PATH_INFO (obrázok 9-1). Za informáciou o ceste nasleduje znak „?“, za ktorým nasledujú údaje formulára, ktoré sa odosielajú na server pomocou metódy HTTP GET. Tieto údaje sú sprístupnené programu CGI prostredníctvom premennej prostredia QUERY_STRING. Všetky údaje, ktoré stránka odošle pomocou najčastejšie používanej metódy HTTP POST, budú odovzdané programu CGI cez štandardný vstup. Typický reťazec, ktorý môže server prijať z prehliadača, je znázornený na obrázku 1. 9-1. pomenovaný program formread v katalógu cgi-bin volaný serverom s dodatočnými informáciami o ceste extra informácia a choice=help request data – pravdepodobne ako súčasť pôvodnej adresy URL. Nakoniec sa samotné údaje formulára (text "CGI programovanie" v poli "kľúčové slová") odosielajú prostredníctvom metódy HTTP POST.

Premenné prostredia

Keď server vykonáva program CGI, najprv mu odovzdá nejaké údaje, aby sa spustil vo forme premenných prostredia. V špecifikácii je oficiálne definovaných sedemnásť premenných, ale mnohé ďalšie sa neoficiálne používajú prostredníctvom nižšie opísaného mechanizmu s názvom HTTP_/nec/zams/n. CGI program

má prístup k týmto premenným rovnako ako všetky premenné prostredia shellu pri spustení z príkazového riadku. Napríklad v shell skripte je možné pristupovať k premennej prostredia F00 ako $F00; v Perle toto volanie vyzerá ako $ENV("F00") ; v C - getenv("F00") ; Tabuľka 9-1 uvádza zoznam premenných, ktoré vždy nastavuje server, aj keď sú nulové. Okrem týchto premenných sú dáta vrátené klientom v hlavičke požiadavky priradené premenným v tvare HTTP_F00 , kde F00 je názov hlavičky. Napríklad väčšina webových prehliadačov obsahuje informácie o verzii v hlavičke s názvom USEfl_AGENT . Váš rámec CGI npor môže získať tieto informácie z premennej HTTP_USER_AGENT.

Tabuľka 9-1.premenné prostredia CGI

premenná prostredia

Popis

CONTENT_LENGTH

Dĺžka údajov odovzdaných metódami POST alebo PUT v bajtoch.

DRUH OBSAHU

Typ MIME údajov pripojených pomocou metód POST alebo PUT.

GATEWAY_INTERFACE

Číslo verzie špecifikácie CGI podporovanej serverom.

PATH_INFO

Ďalšie informácie o ceste poskytnuté klientom. Napríklad na žiadosť http://www.myserver.eom/test.cgi/this/is/a/ cesta?pole=zelená hodnota premennej PATH_INFO bude /toto/je/a/cesta.

PATH_TRANSLATED

Rovnaké ako PATH_INFO, ale server vytvára všetko


Možný preklad, napríklad, rozšírenie názvu ako "-account". »

QUERY_STRING

Všetky údaje po „?“ v adrese URL. Toto sú tiež údaje odovzdané, keď je REQ-UEST_METHOD formulára GET.

REMOTE_ADDR

IP adresa klienta, ktorý požaduje.

VZDIALENÝ HOSTITEĽ

Názov hostiteľa klientskeho počítača, ak je dostupný.

REMOTE_IDENT

Ak webový server a klient podporujú identifikáciu typu identd, potom je to používateľské meno účtu, ktorý podáva požiadavku.

REQUEST_METHOD

Metóda, ktorú klient použil na vytvorenie požiadavky. Pre programy CGI, ktoré sa chystáme vytvoriť, to bude zvyčajne POST alebo GET.

NÁZOV SERVERA Názov hostiteľa – alebo IP adresa, ak názov nie je dostupný – počítača, na ktorom beží webový server.
PORT SERVERA Číslo portu používané webovým serverom.
SERVER_PROTOCOL
Protokol, ktorý klient používa na komunikáciu so serverom. V našom prípade je tento protokol takmer vždy HTTP.
SERVER_SOFTWARE Informácie o verzii webového servera, na ktorom je spustený program CGI.

SCRIPT_NAME

Cesta ku skriptu, ktorý sa má vykonať, podľa špecifikácie klienta. Dá sa použiť, keď adresa URL odkazuje sama na seba, takže skripty, na ktoré sa odkazuje na rôznych miestach, sa môžu vykonávať rôzne v závislosti od miesta.

Tu je príklad skriptu Perl CGI, ktorý vydáva všetky premenné prostredia nastavené serverom, ako aj všetky staršie premenné, ako napríklad PATH, nastavené shellom, ktorý spustil server.

#!/usr/bin/perl -w

vytlačiť<< HTML;

Typ obsahu: text/html\n\n

<р>Premenné prostredia

HTML

foreach (klávesy %ENV) ( tlač "$_: $ENV($_)
\n" ;)

vytlačiť<

HTML

Všetky tieto premenné môžu byť použité a dokonca modifikované vaším CGI programom. Tieto zmeny však neovplyvnia webový server, ktorý spustil program.

Príkazový riadok

CGI umožňuje odovzdať argumenty programu CGI ako voľby príkazového riadku, čo sa používa len zriedka. Používa sa zriedka, pretože jeho praktické využitie je málo a nebudeme sa ním podrobne zaoberať. Pointa je, že ak premenná prostredia QUERY_STRING neobsahuje znak " = ", potom sa program CGI spustí s parametrami príkazového riadku prevzatými z QUERY_STRING . napr. http://www.myserver.com/cgi- bin/finger?root spustí koreň prsta na www.myserver.com.

Existujú dve hlavné knižnice, ktoré poskytujú rozhranie CGI pre Perl. Prvý z nich - cgi-lib.pl Utility cgi-lib.pl veľmi bežné, pretože to bola dlho jediná veľká dostupná knižnica. Je navrhnutá tak, aby fungovala v Perle 4, ale funguje aj v Perle 5. Druhá knižnica, CGI.pm, novšie a v mnohých smeroch lepšie cgi-lib.pl CGI.pm napísaný pre Perl 5 a používa plne objektovo orientovanú schému na prácu s údajmi CGI. modul CGI.pm analyzuje štandardný vstup a premennú QUERY_STRING a uloží údaje do objektu CGI. Váš program potrebuje iba vytvoriť nový objekt CGI a použiť jednoduché metódy ako paramQ na extrahovanie údajov, ktoré potrebujete. Príklad 9-2 slúži ako krátka ukážka ako CGI.pm interpretuje údaje. Všetky príklady Perl v tejto kapitole budú použité CGI.pm.

Príklad 9-2. Analýza údajov CGI v jazyku Perl

#!/usr/bin/perl -w

použite CGI qw(:štandard);

# Používa sa modul CGI.pm. qw(:štandardné) importy

# namespace štandardných funkcií CGI, ktoré sa majú získať

# kód čističa. To možno vykonať, ak skript

# je použitý iba jeden CGI objekt.

$mycgi = nové CGI; #Vytvorte CGI objekt, ktorý bude „bránou“ k údajom formulára

@fields = $mycgi->param; # Extrahujte názvy všetkých vyplnených polí formulára

hlavička tlače, start_html("CGI.pm test"); ft metódy "header" a "start_html",

# poskytnuté

# CGI.pm uľahčuje získanie kódu HTML.

# "header" vypíše požadovanú HTTP hlavičku, a

#"start_html" vypíše hlavičku HTML s daným názvom,

#a tiež značka .

tlačiť"<р>Údaje formulára:
";

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

# Pre každé pole zobrazte názov a hodnotu získanú pomocou

# $mycgi->param("názov poľa").

print end_html; # Skratka pre výstup koncových značiek "".

Spracovanie vstupu v C

Keďže hlavné API pre MySQL a mSQL sú napísané v C, úplne neopustíme C v prospech Perlu, ale tam, kde je to vhodné, poskytneme niekoľko príkladov C. Existujú tri široko používané knižnice C na programovanie CGI: cgic Tom Boutell*; cgihtml Eugene Kim t a libcgi od EIT*. tomu veríme cgic je najkompletnejší a ľahko použiteľný. Chýba mu však možnosť vymenovať všetky premenné formulára, keď vám nie sú vopred známe. V skutočnosti sa dá pridať pomocou jednoduchého patchu, ale to je nad rámec tejto kapitoly. Preto v príklade 9-3 použijeme knižnicu cgihtml, zopakujte vyššie uvedený skript v jazyku C.

Príklad 9-3.Analýza údajov CGI v jazyku C

/* cgihtmltest.c - Všeobecný CGI program na tlač kľúčov a ich hodnôt

z údajov prijatých z formulára */

#include

#include "cgi-lib.h" /* Toto obsahuje všetky definície funkcií CGI */

#include "html-lib.h" /* Obsahuje "všetky definície pomocných funkcií pre HTML */

void print_all(lllist 1)

/* Tieto funkcie vypisujú údaje odoslané z formulára v rovnakom formáte ako vyššie uvedený skript v jazyku Perl. Cgihtml tiež poskytuje vstavanú funkciu

Print_entries(), ktorá robí to isté s použitím formátu zoznamu HTML. */ (

uzol*okno;

/* Typ "uzol" je definovaný v knižnici cgihtml a odkazuje na prepojený zoznam, ktorý obsahuje všetky údaje formulára. */

okno = i.hlava; /* Nastaví ukazovateľ na začiatok údajov formulára */

while (okno != NULL) ( /* Prejdite prepojeným zoznamom k poslednému (prvému prázdnemu) prvku */

printf(" %s:%s
\n",okno->zaznam.nazov,nahradit_ltgt(okno->zaznam.hodnota));

/* Výstupné dáta. Replace__ltgt() je funkcia, ktorá rozumie kódovaniu HTML textu a zaisťuje jeho správne zobrazenie v klientskom prehliadači. */

okno = okno->dalsie; /* Presun na ďalší prvok v zozname. */

} }

int main() (

zoznam položiek; /* Ukazovateľ na analyzované údaje*/

stav int; /* Celé číslo predstavujúce stav */

html_header(); /* Pomocná funkcia HTML, ktorá vypíše hlavičku HTML */

html_begin("cgihtml test");

/* Pomocná funkcia HTML, ktorá vypíše začiatok stránky HTML so zadaným nadpisom. */

status = read_cgi_input(&záznamy); /* Vykonáva vstup a analýzu údajov formulára */

printf("<р>Údaje formulára:
");

print_all (záznamy); /* Volá funkciu print_all() definovanú vyššie. */

html_end(); /* Pomocná funkcia HTML, ktorá zobrazuje koniec stránky HTML. */

List_clear(&entries); /* Uvoľní pamäť obsadenú údajmi formulára. */

návrat 0; )

Štandardné výstupné zariadenie

Dáta odoslané programom CGI na štandardný výstup sú načítané webovým serverom a odoslané klientovi. Ak názov skriptu začína na nph-,údaje sa odosielajú priamo klientovi bez zásahu webového servera. V tomto prípade musí program CGI vygenerovať platnú hlavičku HTTP, ktorej bude klient rozumieť. V opačnom prípade nechajte webový server vygenerovať hlavičku HTTP za vás.

Aj keď nepoužívate nph-script, musíte dať serveru jeden príkaz, ktorý mu povie informácie o vašom vydaní. Zvyčajne ide o hlavičku HTTP Content-Type, ale môže to byť aj hlavička Location. Za nadpisom musí nasledovať prázdny riadok, t. j. nový riadok alebo kombinácia CR/LF.

Hlavička Content-Type informuje server o tom, aký typ údajov poskytuje váš program CGI. Ak ide o stránku HTML, reťazec by mal byť Content-Type: text/html. Hlavička Location informuje server o inej adrese URL – alebo inej ceste na tom istom serveri – kam má nasmerovať klienta. Názov by mal vyzerať takto: Miesto: http:// www. môj server. com/other/place/.

Po hlavičkách HTTP a prázdnom reťazci môžete odoslať skutočné údaje, ktoré váš program vytvorí - HTML stránku, obrázok, text alebo čokoľvek iné. Medzi CGI programami, ktoré prichádzajú so serverom Apache, sú nph-test-cgi a test cgi, ktoré dobre demonštrujú rozdiel medzi nadpismi nph a non-nph.

V tejto časti budeme používať knižnice CGI.pm a cgic, ktoré majú funkcie na výstup hlavičiek HTTP aj HTML. To vám umožní sústrediť sa na výstup skutočného obsahu. Tieto pomocné funkcie sú použité v príkladoch skôr v tejto kapitole.

Dôležité vlastnosti CGI skriptov

V podstate už viete, ako CGI funguje. Klient odosiela dáta, zvyčajne prostredníctvom formulára, na webový server. Server spustí program CGI a odovzdá mu údaje. Program CGI vykoná svoje spracovanie a vráti svoj výstup na server, ktorý ho odošle klientovi. Teraz, od pochopenia toho, ako fungujú rámce CGI-npor, musíme prejsť k pochopeniu, prečo sú tak široko používané.

Hoci z tejto kapitoly už viete dosť na zostavenie jednoduchého fungujúceho CGI programu, je tu ešte niekoľko dôležitých vecí, ktoré je potrebné zvážiť predtým, ako budete môcť napísať skutočne fungujúce programy pre MySQL alebo mSQL. Najprv sa musíte naučiť pracovať s viacerými formulármi. Potom sa musíte naučiť niektoré bezpečnostné opatrenia, ktoré zabránia útočníkom získať nelegálny prístup k súborom vášho servera alebo ich zničiť.

Stavová pamäť

Stavovosť je životne dôležitým prostriedkom poskytovania dobrých služieb vašim používateľom, a to nielen v boji proti tvrdým zločincom, ako by sa mohlo zdať. Problém je spôsobený tým, že HTTP je takzvaný „bezpamäťový“ protokol. To znamená, že klient odošle dáta na server, server vráti dáta klientovi a potom si každý ide svojou cestou. Server neukladá údaje o klientovi, ktoré môžu byť potrebné v nasledujúcich operáciách. Rovnako nie je zaručené, že si klient uloží akékoľvek údaje o transakcii, ktoré môže neskôr použiť. To znamená okamžité a významné obmedzenie používania World Wide Web.

Skriptovanie CGI podľa tohto protokolu je analogické tomu, že si nemôžete zapamätať konverzáciu. Vždy, keď sa s niekým rozprávate, bez ohľadu na to, ako často ste sa s ním predtým rozprávali, musíte sa predstaviť a nájsť spoločnú tému, o ktorej sa budete rozprávať. Netreba dodávať, že to neprospieva produktivite. Obrázok 9-2 ukazuje, že zakaždým, keď požiadavka dosiahne program CGI, je to úplne nová inštancia programu bez spojenia s predchádzajúcim.

Na strane klienta sa s príchodom Netscape Navigator objavilo ošúchané riešenie s názvom cookies. Pozostáva z vytvorenia novej hlavičky HTTP, ktorú možno posielať tam a späť medzi klientom a serverom, podobne ako hlavičky Content-Type a Location. Klientsky prehliadač musí po prijatí hlavičky cookie uložiť údaje do cookie, ako aj názov domény, v ktorej cookie funguje. Potom vždy, keď sa navštívi URL v rámci špecifikovanej domény, hlavička cookie sa musí vrátiť na server na použitie v programoch CGI na tomto serveri.

Metóda cookie sa používa najmä na uloženie ID používateľa. Informácie o návštevníkoch môžu byť uložené v súbore na serveri. Jedinečné ID tohto používateľa môže byť odoslané ako súbor cookie do prehliadača používateľa, po ktorom zakaždým, keď používateľ navštívi stránku, prehliadač automaticky odošle toto ID na server. Server odovzdá ID programu CGI, ktorý otvorí príslušný súbor a získa prístup ku všetkým údajom o používateľovi. To všetko sa deje spôsobom, ktorý je pre používateľa neviditeľný.

Akokoľvek je táto metóda užitočná, väčšina veľkých stránok ju nepoužíva ako jediný prostriedok na zapamätanie stavu. Existuje na to viacero dôvodov. Po prvé, nie všetky prehliadače podporujú súbory cookie. Donedávna hlavný prehliadač pre zrakovo postihnutých (nehovoriac o ľuďoch so slabou rýchlosťou siete) – Lynx – nepodporoval súbory cookie. Stále ich „oficiálne“ nepodporuje, hoci niektoré z jej široko dostupných „bočných pobočiek“ áno. Po druhé, a čo je dôležitejšie, súbory cookie spájajú používateľa s konkrétnym počítačom. Jednou z veľkých predností webu je, že je prístupný odkiaľkoľvek na svete. Bez ohľadu na to, kde bola vaša webová stránka vytvorená alebo uložená, môže byť zobrazená z akéhokoľvek zariadenia pripojeného k internetu. Ak sa však pokúsite o prístup na stránku s povolenými súbormi cookie zo zariadenia niekoho iného, ​​všetky vaše osobné údaje, ktoré súbor cookie podporoval, sa stratia.

Mnoho stránok stále používa súbory cookie na prispôsobenie používateľských stránok, ale väčšina z nich ich dopĺňa tradičným rozhraním v štýle prihlasovania/hesla. Ak sa na stránku pristupuje z prehliadača, ktorý nepodporuje cookies, tak stránka obsahuje formulár, do ktorého používateľ zadá prihlasovacie meno a heslo, ktoré mu bolo pridelené pri prvej návšteve stránky. Zvyčajne je táto forma malá a skromná, aby neodstrašila väčšinu používateľov, ktorí nemajú záujem o žiadnu personalizáciu, ale chcú ísť jednoducho ďalej. Keď užívateľ zadá do formulára prihlasovacie meno a heslo, CGI nájde užívateľský dátový súbor, ako keby meno bolo odoslané s cookie. Pomocou tejto metódy sa používateľ môže zaregistrovať na personalizovanej webovej stránke odkiaľkoľvek na svete.

Okrem úloh účtovania preferencií používateľov a dlhodobého uchovávania informácií o nich možno uviesť jemnejší príklad zapamätania stavu, ktorý poskytujú populárne vyhľadávacie nástroje. Keď vyhľadávate pomocou služieb, ako sú AltaVista alebo Yahoo, zvyčajne získate oveľa viac výsledkov, než môžete zobraziť v ľahko čitateľnom formáte. Tento problém je vyriešený zobrazením malého počtu výsledkov – zvyčajne 10 alebo 20 – a poskytnutím niektorých prostriedkov navigácie na zobrazenie ďalšej skupiny výsledkov. Aj keď sa toto správanie zdá bežné a očakávané pre priemerného používateľa webu, skutočná implementácia nie je triviálna a vyžaduje si zapamätanie stavu.

Keď používateľ prvýkrát zadá požiadavku na vyhľadávací nástroj, zhromaždí všetky výsledky, ktoré môžu podliehať určitému vopred definovanému limitu. Trik je poskytnúť tieto výsledky súčasne v malom množstve, pričom si zapamätáte, aký druh používateľa tieto výsledky požadoval a akú časť očakáva ďalej. Ak odhliadneme od zložitosti samotného vyhľadávača, stojíme pred problémom dôsledne poskytnúť používateľovi nejaké informácie na jednej stránke. Zoberme si príklad 9-4, ktorý ukazuje CGI skript, ktorý vydáva desať riadkov súboru a umožňuje mu pozrieť sa na nasledujúcich alebo predchádzajúcich desať riadkov.

Príklad 9-4. Ukladanie stavu v CGI skripte

#!/usr/bin/perl -w

používať CGI;

Open(F,"/usr/dict/words") or die("Nedá sa otvoriť! $!");

#Toto je súbor, ktorý bude výstupom, môže to byť čokoľvek.

$výstup = nové CGI;

sub print_range ( # Toto je hlavná funkcia programu, my $start = shift;

# Počiatočný riadok súboru, môj $count = 0;

# Ukazovateľ, môj riadok $ = "";

# Aktuálny riadok súboru, vytlačiť $output->header,

$output->start_html("Môj slovník");

# Vygeneruje HTML s názvom „Môj slovník“, vytlačí „ \n";

zatiaľ čo (($count< $start) and ($line = )) ( $count++; )

# Preskočte všetky riadky pred začiatkom, zatiaľ čo (($count< $start+10) and ($line ? )) ( vytlačiť $riadok; $počet++; )

# Vytlačte ďalších 10 riadkov.

moje $nové ďalšie = $začiatok+10; moje $newprev = $start-10;

# Nastavte počiatočné reťazce pre adresy URL „Nasledujúca“ a „Predchádzajúca“,

tlačiť"

";

If ($start == 0) ( # Enable "Previous" URL, if you

# už nie je na začiatku.

print qq%Previous%; )

If (eof) ( # Include "Next" URL, pokiaľ # nie na konci súboru.

tlačiť qq%Next%;

}

vytlačiť "HTML;HTML

exit(0); )

# Ak neexistujú žiadne údaje, začnite odznova,

if (nie $output->param) (

&print_range(0); )

# V opačnom prípade začnite od reťazca uvedeného v údajoch.

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

V tomto príklade sa zapamätanie stavu vykonáva pomocou najjednoduchšej metódy. S ukladaním dát nie je problém, keďže ich uchovávame v súbore na serveri. Potrebujeme len vedieť, odkiaľ začať výstup, takže skript jednoducho obsahuje počiatočný bod pre ďalšiu alebo predchádzajúcu skupinu riadkov v adrese URL, čo je všetko, čo je potrebné na vygenerovanie ďalšej stránky.

Ak však potrebujete viac než len prechádzať súborom, spoliehanie sa na adresu URL môže byť ťažkopádne. Tento problém môžete zmierniť použitím formulára HTML a zahrnutím údajov o stave do značiek. SKRYTÝ typ. Túto techniku ​​s úspechom používa mnoho stránok, čo vám umožňuje prepojiť súvisiace programy CGI alebo rozšíriť používanie jedného programu CGI, ako v predchádzajúcom príklade. Namiesto odkazovania na konkrétnu entitu, ako je napríklad domovská stránka, môžu údaje adresy URL odkazovať na automaticky vygenerované ID používateľa.

Takto funguje AltaVista a iné vyhľadávače. Prvé vyhľadávanie vygeneruje ID používateľa, ktoré je implicitne zahrnuté v nasledujúcich adresách URL. Toto ID je spojené s jedným alebo viacerými súbormi obsahujúcimi výsledky dotazu. V URL sú zahrnuté ďalšie dve hodnoty: aktuálna pozícia vo výslednom súbore a smer, ktorým sa v ňom chcete posunúť ďalej. Tieto tri hodnoty sú všetko, čo je potrebné na spustenie výkonných navigačných systémov veľkých vyhľadávačov.

Chýba však niečo iné. Súbor použitý v našom príklade /usr/diéta/slova veľmi veľký. Čo ak ju necháme uprostred čítania, no chceme sa k nej vrátiť neskôr? Ak si nepamätáte URL nasledujúcej stránky, nie je možné sa vrátiť späť, ani AltaVista vám to nedovolí. Ak reštartujete počítač alebo začnete pracovať z iného, ​​nie je možné vrátiť sa k predchádzajúcim výsledkom vyhľadávania bez opätovného zadania dopytu. Táto dlhodobá stavovosť je však jadrom personalizácie webovej stránky, o ktorej sme hovorili vyššie, a oplatí sa vidieť, ako ju možno využiť. Príklad 9-5 je modifikovaná verzia príkladu 9-4.

Príklad 9-5. Trvalá stavová pamäť

#!/usr/bin/perl -w

používať CGI;

umask 0;

Open(F,"/usr/dict/words") or die("Nedá sa otvoriť! $!");

Chdir("users") or die("Nemôžem prejsť do adresára $!");

# Toto je adresár, kde budú uložené všetky údaje

# o používateľovi.

Výstup = nové CGI;

if (nie $output->param) (

vytlačiť $output->header,

$output->start_html("Môj slovník");

vytlačiť "HTML;


<р>Zadajte svoje užívateľské meno:


HTML

exit(0); )

$user = $output->param("meno pouzivatela");

## Ak súbor používateľa neexistuje, vytvorte ho a nainštalujte

## počiatočná hodnota v "0",

if (nie -e "$user") (

open (U, ">$user") alebo die("Nedá sa otvoriť! $!");

vytlačiť U "0\n";

zatvorte U;

&print_range("0");

##, ak používateľ existuje a nie je uvedený v adrese URL

## počiatočná hodnota, prečítajte si poslednú hodnotu a začnite odtiaľ.

) elsif (nie $output->param("start")) (

Open(U,"User") or die("Nedá sa otvoriť používateľ! $!");

$štart = ; zatvorte U;

chomp $starl;

upprint range($start);

## Ak používateľ existuje a nie je uvedený v adrese URL

## počiatočná hodnota, napíšte počiatočnú hodnotu

## do užívateľského súboru a spustiť výstup.

) inak (

Open(U,">$user") or die("Nedá sa otvoriť užívateľ na písanie! $!");

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

zatvorte U;

&print_range($output->param("začiatok 1)); )

sub print_range(

môj $štart = posun;

môj $počet = 0;

môj $line = " "

vytlačiť $output->header,

$output->start_html(" Môj slovník ");

tlačiť"

\n"; 

zatiaľ čo (($count< $start) and ($line = )) ( $count++; )

zatiaľ čo (($count< $start+10) and ($line = ))

vytlačiť $riadok; $pocet++;

moje $nové ďalšie = $začiatok+10;

moje $newprev = $start-10;

tlačiť"

pokiaľ (Začiatok == 0)

{

vytlačiť

qq%

predchádzajúce %;

}

pokiaľ (eof) ( print qq%Next%;

# Všimnite si, že používateľské meno „username“ je pripojené k adrese URL.

# V opačnom prípade CGI zabudne, s ktorým používateľom má do činenia.

}

vytlač $output->end_html;

exit(0") ;

}

Bezpečnostné opatrenia

Pri prevádzke internetových serverov, či už HTTP alebo iných, je bezpečnosť najdôležitejším problémom. Výmena údajov medzi klientom a serverom, vykonávaná v rámci

CGI nastoľuje množstvo dôležitých otázok súvisiacich s ochranou údajov. Samotný protokol CGI je pomerne bezpečný. Program CGI prijíma vstup zo servera prostredníctvom štandardného vstupu alebo premenných prostredia, pričom obe sú bezpečné. Ale akonáhle má CGI program pod kontrolou dáta, jeho akcie sú neobmedzené. Zle napísaný program CGI môže útočníkovi umožniť získať prístup k systému servera. Zvážte nasledujúci príklad programu CGI:

#!/usr/bin/perl -w

používať CGI;

môj $výstup = nové CGI;

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

vytlačiť $output->header, $output->start_html("Výstup prstom"),

"

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

Tento program poskytuje príkazu platné rozhranie CGI prstom. Ak spustíte program rovnako ako finger.cgi, zobrazí zoznam všetkých aktuálnych používateľov na serveri. Ak to spustíte ako finger.cgi?username=fred, potom sa na serveri zobrazia informácie o používateľovi „fred“. Môžete to dokonca spustiť ako prstom. oo.com na zobrazenie informácií o vzdialenom používateľovi. Ak to však spustíte ako finger.cgi?username=fred; môžu sa stať nechcené veci. Operátor spätného ťahu """ " v Perle spustí proces shellu a vykoná príkaz, ktorý vráti výsledok. V tomto programe" prst $username* používa sa ako jednoduchý spôsob vykonania príkazu prsta a získania jeho výstupu. Väčšina shellov však umožňuje kombinovať viacero príkazov na rovnakom riadku. Napríklad každý procesor, ako je procesor Bourne, to robí s "; ". Takže"finger Fred; mail najprv spustite príkaz prst a potom príkaz pošty ktorý môže poslať celý súbor hesiel servera nechcenému používateľovi.

Jedným z riešení je analyzovať údaje formulára a hľadať škodlivý obsah. Môžete, povedzme, vyhľadať symbol ";" a vymažte všetky znaky za ním. Alternatívnymi metódami je možné takýto útok znemožniť. Vyššie uvedený program CGI je možné prepísať takto:

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

používať CGI;

môj $výstup = nové CGI;

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

$|++;

# Zakázať ukladanie do vyrovnávacej pamäte, aby sa všetky údaje odoslali klientovi,

vytlačiť $output->header, $putput->start_html("Výstup prstom"), "

\n"; 

$pid = open(C_OUT, "-|");# Tento idióm v Perle vytvorí podriadený proces a otvorí sa

# kanál medzi nadradenými a podradenými procesmi,

if ($pid) (# Toto je nadradený proces.

vytlačiť ; ft Vytlačí výstup podriadeného procesu.

tlačiť"

", $output->end_html;

exit(O); ft Ukončite program. )

elsif (definované $pid) ( # Toto je podriadený proces.

$|++; # Zakázať ukladanie do vyrovnávacej pamäte.

exec("/usr/bin/finger",$username) or die("volanie exec() zlyhalo.");

# Vykonajte prstový program s používateľským menom ako jediným
# argument príkazového riadku. ) else ( die("fork() failed"); )

# Kontrola chýb.

Ako vidíte, nejde o oveľa komplexnejší program. Ale ak to spustíte ako finger.cgi?username=fred; potom sa prstový program vykoná s argumentom fred;mail ako jedno používateľské meno.

Ako dodatočné bezpečnostné opatrenie tento skript spúšťa prst explicitne ako /usr/bin/finger. V nepravdepodobnom prípade, že webový server odovzdá vášmu programu CGI nezvyčajnú PATH, spustenie len prstom môže spôsobiť spustenie nesprávneho programu. Ďalšie bezpečnostné opatrenie možno vykonať preskúmaním premennej prostredia PATH a uistením sa, že má prijateľnú hodnotu. Je dobré odstrániť aktuálny pracovný adresár z PATH, pokiaľ si nie ste istí, že to tak nie je, keď v ňom skutočne potrebujete spustiť program.

Ďalšie dôležité bezpečnostné hľadisko sa týka používateľských práv. Webový server štandardne spúšťa program CGI s právami užívateľa, ktorý samotný server spustil. Zvyčajne ide o pseudopoužívateľa, napríklad „nikto“, ktorý má obmedzené práva, takže program CGI má tiež málo práv. To je zvyčajne dobrá vec, pretože ak má útočník prístup k serveru prostredníctvom programu CGI, nebude môcť spôsobiť veľa škody. Príklad krádeže hesla ukazuje, čo sa dá urobiť, ale skutočné poškodenie systému je zvyčajne obmedzené.

Spustenie ako obmedzený používateľ však tiež obmedzuje možnosti CGI. Ak program CGI potrebuje čítať alebo zapisovať súbory, môže tak urobiť len tam, kde má toto povolenie. Napríklad v druhom príklade stavu je súbor udržiavaný pre každého používateľa. Program CGI musí mať povolenie na čítanie a zápis do adresára obsahujúceho tieto súbory, nehovoriac o samotných súboroch. Môžete to urobiť vytvorením adresára ako rovnaký používateľ ako server, s oprávneniami na čítanie/zápis len pre tohto používateľa. Avšak pre používateľa ako „nikto“ má túto schopnosť iba root. Ak nie ste superužívateľ, potom budete musieť pri každej zmene v CGI komunikovať so správcom systému.

Ďalším spôsobom je sprístupniť adresár voľným na čítanie a zápis, čím sa z neho efektívne odstráni akákoľvek ochrana. Keďže jediný spôsob, ako sa k týmto súborom dostať z vonkajšieho sveta, je cez váš program, nebezpečenstvo nie je také veľké, ako by sa mohlo zdať. Ak sa však v programe nájde diera, vzdialený používateľ bude mať plný prístup ku všetkým súborom, vrátane možnosti ich zničiť. Okrem toho budú môcť tieto súbory upravovať aj legitímni používatelia pracujúci na serveri. Ak sa chystáte použiť túto metódu, potom všetci používatelia servera musia byť dôveryhodní. Otvorený adresár tiež používajte len pre súbory, ktoré potrebuje program CGI; inými slovami, nevystavujte nepotrebné súbory riziku.

Ak je toto vaša prvá skúsenosť s programovaním CGI, ďalšie vzdelávanie môže pokračovať rôznymi spôsobmi. Na túto tému boli napísané desiatky kníh, z ktorých mnohé nepredpokladajú žiadne znalosti programovania. Programovanie CGI na World Wide Web vydavateľstvo O "Reilly and Associates pokrýva materiál od jednoduchých scenárov v rôznych jazykoch až po skutočne úžasné triky a triky. Verejné informácie sú bohaté aj na WWW. Je dobré začať s CGI je skutočne jednoduché(Naozaj len o CGI) na http://www.jmarshall.com/easy/cgi/ .

CGI a databázy

Od začiatku éry internetu boli databázy vzájomne prepojené s vývojom World Wide Web. V praxi mnoho ľudí vníma web len ako jednu obrovskú databázu multimediálnych informácií.

Vyhľadávače poskytujú každodenný príklad výhod databáz. Vyhľadávač neprejde celý internet a nehľadá kľúčové slová v momente, keď ich o ne požiadate. Namiesto toho vývojári stránky používajú iné programy na vytvorenie obrovského indexu, ktorý slúži ako databáza, z ktorej vyhľadávač získava záznamy. Databázy uchovávajú informácie spôsobom, ktorý umožňuje rýchle vyhľadávanie s náhodným prístupom.

Vďaka svojej nestálosti dávajú databázy webu ešte väčšiu silu: menia ho na potenciálne rozhranie pre čokoľvek. Napríklad správu systému možno vykonávať na diaľku cez webové rozhranie namiesto toho, aby sa od správcu prihlasoval do požadovaného systému. Pripojenie databáz k webu je jadrom novej úrovne interaktivity na internete.

Jeden z dôvodov, prečo sú databázy pripojené k webu, sa objavuje pravidelne: veľa svetových informácií je už v databázach. Databázy, ktoré existovali pred príchodom webu, sa nazývajú staršie databázy (na rozdiel od databáz, ktoré nie sú prepojené s webom a boli vytvorené v poslednom čase, čo by sa malo nazývať „zlý nápad“). Mnohé spoločnosti (a dokonca aj jednotlivci) teraz čelia výzve poskytnúť prístup k týmto starým databázam cez web. Pokiaľ nie je vašou starou databázou MySQL alebo mSQL, táto téma nespadá do rozsahu tejto knihy.

Ako už bolo povedané, iba vaša predstavivosť môže obmedziť komunikáciu medzi databázami a webom. V súčasnosti sú na webe dostupné tisíce jedinečných a užitočných databáz. Typy databáz, ktoré fungujú mimo týchto aplikácií, sú celkom odlišné. Niektoré z nich používajú CGI programy ako rozhranie k databázovému serveru, ako je MySQL alebo mSQL. Tieto typy nás najviac zaujímajú. Iní používajú komerčné aplikácie na interakciu s populárnymi počítačovými databázami, ako sú Microsoft Access a Claris FileMaker Pro. A iní jednoducho pracujú s plochými textovými súbormi, čo sú tie najjednoduchšie možné databázy.

Tieto tri typy databáz možno použiť na vývoj užitočných webových stránok akejkoľvek veľkosti a zložitosti. Jedným z našich cieľov v niekoľkých nasledujúcich kapitolách bude priniesť výkon MySQL mSQL na web pomocou programovania CGI.

Majitelia internetových obchodov poznajú pojem „elektronický obchod“ na vlastnej koži, určite poznajú odpoveď na otázku „elektronický obchod – čo to je“. Ale ak pochopíte podstatu, potom sa objavia mnohé nuansy a tento pojem nadobudne širší význam.

Elektronický obchod: čo to je?

Všeobecná koncepcia je nasledovná: elektronický obchod je chápaný ako určitý prístup k podnikaniu, ktorý zahŕňa zahrnutie množstva prevádzok, ktoré využívajú digitálny prenos dát pri poskytovaní tovaru alebo poskytovaní služieb/práce, a to aj prostredníctvom internet.

Ide teda o akúkoľvek obchodnú transakciu, ktorá sa uskutočňuje pomocou elektronických komunikačných prostriedkov.

Schéma práce je usporiadaná takto:

  • do tohto systému sa zaregistruje každý môže byť blogerom alebo iným vlastníkom vlastnej internetovej stránky;
  • dostane svoj vlastný odkaz;
  • umiestni na svoju webovú stránku špeciálny kód - zobrazí sa reklama vybraného oficiálneho partnera siete e-Commerce Partners Network;
  • monitoruje konverziu webových stránok;
  • zarobí určité percento za každý nákup návštevníka jeho stránky, ktorý klikol na pridružený odkaz.

Elektronický obchod WP

Veľký počet ľudí je v súčasnosti nadšený pre elektronický obchod, predovšetkým kvôli túžbe vytvoriť si vlastnú webovú stránku, jedinečný internetový obchod na predaj vlastných produktov. Na uspokojenie tohto rastúceho dopytu sa vývojári zamerali na vytváranie šablón elektronického obchodu (šablóny elektronického obchodu). Čo to je, zvážime ďalej.

Jedným z takýchto príkladov šablón je elektronický obchod WordPress. Ide o doplnok nákupného košíka pre WordPress (jeden z najznámejších systémov na správu webových zdrojov, určený predovšetkým na vytváranie a organizovanie blogov). Poskytuje sa úplne bezplatne a umožňuje návštevníkom stránky nakupovať na internetovej stránke.

Inými slovami, tento doplnok vám umožňuje vytvoriť internetový obchod (založený na WordPress). Tento doplnok elektronického obchodu má všetky potrebné nástroje, nastavenia a možnosti, aby vyhovoval dnešným potrebám.

Elektronický obchod v zrozumiteľnej ruštine. Ako funguje podnikanie na internete?

V poslednej dobe sa objavuje čoraz viac projektov súvisiacich s online obchodom. Pri štúdiu tohto smeru som nenašiel všeobecný a zrozumiteľný popis procesu. Preto som sa rozhodol spraviť niečo ako cheat sheet, na ktorý sa môžete vždy odvolať, aby ste pochopili postup v takej oblasti, ako je elektronický obchod.

Hneď urobím rezerváciu, že som sa zameral na procesy a kanály, ktoré pomáhajú priviesť zákazníkov.

Elektronický obchod: o čo ide?

Definície z rôznych zdrojov hovoria niečo o predaji tovaru alebo služieb cez internet. Jednoducho povedané, elektronický obchod je akákoľvek aktivita na sieti, kde sa objavujú peniaze.

Nakupovanie, predaj, poistenie, bankovníctvo, elektronické peniaze, všetko je tu. Vezmite to, podpíšte to.

Od cieľa

Aby som pochopil problém, navrhujem začať cestu od úplného konca. Čo je cieľom každého podnikania? Správne, zarábajte peniaze. Predstavte si teda akýkoľvek produkt, napríklad silikónové ponožky. Prečo nie!

Vzal som prvú vec, ktorá ma napadla, ukázalo sa, že je to toto ...

Našou úlohou je zarobiť na týchto ponožkách. Myslíme na internet. Hmm...prečo „nezrežte“ stránku a takto pôjde predaj, len si nechajte Maldivy! Nie všetko je však také jednoduché.

Veľmi rada kreslím. Pomáha pochopiť rôzne procesy. Poďme kresliť?!

Náš model zatiaľ vyzerá takto. Vezmeme ponožky, dáme ich na internet a dostaneme peniaze. Je to jednoducho skvelé! Oči horia, dlane sa potia a už sa chcem venovať tomuto biznisu. Potrebujete však vytvoriť webovú stránku alebo platformu na predaj?

Webová stránka alebo platforma na predaj

Existujú rôzne riešenia na umiestnenie vášho produktu na World Wide Web. Môžete si vytvoriť vlastnú webovú stránku alebo použiť stránky tretích strán (skupiny, stránky v sociálnych sieťach, nástenky atď.). Zastavme sa na mieste.

Objednali si webovú stránku, vzali hotovú šablónu alebo ju vytvorili sami pomocou konštruktora (CMS sa dá vygoogliť), na tom nezáleží. Potom umiestnili kopu silikónových ponožiek rôznych typov a sú šťastní.

Prepáčte, že som prerušil čítanie. Pripojte sa k môjmu telegramovému kanálu. Čerstvé oznámenia článkov, vývoj digitálnych produktov a rastový hack, všetko je tam. Čakám na teba! Pokračujeme...

Platobné systémy

Ale aby u vás mohol človek nakúpiť tu a teraz, bude potrebné vyladiť platobné systémy. Ide o druh služby, ktorá vám umožňuje nakupovať online prostredníctvom: bankových kariet, internetových peňazí, mobilných telefónov a mnohých ďalších vecí. Na to budete musieť zdieľať percento transakcií, ale týmto spôsobom si výrazne zjednodušíte život.

Vyberte si službu, ktorá vám vyhovuje. Niekde bude vyššie percento a niekde predplatiteľ alebo niečo iné. Stačí trochu preskúmať otázku. Vložte si potrebný kód na stránku, prepojte všetky transakcie so svojím kartovým účtom a voila!

To by sa zdalo byť všetko. Existuje webová stránka, produktové karty a dokonca aj tlačidlo „kúpiť“ funguje, ale niečo tomu chýba... Neexistuje žiadny tok zákazníkov, ktorí budú nakupovať.

Zákaznícke toky

Kde: CAC = náklady na akvizíciu nového zákazníka. MKC (náklady na marketingové kampane) = celkové náklady vynaložené na marketing na získanie (ale nie udržanie) zákazníkov. W (mzdy) = Plat pre obchodníkov a manažérov predaja. S (softvér) = Náklady na softvér používaný v reklame a predaji (napr. predajná platforma, automatizácia marketingu, A/B testovanie, analytické služby atď.). PS (professionalservices) = náklady na odborné služby poskytované marketingovým a obchodným oddeleniam (dizajn, poradenstvo atď.). O (ostatné) = Ostatné režijné náklady súvisiace s marketingovými a obchodnými oddeleniami. CA (customersacquired) = Celkový počet získaných zákazníkov.

Netreba ale zabúdať na kvalitu klienta, tu pomôže LTV.

Dôležité ukazovatele: LTV

Live Time Value, životný cyklus zákazníka, je ďalšou metrikou elektronického obchodu, ktorú treba zvážiť. Ukazuje, aký príjem v priemere prináša jeden klient. Sú rôzne prístupy k výpočtu, ako jeden z najpresnejších som zvolil skutočný zisk.

Je to jednoducho súčet celkových výnosov z histórie nákupov pre každého jednotlivého zákazníka. K transakcii N pridajte súčet všetkých nákupov (transakcií) zákazníkov, pričom transakcia N je posledný nákup, ktorý zákazník uskutočnil vo vašej spoločnosti. Ak máte prístup ku všetkým údajom o transakciách zákazníkov, môžete to jednoducho vypočítať pomocou Excelu.

LTV = (transakcia 1 + transakcia 2 + transakcia 3… + transakcia N) x podiel na zisku na výnosoch.

Výpočet LTV na základe čistého príjmu v konečnom dôsledku ukazuje skutočný zisk, ktorý klient prináša vašej spoločnosti. Tu sa berú do úvahy náklady na služby zákazníkom, náklady na uchovanie, náklady na akvizíciu atď. Výsledkom je celý komplex výpočtov založených na jednotlivých údajoch. Kumulatívny zisk vytvorený jedným klientom v priebehu času vám poskytne presné pochopenie doterajšej ziskovosti vašich klientov.

Ďalšie prístupy možno nájsť na.

Dôležité metriky: pomer CAC k LTV

Pre pochopenie životaschopnosti podnikania je veľmi dôležité pozrieť sa na pomer dvoch spomínaných metrík CAC:LTV.

  • Menej ako 1:1 – Smerujete k bankrotu.
  • 1:1 - Pri každom prilákanom klientovi strácate peniaze.
  • 1:2 – Znie to dobre, ale zdá sa, že neinvestujete dostatočne a mohli by ste rásť rýchlejšie. Spustite agresívnejšie kampane na získavanie zákazníkov a dosahujte pomery takmer 1:3.
  • 1:3 - Ideálny pomer. Máte prosperujúce podnikanie a silný obchodný model.

Dôležité ukazovatele: Nezabúda sa na ROI

Ako sme uviedli vyššie, v elektronickom obchode je potrebné jasne pochopiť, či je výhodné použiť akvizičný kanál alebo nie. Okrem LTV a CAC je tu ešte jeden dôležitý ukazovateľ, ktorým je ROI. Ukazuje, či sa vám investícia vyplatila, v našom prípade do reklamy. To jest. koľko nám nakoniec priniesol 1 investovaný rubeľ.

Na výpočet sa používa veľmi jednoduchý vzorec:

Kde „Výnosy z kampane“ je rozdiel medzi výnosmi kanála a nákladmi na váš produkt. Ak chcete vypočítať zisk, odpočítajte ďalšie náklady na reklamu.

Podrobnejší vzorec by teda vyzeral takto:

NI = (výnosy kanála – náklady) – reklamné náklady / reklamné náklady x 100 %

Prečítajte si podrobnejší príklad s výpočtom. V skutočnosti je tento jednoduchý vzorec umiestnený celý v tej istej excelovej tabuľke, kde sa všetko vypočíta automaticky.

Všetky tri ukazovatele, ktoré sme analyzovali, sú dôležité v elektronickom obchode. Každý z nich vám umožňuje nájsť úzke miesta vo vašich streamoch a pracovať s nimi. Práve v nich je potenciál rastu podnikania. Do nášho modelu som pridala trochu viac s ponožkami.

Do jedného materiálu sa všetko vtesnať nedá a kto to bude tak dlho čítať? Neskôr urobím samostatnú príručku o nuansách elektronického obchodu, ktoré môžu narušiť predaj.

Celkom

Vo všeobecnosti máte teraz všeobecný prehľad o online obchodovaní alebo elektronickom obchode. Ďalej, ako sa hovorí: "Diabol je v detailoch." Študujte každý z kanálov samostatne, vypočítajte ukazovatele výkonnosti a hľadajte nové poznatky v detailoch. Internetový predaj pre vás, áno viac! A ešte jedna vec odo mňa.

Áno, skoro by som zabudol, šťastný nový rok vám, milí čitatelia! Prajem vám veľa víťazstiev a úspechov v nasledujúcom roku!



chyba: Obsah je chránený!!