P E R L Practical Extraction and Report Language
|
CGI: Common Gateway Interface
Čo je to CGI script?
CGI alebo Common Gateway Interface je jednou z možností, ako zaviesť dynamiku do www stránok. V zásade je to predpis pre program spustený na serveri, ako má čítať dáta od WWW servera a ako mu má dáta posielať. Výsledkom je, že keď se odkazujete na link s CGI programom (obvykle sa nazýva CGI script), nenatiahne sa do WWW klienta tento script, ale výstup získaný jeho spustením. Klasickým príkladom sú počítadla prístupu na webstránky, gatewaye k rôznym slovníkom a databázam alebo napríklad obmieňajúce sa reklamy na stránkach.
Teda CGI script je externý program, ktorý je na požiadavku užívateľa spustený www serverom ako samostatný proces. CGI scripty sú často vytvárané v skriptovacom jazyku Perl alebo v niektorom shelle OS Unix. Z programovacích jazykov sa používa napr. jazyk C alebo C++, Visual Basic. CGI scripty preberajú dáta zadané užívateľom, spracujú ich a ako výsledok vytvárajú väčšinou html stránky. Tieto dynamicky vytvorené stránky potom www server posiela späť klientovi.
Komunikácia medzi klientom, serverom a CGI scriptom je znázornená na nasledujúcom obrázku:
Vstup od užívateľa
Pokiaľ sú dáta zadané do HTML formulára, pred prenosom na server sú kódované metódou aplication/x-www-form-urlencoded. Toto kódovanie má 2 pravidlá:
Metódy posielania dát - GET, POST
Dáta sú CGI scriptu predávané v závislosti na použitej metóde, ktorá je špecifikovaná v atribúte METHOD vo formulári.
Použitie metódy GET je limitované množstvom informácií odoslaných v požiadavke. Vo formulároch je výhodné používať metódu POST.
Dáta majú vždy tento tvar:
kde & je oddeľovačom jednotlivých položiek a meno je označenie položky vo formulári. Ak sa v hodnotách vyskytne znak = alebo &, sú kódované zmieneným kódovaním. CGI script musí teda dáta dekódovať. Musí najprv rozdeliť jednotlivé časti vstupu, t.j. odstrániť znaky & a potom nahradiť sekvencie %xx pôvodným znakom. Poradie položiek na vstupe je totožné s poradím položiek vo formulári. Jednotlivé typy vstupných polí formulára majú svoje pravidlá pri predávaní hodnôt:
Každý CGI script sa musí začínať riadkami:
|