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 [ 25. February 2000] - Svato_Straka
JednoduchΘ textovΘ poΦφtadlo - 10. Φas¥ CGI
UrΦite ste si u₧ na mnoh²ch strßnkach vÜimli poΦφtadlß prφstupov. M⌠₧u by¥ r⌠zne - od vyΦaΦkan²ch nevkusn²ch obrovsk²ch pestrofarebn²ch ohßv a₧ po strohΘ obyΦajnΘ textovΘ.



A prßve na tie druhΘ - podstatne vkusnejÜie - sa pozrieme a ukß₧eme si, ako v Perli takΘto jednoduchΘ poΦφtadlo vytvori¥.

Tak₧e ozrejmime si, ako bude naÜe poΦφtadlo fungova¥. Potrebujeme, aby sa hodnota poΦφtadla zv²Üila v₧dy pri prφstupe k strßnke. Tak₧e najjednoduchÜie sa tu javφ pou₧itie SSI direktφvy, ktorß v₧dy spustφ skript, ktor² zistφ aktußlny stav poΦφtadla a zv²Üi ho o 1. druhou mo₧nos¥ou je vola¥ priamo CGI skript, ktor² naΦφta strßnku a vlo₧φ do nej hodnotu poΦφtadla. Ukß₧eme si obe mo₧nosti, pri Φom poΦet prφstupov budeme zaznamenßva¥ v textovom s·bore.

PoΦφtadlo - SSI verzia

Pre naÜu ukß₧ku si vytvorφme jednoduch· strßnku, do ktorej pomocou SSI direktφvy vlo₧φme volanie na skript count1.cgi. Tßto strßnka m⌠₧e vyzera¥ nasledovne:
<HTML>
<HEAD>
<TITLE>Jednoduche pocitadlo</TITLE>
</HEAD>
<BODY>
PoΦet prφstupov k strßnke: <!--</BODY>
</HTML>

Budeme u₧ potrebova¥ len dva s·bory. Jeden s aktußlnym stavom poΦφtadla. Nazveme si ho stav1.txt. Druh²m bude samotn² skript, ktor² pri svojom zavolanφ otvorφ s·bor stav1.txt, preΦφta z neho stav poΦφtadla, zv²Üi ho o 1 a zapφÜe naspΣ¥. Tak²to skript m⌠₧e vyzera¥ nasledovne:

$subor = $ENV{DOCUMENT_ROOT} . "/stav1.txt";

open(STAV, $subor);
$stav = <STAV>;
close(STAV);

$stav++;

open(ZAPIS, ">".$subor);
print ZAPIS $stav;
close(ZAPIS);

print "Content-type: text/htmlnn";
print $stav;

Tu je vysvetlenie ku skriptu. Ulo₧φme si cestu k s·boru i s jeho nßzvom do premennej $subor. Tento s·bor pomocou prφkazu open otvorφme, pri Φom dostane symbolickΘ meno STAV. Toto symbolickΘ meno sa v Perli naz²va ovlßdaΦ s·boru (z anglickΘho file handle). S jeho pomocou m⌠₧ete pracova¥ so s·borom bez toho, aby ste vedeli kde je na disku v skutoΦnosti umiestnen² at∩. Pok²m nezadßte pri otvßranφ s·boru sp⌠sob, ak²m sa mß k s·boru pristupova¥, bude dan² s·bor otvoren² len pre Φφtanie.

V ∩alÜom kroku naΦφtame obsah s·boru so premennej $stav. K tomu, aby bola tßto operßcia ·speÜnß, musφ sa danß hodnota nachßdza¥ na prvom riadku v nami tvorenom s·bore. Perl toti₧ rozoznßva kontext, v akom sa k dßtam pristupuje. Pok²m k ovlßdaΦu s·boru pristupujete v skalßrnom kontexte, preΦφta vßm z otvorenΘho s·boru aktußlny riadok. Pok²m explicitne neurΦφte Φφslo riadku, preΦφta sa prv² riadok (vi∩ nßÜ prφklad). Pok²m vÜak budete s ovlßdaΦom s·boru pracova¥ v zoznamovom kontexte (@subor = <SUBOR>), naΦφta sa do po╛a obsah celΘho s·boru.

