CGI skripty: čo to je, spôsoby, ako ich vytvoriť

CGI je skratka pre Common Gateway Interface. Ide o takzvaný malý program, ktorý ponúka spoľahlivý spôsob interakcie webových serverov v prehliadači tým, že vykoná tieto metódy, ktoré nebolo možné s HTML. Väčšina skriptov CGI je napísaná v jazyku Perl. Toto je obvyklý programovací jazyk používaný na vytváranie skriptov na strane servera so štandardným textovým súborom s príponou (.cgi).

Základné podmienky programu

Skôr ako použijete CGI skripty, používateľ musí overiť, či ich stránky sú podporované daným webom, a určiť, či má vývojár právo použiť skript. Niektorí hostitelia to neumožňujú. Ak vývojár webu vidí priečinok CGI-bin pri sťahovaní súborov HTML, je povolené používať skripty GCI.


Niektorí hostitelia si vyžiadajú funkciu CGI-bin, pretože nie je vždy predvolene poskytovaná. Ostatní hostitelia môžu testovať a schvaľovať skripty skôr, než udelia povolenie na používanie skriptov CGI. Ak vývojár nepotrebuje úpravu, potrebuje textový editor na napísanie skriptu pre požiadavky na lokalitu. Bez ohľadu na to, aký editor je určený na použitie, je dôležité uložiť súbor ako obyčajný text. Okrem toho budete potrebovať program FTP, ktorý je dodávaný s komerčnou verziou Pro alebo bezplatnou verziou Lite. Každá voľba bude fungovať tak dlho, ako sa načíta v režime ASCII, aby vám pomohla prejsť inštaláciou, pretože vytváranie CGI skriptov môževezmite veľa času.


Konfigurácia a inštalácia

Ak má používateľ CGI-bin, potom je dobrá šanca spustiť skript CGI. Pre správnu inštaláciu odporúčame zobraziť náhľad stránky bežných problémov s hostiteľom webových stránok, ovládacieho panela stránok, podporných dokumentov alebo inštalačných správ. Jednou z najčastejších chýb webmastera je inštalácia skriptov CGI so zlou cestou. Ak už existuje otvorený skript na použitie, cesta musí byť správna, inak server nebude fungovať. Pokiaľ sa skript otvorí, skontrolujte spätnú väzbu pre všetky premenné, ktoré vyžadujú inštaláciu a komentáre na tento riadok začínajúce "#". Keď je zadaný skript pre server, spustite preberanie. Uistite sa, že to robíte v režime ASCII, pretože jednoduchý skript CGI je textový súbor. Z technického hľadiska môžu byť skripty vykonávané z ľubovoľného adresára, ale väčšina hostiteľov umožňuje, aby sa tieto vykonávali iba s CGI-binom. Rovnako dôležité je použiť správne povolenie pre súbory, ktoré používajú skript CGI.

Súborové povolenie

