CGI skripty: co to je, způsoby, jak je vytvořit

CGI je zkratka pro Common Gateway Interface. Jedná se o takzvaný malý program, který nabízí spolehlivý způsob interakce webových serverů v prohlížeči pomocí těchto metod, které nebyly možné s HTML. Většina skriptů CGI je napsána v jazyce Perl. Jedná se o obvyklý programovací jazyk používaný pro vytváření skriptů na straně serveru se standardním textovým souborem s příponou (.cgi).

Základní podmínky programu

Před použitím skriptů CGI musí uživatel ověřit, zda je jejich web podporován daným webem, a specifikovat, zda má vývojář pravomoc používat skript. Někteří hostitelé to nepovolují. Pokud vývojář stránek při stahování souborů HTML vidí složku CGI-bin, je povoleno používat skripty GCI.


Někteří hostitelé si vyžádají svou funkci CGI-bin, protože to není vždy standardně poskytováno. Jiní hostitelé mohou testovat a schvalovat skripty před udělením oprávnění používat skripty CGI. Pokud vývojář nepotřebuje editaci, potřebuje textový editor pro zápis skriptu pro požadavky stránek. Ať je editor určen k použití, je důležité uložit soubor jako prostý text. Navíc budete potřebovat FTP program, který je dodáván s komerční verzí Pro nebo bezplatnou verzí Lite. Jakákoli volba bude fungovat tak dlouho, dokud se načte v režimu ASCII, aby vám pomohla projít instalací, protože vytvoření CGI skriptů můževěnujte spoustu času.


Konfigurace a instalace

Pokud má uživatel CGI-bin, je dobrá šance spustit skript CGI. Pro správnou instalaci doporučujeme zobrazit náhled stránky běžných problémů s hostitelem webového serveru, ovládacího panelu webu, podpůrných dokumentů nebo instalační zprávy. Jedním z nejběžnějších chyb webmasterů je instalace skriptů CGI se špatnou cestou. Pokud již existuje otevřený skript pro použití, cesta musí být správná, jinak server nebude fungovat. Pokud se skript otevře, zkontrolujte zpětnou vazbu pro všechny proměnné, které vyžadují instalaci a komentáře pro tento řádek začínající "#". Je-li zadán skript pro server, můžete spustit stahování. Ujistěte se, že to děláte v režimu ASCII, protože jednoduchý skript CGI je textový soubor. Technicky lze skripty provádět z libovolného adresáře, ale většina hostitelů umožňuje, aby to bylo provedeno pouze s CGI-binem. Důležité je také použít správné oprávnění pro soubory, které používají skript CGI.

Povolení souboru

