P E R L

Practical Extraction and Report Language

 

 

Inštalácia a spustenie PERL CGI Príklady Linky

 

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á:

 

  1. Medzery sú nahradené znakom +.

  2. Niektoré znaky sú nahradené sekvenciou %xx, kde xx je hexadecimálna hodnota pôvodného znaku. Tabuľka uvádza niektoré z často používaných znakov:

     

    Znak Kódovanie
     :  %3A
     \  %5C
     /  %2F
     %  %25
     "  %22
     ,  %2C
     &  %26
     (  %28
     )  %29

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.

  • Pri použití metódy GET sú dáta uložené v premennej prostredia QUERY_STRING.

  • Pri použití metódy POST sú dáta predané na štandardný vstup CGI programu.

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:

 

    meno1=hodnota1&meno2=hodnota2& ... &menoN=hodnotaN

 

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:

  • textové pole predá text napísaný uživateľom,
  • radio button hodnotu začiarknutej voľlby,
  • checkbox predá hodnotu začiarknutej voľby. Ak nie je vybraná žiadna možnosť, predaný je prázdny reťazec alebo sa premenná nepredáva vôobec.
  • hidden pole predává konštantnú hodnotu.

 Každý CGI script sa musí začínať riadkami:

 

    #!/usr/bin/perl
    print "Content-type: text/html\n\n";