Existujú tri typy prístupu k údajom s tromi rôznymi povoleniami pre každú skupinu.
Servery Unix vám umožňujú nastaviť rôzne úrovne prístupu. Je dôležité vedieť, ktoré oprávnenia má skript:
  • Skupina - pozostáva z pridaných používateľov na serveri. V prípade potreby budú môcť odstrániť povolenie.
  • Užívateľ - pozostáva len z vlastníka súboru v skupine, to je hostiteľský účet.
  • Ďalšia skupina sa skladá zo všetkých ostatných aspektov na serveri.
  • Čítanie - umožňuje používateľom čítať a rozumieť údajom uvedeným v súbore.
  • Povolenie zápisu a zápisu umožní používateľom dešifrovať a napísať nové dátumy a odstrániť staré dáta z archívu.
  • Vykonať - povolenie na vykonanie, umožní odoslanie súboru iba vtedy, ak je spustený program alebo skript na nahrávanie CGI exe. Predbežné potvrdenie, že skript bude fungovať pred odkazom vo verejnom režime.
  • Príklad aplikačnej aplikácie

    CGI - Program zjednodušuje vytváranie komplexných, vysokovýkonných, viacerých webových aplikácií, navrhovanie, písanie a vývoj webových projektov. Inteligentne využíva používanie moderných technológií a metód, ktoré vývojár spája s ľubovoľnou sadou operačných systémov alebo serverových nástrojov.
    má nízku hmotnosť (pokiaľ ide o využitie pamäte), takže je vhodný pre normálne prostredie, CGI, a výberu vysoko výkonných permanentných médiá ako FastCGI alebo mod_perl. Pridávanie pluginov s rastúcimi potrebami, môžete použiť pokročilé funkcie, ak sú potrebné, napríklad, budete musieť napísať žiadosť o vyhľadávanie v databáze widgetov. Skript inštancie je to, čo používateľ skutočne volá webový server. Jedná sa o veľmi malý jednoduchý súbor, ktorý jednoducho vytvorí inštanciu programového rozhrania a vyvolá metódu dedičného spustenia (). Nižšie je uvedený úplný opis «widgetview.cgi»: #! /Usr /bin /perl -wuse WidgetView my $ webapp = WidgetView- & gt; new () $ webapp- & gt; run () Ako vidíte, widgetview.cgi jednoducho využíva aplikovanú Modul, ktorý balík implementujePerl s názvom WidgetView.pm. Aplikácia CGI sa stará o implementáciu nových () a run () metód. V takom prípade nesmie používateľ nikdy zavolať print () na odoslanie výstupu do STDOUT. Namiesto toho sa celý výstup vráti ako skalárny.
    CGI je najvýznamnejším príspevkom k riadeniu stavu žiadosti. Všetko, čo je potrebné na napredovanie programu, je nastaviť hodnotu parametra formulára HTML "rm" na hodnotu režimu vykonávania, ktorá sa má spracovať odoslaním formulára. Toto je kľúč k aplikácii CGI.

    Metódy skriptovania

    Použitím aplikácie CGI, používateľ pristupuje k viacerým vloženým metódam. Nižšie sú uvedené tie, ktoré sú volané zo skriptu. Metóda new () je konštruktér pre CGI. Vráti odkaz na aplikačný balík (trieda). Môže prijať súbor parametrov ako dvojice: key = & gt; hodnota.
    Táto metóda môže mať niektoré špecifické parametre:
  • TMPL_PATH - Definuje cestu k adresáru šablón.
  • QUERY - umožňuje zadať už vytvorený objekt žiadosti CGI.pm.
  • PARAMETRE - tento parameter vám umožňuje nastaviť počet prispôsobiteľných režimov počas vykonávania. Odovzdaním rôznych hodnôt v rôznych skriptoch inštancií, ktoré používajú rovnaký programový modul, môžete dosiahnuť vyššiu úroveň opätovného použitia.
  • Spúšťanie () sa volá do objektu aplikačného modulu zo skriptu. Pri volaní spúšťa funkčnosť rozhrania aplikačného modulu.

    Táto metóda najprv definuje stav aplikácie pri pohľade na hodnotu parametra CGI špecifikovaného parametrom parameter_param (). Štandardne platí "rm" pre režim "Run", ktorý bude obsahovať názov režimu prevádzky. aktoto nie je špecifikované, predvolený stav sa rovná hodnote start_mode (). Akonáhle definovaného režimu spustenia () prehľadá odosielanie tabuľku uloženú v run_modes (), a nájde ukazovateľ funkcie, ktorá je zavedená s názvom režimu. Ak sa nájde, funkcia sa vyvolá a vrátené dáta () sa posielajú do STDOUT a do prehliadača. Ak sa zadaný režim nenachádza v tabuľke run_modes (), spustite () krok ().

    Podpora PSGI

    Aplikácia ponúka vstavanú podporu pre PSGI. Predvolené objekt Otázka je to: psgi_app () $ psgi_coderef = WebApp- & gt; psgi_app ({args novému ()}) Najjednoduchší spôsob, ako - ako vytvoriť a vrátiť PSGI - kompatibilný coderef. Musíte preniesť argumenty na hashref rovnakým spôsobom ako nový. Týmto sa vracia kódovač kompatibilný s PSGI pomocou objektu CGI ::: PSGI ako objektu dotazu. Ak chcete použiť iný dotaz objektu, vytvoriť svoj vlastný objekt run_as_psgi (), ako je uvedené nižšie: run_as_psgi () my $ psgi_aref = $ webapp- & gt; run_as_psgi Rovnako ako beh, tlač, štruktúra nezobrazuje a nevracia dáta , ktoré vyžaduje špecifikácia PSGI. Použite ho, ak chcete spustiť aplikáciu pomocou psovodu kompatibilného so službou PSGI, napríklad Plack. Konečný výsledok môže vyzerať takto:
    Špecifikácia PSGI môže vrátiť popisovač súborov alebo odkaz podprogramu namiesto reťazcov bajtov. V režime PSGI je podporovaný priamo aplikáciou CGI.

    Spôsob možné nové vymedzenie

    CGI implementuje niektoré metódy, ktoré sa očakáva, že majú prednosť ich implementácia modulov podtriedy. Tieto metódy sú nasledovné:
  • Nastavenie (). Táto metóda sa nazýva metódou zdedeného konštruktora new ().
  • Metóda setup () by sa mala použiť na definovanie ďalšej vlastnosti metód.
  • Metóda setup () môže zavolať ľubovoľné inštancie inštancie vlastnej aplikácie. Táto funkcia je dobrým miestom pre určenie vlastností špecifických pre program pomocou $ webapp- & gt; param () Metóda setup () môže byť implementovaná ako obrázok nižšie:
    Avšak, často všetko, čo potrebuje byť setup (), definuje režimy štartu AutoRunmode, ktorý umožňuje, aby to s jednoduchou syntaxou pomocou atribútov spustí režim. Metóda Teardown (). Ak je implementovaný, nazýva sa automaticky po vytvorení skriptov CGI a spustení programu. Môže byť použitý na čistenie po operáciách. Používanie typickú teardown () - zakáže pripojenie k databáze, ktorý bol nainštalovaný v nastavení volieb (). Môžete tiež použiť metódu teardown () na ukladanie informácií o stave programu na serveri: cgiapp_init ().

    Odosielanie net URI na spustenie režimov

    Moderné webové rámca zaobísť bez obmedzenia URI namiesto poskytnutia URI v čistote: Clean /cgi-bin/item.cgi?rm=view&id=15 URI popísať navzájom a ten istý zdroj môže byť: /item /15 /view. Proces zodpovedajúce URI spustiť sa nazýva dispečerské módy a spracovaný CGI :: aplikácie :: Dispatch. Nie je potrebný ďalší správca. Môžete pracovať na projekte CGI :: aplikácie na ploche alebo notebooku bez inštalácie plnohodnotný webový server, napríklad Apache. Namiesto toho nainštalujte CGI :: Application :: Server s CPAN. Po inštalácii bude používateľ po niekoľkých minútachváš vlastný aplikačný server. Vykonajte automatizované testovanie. Test :: WWW :: Mechanize :: CGIApp umožňuje vykonať funkčné testovanie aplikácie CGI :: App bez spustenia webového servera. Test :: WWW :: Mechanize možno použiť na overenie programu prostredníctvom tohto webového servera. Priame testovanie je tiež jednoduché. CGI - Program zvyčajne vytlačí výstupné dáta svojich prevádzkových režimov v STDOUT. Toto možno potlačiť pomocou premennej prostredia CGI_APP_RETURN_ONLY. Aplikácia má plug-in architektúru, ktorá sa ľahko používa a vyvíja nové plug-iny.

    Obsahové rozhranie CGI

    Bola to prvá špecifikácia určená na vývoj dynamického obsahu na webovom serveri. Obsah CGI dodávaný používateľom nie je statický kód HTML čítaný zo súboru na serveri. Jedná sa o dynamický obsah vytvorený v skripte, ktorý dokáže extrahovať informácie z databázy, upravovať obsah na typ prehliadača, spýta sa, či ide o nového používateľa alebo nie. PHP je jazyk špeciálne určený na implementáciu dynamického obsahu na webových serveroch. To umožňuje oveľa jednoduchšie vytvárať CGI skripty v PHP ako v iných jazykoch. Po spustení servera poskytuje všetky kontextové informácie, ktoré potrebuje:
  • Úplné informácie o dopyte, vrátane názvu /IP vzdialeného hostiteľa, požadovanej adresy URL a jej argumentov, reťazec dopytu (ak existuje).
  • Súbory cookie súvisiace s požiadavkou.
  • V prípade požiadavky POST, v dôsledku zasielania webových formulárov, názvov a hodnôt parametrov.
  • Základný príklad PHP skriptu

    Skript musí spúšťať proces a potom zobraziť platný HTML kód vrátaneZáhlavia HTTP. Príklad skriptu PHP:
    V tomto skripte prvý a posledný riadok sú HTML a ponuky PHP sú uzavreté v značkách a potom prijímajú skript z prehliadača a pridávajú reťazec dotazov dvoch argumentov, data1 a data2. Okrem globálnej premennej $ _SERVER sú v skripte k dispozícii nasledujúce asociačné polia spustenia skriptov CGI:
  • $ _GET - názvy a hodnoty argumentov prenesených na server pre požiadavku GET.
  • $ _POST - názvy a hodnoty parametrov odoslaných na server v žiadosti POST pri odosielaní formulára.
  • $ _COOKIE - Názvy a hodnoty súborov cookie priložených k žiadosti.
  • $ _REQUEST - všetky položky v $ _GET, $ _POST a $ _COOKIEnpm pre spustenie php skriptov z nodejs cez cgi. Tento modul bol navrhnutý pre deskshell, aby poskytoval neobmedzené spracovanie php skriptov.
  • Vzhľadom na to, že vývojár dostane žiadosť v nodejs a má objekt žiadosti nazvaný req a objekt nazvaný res, musí tento modul použiť takto:
    Žiadosť o /test.php sa teda zhoduje s modulom php pre skripty CGI. Funkcia paramsForRequest číta objekt dotazu a nastaví správne premenné prostredia cgi pre dotaz. Toto je poskytnuté ako samostatná funkcia, takže v prípade potreby môžete pridať ďalšie premenné dotazu. Funkcia detectBinary v okne hľadá ďalší modul stránky php-bin-win32 ", ktorý poskytuje prenosný php súbor. Tento kód funguje v prípade desky, a ak je potrebné ho použiť na akékoľvek iné účely a ďalšie funkcie.

    Prvý program

    Ak chcete napísať jednoduchý program CGI v jazyku Perl podľa tradície, použite výraz "hello world". Tu jepredložené v plnom znení. Uložte ho do súboru s názvom hello v adresári cgi-bin a spustite ho pomocou adresy URL: localhost /cgi-bin /hello v prehliadači. Užívateľ by mal v prehliadači vidieť text "Dobrý svet". Ak nie, pozrite sekciu schránky na ladenie programov CGI, ktoré vám pomôžu vyriešiť problémy. Jedná sa o jednoduchý program. Existuje len niekoľko bodov, ktoré rozlišujú vývoj CGI skriptov na Perl zo štandardného programu, ktorý beží z príkazového riadku. Prvým z nich je voľba -T na linke shebang. To znamená, že Perl prechádza do režimu "tónovania". V tomto režime Perl automaticky ignoruje všetky dáta prichádzajúce od používateľa a neumožní prenos týchto údajov do operačného systému, kým nebudú vymazané. V tomto zmysle je mód farby dobrým nápadom. Druhý rozdiel je pridať riadok, ktorý vytlačí záhlavie obsahu. Bude to prvá vzorka používateľa s protokolom CGI. Všetky programy CGI musia do prehliadača používateľa odosielať sadu hlavičiek. Vo väčšine prípadov je jediný obsah, ktorý sa má vrátiť, obsah. Toto informuje prehliadač, aké údaje vysiela program. Tento príklad vráti obyčajný text, takže typ obsahu bol "text /plain". Zvyčajne sa vracia HTML, takže typ obsahu bude "text /html". Neexistujú žiadne dôvody, prečo program nemôže vrátiť zložitejšie dáta, napríklad PNG ("image /png"). Sada hlavičiek by mala byť oddelená od skutočných údajov prázdnym riadkom. To sa dosiahne tlačou dvoch znakov nového riadku po záverečnej hlavičke skriptu CGI na serveri. Takisto si všimnite, že program píše svoju vlastnúvýstup na STDOUT. Webový server bude organizovaný tak, aby zbieral akékoľvek údaje zaznamenané v STDOUT a presunul ich späť do prehliadača. Predchádzajúci príklad v skutočnosti nič neurobil. Nie je potrebné mať program CGI, ktorý zobrazuje iba pevný text. Mohlo by sa to ľahko vykonať pomocou HTML stránky. Používateľ sa musí naučiť z príkladu toho, čo má dynamický výstup. Napríklad skript, ktorý vytlačí aktuálny čas:
    Tento skript pracuje na rovnakom princípe ako posledný, ale dáva systémovému času funkciu vyvíjania CGI skriptov v jazyku Perl - "localtime" a vytlačí hodnotu. Pri každom načítaní skriptu sa čas aktualizuje. Tento skript opäť zobrazuje jednoduchý text. Musíte zvážiť verziu, ktorá vráti HTML:
    Tento program vyzerá trochu komplikovanejšie, ale v skutočnosti to robí rovnako ako v predchádzajúcom príklade. Pridaná zložitosť pochádza zo skutočnosti, že by mali zobrazovať celú stránku HTML. Ak používateľ niekedy zobrazil nastavenia vášho prehliadača, je pravdepodobné, že zaškrtli políčka alebo prepínače, aby povolili alebo zakázali javascript a java, ale nikdy ich nevidia pre CGI alebo PHP. Je to preto, že javascript a Java sú spustené prehliadačom (alebo nie, ak ich používateľ vypne). Prehliadač nepozná nič o CGI alebo PHP. Jednoducho dostane čistý kód HTML po vykonaní skriptov na serveri. Vstavaná metóda na tvorbu CGI PHP skriptov, ColdFusion, ASP používajú hlavne vývojári, vytvára predné webové stránky, ktoré budú mať napríklad prístup k spätne dostupným databázam.webové aplikácie klient /server. Veľkou výhodou metódy CGI je to, že skripty sú uložené v súboroch, takže tam sú doslova tisícky voľne dostupných skriptov, ktoré sú už napísané a pripravené na stiahnutie a používané na webových stránkach. To znamená, že sa nemusíte učiť skriptovací jazyk, aby ste získali výhody skriptov, ktoré už túto prácu vykonali.

    Súvisiace publikácie