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.