Links ::  | DEV web management system | Katalóg | Webhosting | Recepty
  
 Index | Registrácia | Hľadať | Galéria | BoardNeprihlásený užívateľ  //Utorok, 21. Novembra 2017 
Navigation
Index
Top 10 autorov
Top 20 článkov
Hľadať
Galéria

Zones
Asp.(NET)
C/C++
Flash
Grafika+Design
Hardware
Hry
Html/Css/Xml
Java
Linux
Networks
Operačný systém
Pascal/Delphi
PHP
Security
Software
SQL
Visual Basic
Wap/Wml
Windows
Zóna iné

Links
Script index Interval.cz Pc.sk Regedit.sk TipyaTriky.sk Builder.cz Asp.cz Živě.sk Zoznam.sk Code.box.sk Root.cz Quant&Financial

Odkazy

Sessions
Stránky Developer.sk si práve číta 362 čitateľov, z toho je 0 zaregistrovaných

BackEnd
Odkazy na nové články je možné preberať pomocou backend.php

kuk

    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/html\n\n";
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/html\n\n";
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.




Autor : Developer, čítané 5007x, komentárov: 0
Hodnotenie :    |  Streda, 19. Marca 2003

Pridať nový komentár/Komentáre
Vaše hodnotenie :   horšie  lepšie
Login
Login:
Heslo:

Hľadať
 
v článkoch
v diskusiach
v komentároch

Top read
PHP Coder

Priklady v C. 1.čast.

DEV web management system

Php a bezpečnosť skriptov

Autorun CD

Top discuss
Jednoduchý web formulár (ASP.NET)

Delphi seriál: (1.časť)

Velmi rychla grafika v Pascale

DEV web management system

Naša ikona
Páčia sa Vám naše stránky ? Ak áno, podporte nás prosím a umiestnite si na svoju stránku našu ikonku:





Copyright (c) Developer.sk, All rights reserved.
Powered by DEV web management system