Hlavná stránka · Diskusné Fórum · Pracovné príležitosti · Zoznam

 Main Menu
o Hlavná stránka
o Zoznam tém
o Zoznam
o Odporučte nás
o Užívatelia
o Vaše konto
o Pridaj článok
o Štatistiky
o Top 10

 Reklama


 Developer Zone's
o Internet
o Tools
o Linux
o CGI Zone
o ASP Zone
o ASP.net
o PHP Zone
o CSS Zone
o JavaScript
o MySQL
o WAP / WML
o WML / WMLScript
o XML / XHTML
o Tipy a triky
o Best of web
o WebServers
o WebDesign
o Grafika

 Servis
o Vyhľadávanie
o Fórum
o Workoffice
o Zoznam článkov
o Reklama
o Pridaj článok
o Pridaj novinku

Napíšte nám
Homepage Do favoritov

 LinkExpres
Interval.cz · Pc.sk
Builder.cz · Mobilmania
PCSvet.cz · Asp.cz
Webdnes · Živě.sk
Zoznam.sk · Atlas.sk
Inzine.sk · PHP.sk
Agent.sk · Lupa.cz
Code.box.sk · Root.cz
Pixel32 · Grafika.cz

 forum.developer.sk
o Fórum ::
o Markup languages
o Scriptové jazyky
o CGI
o PHP/MySQL
o Perl
o Grafika
o Webservery
o HTML Editory
o Browsery
o Bookmarx
o ASP
o Vytvor tému ::

 Pracovné príležitosti
o Ponúkate prácu?
o Hľadáte prácu?

 Autori developer.sk
o Martin Nemeček
o Sväťo Straka
o Jany Masaryk
o Jozef Murín

 
CGI / Perl [ 19. October 1999] - Svato_Straka
Premenné prostredia - 1. časť CGI
Ako som už spomínal v úvode, pri odovzdávaní dát CGI skriptu dopĺňa webový server k odosielaným dátam premenné prostredia. Tieto premenné je najjednoduchšie prirovnať k systémovým premenným vášho OS (asi najznámejšou z nich je premenná PATH, ostatné môžu byť špecifické pre jednotlivé OS).



K premenným prostredia môžete samozrejme vo svojich programoch voľne pristupovať a používať ich. Konkrétne v Perli sú tieto premenné uložené v asociatívnom poli %ENV (vysvetlím nižšie). V nasledujúcej tabuľke nájdete zoznam všetkých premenných prostredia.

navigator.userAgent)

Pozastavil by som sa pri premenných PATH_INFO a PATH_TRANSLATED. Pamätáte sa na časť seriálu o WebDesigne, kde sme si hovorili o obrazových mapách? Konkrétne o mapách na strane servra. Volanie cieľa po kliknutí na určitú časť mapy tam vyzerá nasledovne: /cgi-bin/imagemap/data/user.map

Server môže CGI skripty identifikovať dvoma spôsobmi: alebo je v konfigurácii servra určené, že CGI skripty majú určitú príponu, alebo, a to býva častejší prípad (kvôli bezpečnosti), je v konfigurácii definovaný adresár, v ktorom sa nachádzjú všetky CGI skripty. Z toho vychádza server pri dekódovaní takého volania: CGI adresár je definovaný ako /cgi-bin/, názov skriptu je teda imagemap a všetko, čo nasleduje za menom skriptu je obsahom premennej PATH_INFO (v tomto prípade teda /data/user.map). Skript, aby mohol k súboru určeného v PATH_INFO pristúpiť, potrebuje poznať absolútnu cestu k nemu v rámci lokálneho systému. Táto cesta je uložená v premennej PATH_TRANSLATED, ktorá vznikne spojením premenných DOCUMENT_ROOT a PATH_INFO.

Uveďme si teraz ako príklad jednoduchý skript, ktorý ako svoj výstup vypíše zoznam premenných prostredia a ich hodnôt.

print "Content-type: text/plain", "nn";
foreach $key (keys %ENV) {
    print $key, " = ", $ENV{$key}, "n";
}
exit(0);