Existují tři typy přístupu k datům s třemi různými oprávněními pro každou skupinu.
Servery Unix vám umožňují nastavit různé úrovně přístupu. Je důležité vědět, které oprávnění má skript:
  • Skupina - se skládá z přidaných uživatelů na serveru. V případě potřeby budou moci povolit jejich povolení.
  • Uživatel - je tvořen pouze vlastníkem souboru ve skupině, jedná se o hostingový účet.
  • Další skupina se skládá ze všech ostatních aspektů na serveru.
  • Čtení - umožňuje uživatelům číst a rozumět údajům uvedeným v souboru.
  • Oprávnění zápisu a zápisu umožní uživatelům dešifrovat a napsat nové datum, odstranit stará data z archivu.
  • Spustit - oprávnění ke spuštění, povolí odeslání souboru pouze v případě, že je spuštěn program nebo skript CGI exe. Předkonfirmace, že skript bude fungovat před odkazem ve veřejném režimu.
  • Příklad aplikační aplikace

    CGI - Program zjednodušuje vytváření složitých, vysoce výkonných, více webových aplikací, návrh, psaní a vývoj webových projektů. Inteligentně využívá využití moderních technologií a metod, které se vývojáři váže s libovolnou sadou operačních systémů nebo serverových nástrojů.
    Má nízkou hmotnost (pokud jde o využití paměti), což je vhodné pro běžné prostředí CGI a vysoký výkon v perzistentních prostředích, jako je FastCGI nebo mod_perl. Přidáním PLUGINS podle vašich potřeb, můžete v případě potřeby použít sofistikované funkce, například je třeba napsat aplikaci pro vyhledávání pomocí databáze widgetů. Skript instance je to, co uživatel skutečně volá webový server. Jedná se o velmi malý jednoduchý soubor, který jednoduše vytvoří instanci rozhraní programu a vyvolá metodu zděděného spuštění (). Níže je uveden úplný popis «widgetview.cgi»: #! /Usr /bin /perl -wuse WidgetView my $ webapp = WidgetView- & gt; new () $ webapp- & gt; run () Jak vidíte, widgetview.cgi jednoduše využívá aplikovanou Modul, který balíček implementujePerl volal WidgetView.pm. Aplikace CGI se stará o implementaci nových () a run () metod. V takovém případě uživatel nikdy nesmí volat print () k odeslání výstupu do STDOUT. Místo toho se celý výstup vrátí jako skalární.
    CGI je nejvýznamnějším příspěvkem k řízení stavu žádosti. Vše, co je nezbytné k postupu programu, je nastavit hodnotu parametru formuláře HTML "rm" na hodnotu režimu spuštění, která má být zpracována odesláním formuláře. To je klíč k aplikaci CGI.

    Metody skriptování

    Pomocí CGI aplikace uživatel přistupuje k mnoha metodám vložených. Níže jsou uvedeny ty, které jsou volány ze skriptu. Metoda new () je konstruktorem pro CGI. Vrací odkaz na balíček aplikace (třída). Může přijmout sadu parametrů jako dvojice: key = & gt; význam.
    Tato metoda může mít některé specifické parametry:
  • TMPL_PATH - Definuje cestu k adresáři šablon.
  • QUERY - umožňuje zadat již vytvořený objekt požadavku CGI.pm.
  • PARAMS - tento parametr umožňuje nastavit řadu přizpůsobitelných režimů během provádění. Přenášením různých hodnot v různých skriptech instancí, které používají stejný programový modul, můžete dosáhnout vyšší úrovně opětovného použití.
  • Spustit () se volá ze skriptu do objektu aplikačního modulu. Při volání provádí funkčnost rozhraní aplikačního modulu.

    Tato metoda nejprve definuje stav aplikace tím, že se podívá na hodnotu parametru CGI zadaného parametrem parametr mode_param (). Ve výchozím nastavení je "rm" pro režim "Run", který bude obsahovat název režimu provozu. Pokudtoto není zadáno, výchozí stav se rovná hodnotě start_mode (). Jakmile je režim zadán, spustí () zobrazení odesílající tabulky uložené v run_modes () a najde ukazatel funkce, který je zadán z názvu režimu. Je-li nalezen, funkce se vyvolá a tisk vrácených dat () se odesílá do STDOUT a do prohlížeče. Pokud se zadaný režim nenachází v tabulce run_modes (), spusťte () croak ().

    Podpora PSGI

    Aplikace nabízí vestavěnou podporu pro PSGI. Výchozí objekt Dotaz je to: psgi_app () $ psgi_coderef = WebApp- & gt; psgi_app ({args novému ()}) Nejjednodušší způsob, jak - jak vytvořit a vrátit PSGI - kompatibilní coderef. Musíte přenést argumenty na hashref stejným způsobem jako nový. Toto vrátí kódovač kompatibilní s PSGI pomocí objektu CGI ::: PSGI jako objekt dotazu. Chcete-li použít jiný dotaz objektu, vytvořit svůj vlastní objekt run_as_psgi (), jak je uvedeno níže: run_as_psgi () my $ psgi_aref = $ webapp- & gt; run_as_psgi Stejně jako běh, tisk, struktura nezobrazuje a nevrací data , požadované specifikací PSGI. Tuto možnost použijte, pokud chcete aplikaci spouštět pomocí psovodu kompatibilního s programem PSGI, jako například Plack. Konečný výsledek může vypadat takto:
    Specifikace PSGI může vrátit deskriptor souboru nebo odkaz podprogramu místo řetězců byte. V režimu PSGI je podporován přímo aplikací CGI.

    Metody možného potlačení

    CGI implementuje některé metody, které se očekávají, že budou redefinovány jejich implementací do modulu podtřídy. Tyto metody jsou následující:
  • Nastavení (). Tato metoda se nazývá metoda zděděného konstruktoru new ().
  • Metoda setup () by měla být použita k definování další vlastnosti metod.
  • Metoda setup () může volat libovolnou instanci vlastní instance aplikace. Tato funkce je dobré místo k určení vlastností specifické pro program, s $ webapp- & gt; param () Metoda setup () může být implementována jako obrázek níže:
    Nicméně, často vše, co potřebuje být setup (), definuje režimy startu AutoRunmode, který umožňuje, aby to s jednoduchou syntaxí pomocí atributů spustí režim. Metoda Teardown (). Pokud je implementován, automaticky se vyvolá po vytvoření CGI skriptů a spuštění programu. Může být použit pro čištění po operacích. Používání typickou teardown () - zakáže připojení k databázi, který byl nainstalován v nastavení voleb (). Můžete také použít metodu teardown () k ukládání informací o stavu programu na serveru: cgiapp_init ().

    Odesílání net URI ke spuštění režimů

    Moderní webové rámce obejít bez omezení URI namísto poskytnutí URI v čistotě: Clean /cgi-bin/item.cgi?rm=view&id=15 URI popsat navzájem a stejný zdroj může být: /item /15 /view. Proces odpovídající URI spustit se nazývá dispečerské módy a zpracován CGI :: aplikace :: Dispatch. Není třeba žádný další správce. Aplikaci CGI :: můžete pracovat na ploše nebo notebooku bez instalace plnohodnotného webového serveru, jako je Apache. Namísto toho nainstalujte CGI :: Application :: Server s CPAN. Po instalaci bude uživatel po několika minutáchvlastního aplikačního serveru. Proveďte automatizované testování. Test :: WWW :: Mechanize :: CGIApp umožňuje provádět funkční testování aplikace CGI :: App bez spuštění webového serveru. Test :: WWW :: Mechanize lze použít k ověření programu prostřednictvím tohoto webového serveru. Přímé testování je také snadné. CGI - Program obvykle vytiskne výstupní data svých provozních režimů v programu STDOUT. To může být potlačeno pomocí proměnné prostředí CGI_APP_RETURN_ONLY. Aplikace má plug-in architekturu, která je snadno použitelná a vyvíjí nové plug-iny.

    CGI Content Interface

    Byla to první specifikace určená pro vývoj dynamického obsahu na webovém serveru. Obsah CGI doručený uživatelům není statický kód HTML čtený ze souboru na serveru. Jedná se o dynamický obsah vytvořený ve skriptu, který umožňuje extrahovat informace z databáze, přizpůsobovat obsah typu prohlížeče, žádá, zda je nový uživatel nebo nikoliv. PHP je jazyk speciálně navržený pro implementaci dynamického obsahu na webových serverech. Díky tomu je mnohem snazší vytvářet CGI skripty v PHP než v jiných jazycích. Po spuštění serveru poskytuje všechny kontextové informace, které potřebuje:
  • Úplné informace o dotazu, včetně názvu /IP vzdáleného hostitele, požadované adresy URL a jeho argumentů, řetězec dotazu (pokud existuje).
  • Soubory cookie související s požadavkem.
  • V případě požadavku POST, v důsledku zasílání webových formulářů, názvů a hodnot parametrů.
  • Základní příklad skriptu PHP

    Skript musí provést proces a poté zobrazit platný kód HTML včetněHTTP hlavičky. Příklad skriptu PHP:
    Tento scénář první a poslední řádky jsou HTML kód a PHP nabídka uzavřeny v markerů, pak se skript z prohlížeče přidáním řetězce dotazu se dvěma argumenty «data1» a «data2». Kromě globální proměnné $ _SERVER ve skriptu mají následující asociativní pole spouštět CGI skripty:
  • $ _GET - názvy a hodnoty argumentů předaných serveru na žádost GET.
  • $ _POST - názvy a hodnoty parametrů odeslaných serveru v požadavku POST při odesílání formuláře.
  • $ _COOKIE - Jména a hodnoty souborů cookie připojených k žádosti.
  • $ _REQUEST - všechny položky ve složkách $ _GET, $ _POST a $ _COOKIEnpm pro spouštění php skriptů z nodejs přes cgi. Tento modul byl navržen tak, aby poskytoval neomezené zpracování skriptů php.
  • Vzhledem k tomu, že vývojář obdrží žádost v nodejs a má požadovaný objekt nazvaný req a objekt nazvaný res, musí tento modul použít takto:
    Takže žádost o /test.php bude odpovídat modulu php pro skripty CGI. Funkce paramsForRequest čte objekt dotazu a nastavuje správné proměnné prostředí cgi pro dotaz. Toto je poskytováno jako samostatná funkce, takže v případě potřeby můžete přidat další proměnné dotazu. Funkce detectBinary v systému Windows vyhledává další modul webu php-bin-win32 ", který poskytuje přenosný soubor php. Tento kód funguje pro desku a pokud je nutné ji použít pro jiné účely a další funkce.

    První program

    Chcete-li naprogramovat jednoduchý program CGI v Perl, podle tradice použijte výraz "hello world". Tady jeprezentovány v plném znění. Uložte jej do souboru s názvem hello v adresáři cgi-bin a spusťte jej pomocí adresy URL: localhost /cgi-bin /hello v prohlížeči. Uživatel by měl v prohlížeči zobrazit text "Dobrý svět". Pokud tomu tak není, prohlédněte si sekci boxu pro ladění programů CGI, které vám pomohou při odstraňování problémů. Jedná se o jednoduchý program. Existuje jen několik bodů, které rozlišují vývoj CGI skriptů na Perl ze standardního programu, který běží z příkazového řádku. První je volba -T na linii shebangu. To znamená, že Perl převede do režimu "taint". V tomto režimu Perl automaticky ignoruje všechna data pocházející od uživatele a neumožní, aby byla tato data přenesena do operačního systému, dokud nejsou vymazána. V tomto smyslu je režim vkrádání dobrým nápadem. Druhým rozdílem je přidat řádek, který vytiskne záhlaví obsahu. Bude to první ukázka uživatele s protokolem CGI. Všechny programy CGI musí vygenerovat sadu záhlaví do prohlížeče uživatele. Ve většině případů je pouze záhlaví, které má být vráceno, spokojené. To informuje prohlížeč, jaké údaje vysílá program. Tento příklad vrací text, takže obsah byl "text /prostý". Obvykle se vrací HTML, takže typ obsahu bude "text /html". Neexistují žádné důvody, proč program nemůže vrátit složitější data, například PNG ("image /png"). Soubor hlaviček by měl být oddělen od skutečných dat prázdným řádkem. Toto je dosaženo vytištěním dvou znaků nového řádku po poslední záhlaví skriptu CGI na serveru. Také si všimněte, že program píše vlastnívýstup do STDOUT. Webový server bude organizován pro shromažďování veškerých dat zaznamenaných ve službě STDOUT a jejich přenos zpět do prohlížeče. Předchozí příklad ve skutečnosti nic neudělal. Není třeba mít program CGI, který zobrazuje pouze pevný text. Mohlo by být snadno provedeno pomocí stránky HTML. Uživatel se musí naučit z příkladu toho, co má dynamický výstup. Například skript, který vytiskne aktuální čas:
    Tento skript pracuje na stejném principu jako poslední, ale dává systémovému času funkci "vyvíjení CGI skriptů v jazyce Perl -" localtime "a vytiskne hodnotu. Pokaždé, když je skript znovu načten, bude čas aktualizován. Tento skript opět zobrazuje prostý text. Musíte zvážit verzi, která vrací HTML:
    Tento program vypadá trochu komplikovanější, ale ve skutečnosti dělá to samé jako v předchozím příkladu. Přidaná složitost pochází z toho, že by měla zobrazit celou stránku HTML. Pokud uživatel někdy prohlížel nastavení vašeho prohlížeče, je pravděpodobné, že viděli zaškrtávací políčka nebo přepínače pro povolení nebo zakázání javascript a java, ale nikdy je neviděli pro CGI nebo PHP. Je to proto, že javascript a Java jsou spuštěny prohlížečem (nebo ne, pokud je uživatel vypne). Prohlížeč o CGI nebo PHP nic neví. Prostě dostane čistý kód HTML po spuštění skriptů na serveru. Vestavěná metoda pro tvorbu CGI PHP skriptů, ColdFusion, ASP je používána hlavně vývojáři, vytváří webové stránky front-end, které budou mít přístup například k databázím zpět.webové aplikace klient /server. Velkou výhodou metody CGI je, že skripty jsou uloženy v souborech, takže jsou doslova tisíce volně dostupných skriptů, které jsou již napsány a připraveny ke stažení a používané na webových stránkách. To znamená, že se nemusíte naučit skriptovací jazyk, abyste získali výhody skriptů, které již tuto práci provedly.

    Související publikace