V ∩alÜom kroku s·bor pomocou prφkazu close uzavrieme. Toto je krok, na ktor² by sa nemalo zab·da¥, vÜetci vieme Φo robφ mno₧stvo naotvßran²ch s·borov so systΘmom.

Nasleduje zv²Üenie stavu poΦφtadla: $stav++;. Operßtor ++ je operßtorom inkrementu - sp⌠sobφ zv²Üenie hodnoty premennej o 1.

V ∩alÜom ·seku opΣ¥ otvorφme s·bor so stavom poΦφtadla - tentokrßt pre zßpis, Φo je urΦenΘ pri nßzve s·boru: ">".$subor. Operßtor > presmeruje v²stup vÜetk²ch prφkazov, ktorΘ svoj v²stup posielaj· na dan² ovlßdaΦ s·boru, do nami otvorenΘho s·boru. ╧alÜφ riadok, print ZAPIS $stav;, posiela v²stup prφkazu print - hodnotu premennej $stav - na ovlßdaΦ ZAPIS, ktor² je presmerovan² do s·boru, ktorΘho nßzov s kompletnou cestou je ulo₧en² v premennej $subor.

Po uzavretφ s·boru u₧ nasleduje len v²pis ΦiastoΦnej http hlaviΦky a aktußlneho stavu poΦφtadla.

Prφklad v praxi

PoΦφtadlo ako priamo volan² CGI skript

Pok²m nem⌠₧ete na svojich strßnkach pou₧i¥ SSI, budete musie¥ zvoli¥ trochu in² prφstup - a to zavola¥ CGI skript ktor² zobrazφ po₧adovan· strßnku a na potrebnΘ miesto vlo₧φ aktußlny stav poΦφtadla. RieÜenie je mo₧no jednoduchÜie ako by sa mohlo zda¥. Tvorφ ho mierne upraven² horeuveden² skript a modifikovanß strßnka, v ktorej bude vaÜe poΦφtadlo.

Strßnku s poΦφtadlom je potrebnΘ upravi¥ tak²m sp⌠sobom, ₧e na miesto, kde mß vaÜa okrasa figurova¥, uvediete nejak² re¥azec, ktor² bude skriptom nahraden² za aktußlnu hodnotu poΦφtadla. Z toho vypl²va, ₧e by to mal by¥ re¥azec, ktor² sa inak v strßnke nevyskytuje - jedine ₧e by ste chceli pou₧i¥ poΦφtadlo viackrßt.

Povedzme teda, ₧e naÜa strßnka bude obsahova¥ na mieste poΦφtadla re¥azec CNTR (pozor na ve╛kos¥ pφsmen!):
<HTML>
... strßnka...
<P>
PoΦet prφstupov k strßnke: CNTR
<P>
... dokonΦenie strßnky...
</HTML>

Ulo₧φme si t·to strßnku povedzme pod menom counter.html. Stav poΦφtadla budeme uklada¥ v s·bore s nßzvom stav2.txt. Tu je teda upraven² skript:

$stranka = $ENV{DOCUMENT_ROOT} . "/counter.html";
$pocitadlo = $ENV{DOCUMENT_ROOT} . "/stav2.txt";

open(STAV, $pocitadlo);
$stav = <STAV>;
close(STAV);

$stav++;

open(ZAPIS, ">".$pocitadlo);
print ZAPIS $stav;
close(ZAPIS);

print "Content-type: text/htmlnn";

open(STRANKA, $stranka);
while(<STRANKA>) {
   if(/CNTR/) {
      s/CNTR/$stav/;
   }
   print;
}
close(STRANKA);

Ako tento skript funguje by ste u₧ mali vedie¥. V ka₧dom prφpade si ho m⌠₧ete pozie¥ v praxi.

VÜetky vaÜe komentßre, pripomienky a nßvrhy oΦakßvam na mojom maili: straka@developer.sk.

 
 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:

 

"JednoduchΘ textovΘ poΦφtadlo - 10. Φ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.