Výsledok skriptu

A tu je vysvetlenie tohoto skriptu. V prvom riadku,

Ďalej nasleduje riadok print "Content-type: text/plain", "nn";, v ňom sa tvorí časť HTTP hlavičky, konkrétne definuje MIME typ dát, ktoré sú výstupom skriptu. V našom prípade bude výstupom čistý text, čo je dané typom text/plain. Za týmto riadkom nasleduje prázdny riadok, ktorý oddeľuje HTTP hlavičku od samotných dát.

V CGI skripte musíte vytvoriť vždy aspoň časť HTTP hlavičky, minimálne to musí byť práve určenie typu výstupných dát. Samozrejme že môžete pridať ďalšie riadky, o tom však viac nabudúce.

Nasledujúce tri riadky začínajúce príkazom foreach a končiace znakom } si vysvetlíme na nasledovnom príklade.

Perlovský príkaz foreach definuje vo svojom tele blok príkazov, ktoré sa majú vykonať pre určitú premennú nadobúdajúcu hodnoty daného poľa. Štandardná syntax príkazu je
foreach $premenna (@pole) {
    }

Perl rozoznáva 5 základných typov premenných: skalár (napr. $foo), pole (napr. @foo), hash (asociatívne pole, napr. %foo), ovládač (handle, napr. FOO) a typeglob (napr. *foo). Posledné 2 typy si necháme na neskôr, tie prvé 3 si vysvetlíme teraz.

Typickým príkladom skaláru je reťazec. Tento typ premennej je aj najjednoduchšie pochopiteľný. Ako príklad si môžeme uviesť nasledovnú konštrukciu: $nazov = "Developer Zone";. Obsahom skalára môže byť číslo, znak alebo reťazec.

Polia sú tiež jednoducho pochopiteľné. Definícia poľa môže vyzerať nasledovne: @temy = ("HTML", "JavaScript", "CGI", "PHP");. Toto je jednoduché štvorprvkové pole. Inou možnosťou, ako definovať toto pole je definovať jeho jednotlivé prvky: $temy[0] = "HTML"; $temy[1] = "JavaScript"; atď. Jednotlivé prvky poľa sú indexované od nuly, to jest prvý prvok bude vždy $foo[0].

Posledným spomínaným typom bude hash, asociatívne pole. Toto pole je najjednoduchšie predstaviť si ako pole dvojíc klúč-hodnota. Vyzerá to nasledovne:
%foo {
    $kluc1 => $hodnota1,
    $kluc2 => $hodnota2,
    $kluc3 => $hodnota3
}

Ak chcete potom niektorú hodnotu použiť, namiesto $hodnota voláte $foo{$kluc}. Toto má význam napr. u spomínaných premenných, ktoré sú všetky uložené v poli %ENV a ich hodnoty môžete získať volaním $ENV{nazov_premennej}.

V našom prípade sa teda do premennej $key ukladajú postupne jednotlivé názvy premenných a po jednej sú vytlačené ich hodnoty.

V poslednom riadku príkladu, exit(0); sa ukončí program s návratovou hodnotou 0.

Nabudúce si povieme niečo o výstupoch CGI skriptov.

 
 Príslušné odkazy k téme
Viac o téme: CGI / Perl | Iné články od: Admin | Pošli komentár | Stránka vhodná na tlač width=15 height=11  Pošli tento článok priateľovi, známemu width=15 height=11


Najčítanejšie články CGI / Perl:
Čo je to CGI? - Úvod do CGI

Ďalšie články v rubrike CGI / Perl:

 

"Premenné prostredia - 1. časť CGI" | Login / vytvor konto | 0 Komentárov
Prah
Za obsah komentárov je zodpovedný užívateľ, nie prevádzkovateľ týchto stránok.



Autorské práva:   ©1999 - 2001 Developer Zone [developer@developer.sk]

Všetky články sú vlastníctvom autorov Developer Zone. Všetky práva vyhradené. Stránky Developer.sk sú vytvorené pomocou PHP-Nuke.
Odkazy na nové články je možné preberať pomocou:Backend.php.