Článek vytištěný ze serveru WebTip

Název článku: ASP pro začátečníky, 7. díl - Počítadlo návštěvníků
Datum publikování: 24.04. 2002
URL článku: http://www.webtip.cz/art/wt_tech_asp/asp_serial_liska_7.html (kliknětě pro návrat)

Všechna práva vyhrazena (c) 2000 Grafika Publishing s.r.o.
Doslovné ani částečně přebírání tohoto materiálu není povoleno bez předchozího písemného svolení vydavatele - společnosti Grafika Publishing s.r.o.


ASP pro začátečníky, 7. díl - Počítadlo návštěvníků

Počítadla návštěvníků nejdou vytvořit v JavaScriptu ani v podobných client-side skriptovacích jazycích. Je totiž třeba, aby se pracovalo se soubory, a JavaScript, jak jistě víte, práci se soubory nepodporuje. Kvůli tomu je tu také ASP, se kterým ukládat informace do souborů můžete. Ale jen na straně serveru, se soubory na straně návštěvníka logicky pracovat nelze - kód ASP se zpracovává na serveru. A ani by to nebylo bezpečné.

V Active Server Pages je více komponent pro práci se soubory, my však budeme pracovat s tou základní, kterou máte určitě nainstalovanou. Jmenuje se File System Object (FSO) a je vytvořen Microsoftem. Komponenta je objekt, který se může používat, narozdíl od objektu Request, až po jeho vlastní inicializaci. Možná vás napadá, proč nepracujeme s databázemi. Samozřejmě, s informacemi uloženými v databázi se pracuje jednodušeji, nám však pro začátek budou stačit soubory.

FSO má mnoho funkcí, od vytváření souborů přes zjišťování jejich vlastností až po jejich mazání. Hlavní z nich, které použijeme, jsou: OpenTextFile, FileExists, ReadLine a WriteLine.

Funkce OpenTextFile otevírá soubor buďto pro čtení, anebo pro psaní. Funkce FileExists vrací logickou hodnotu true, v případě, že soubor existuje, a false v případě opačném. Na čtení řádků v souboru se využívá funkce ReadLine, na zapisování řádků WriteLine.

Nyní již přistoupíme k tvorbě samotného počítadla, které počítá přístupy na vybranou stránku. K inicializaci objektu File System Object se používá funkce CreateObject:

Set fso = Server.CreateObject("Scripting.FileSystemObject")

Protože budeme cestu k souboru potřebovat v kódu vícekrát a bylo by zbytečné ji stále opisovat, zapíšeme si ji do proměnné:

cesta = Server.MapPath("\pocitadlo.txt")

Pomocí metody MapPath se určuje fyzická adresa souboru na serveru. Pokud do závorek napíšeme jen lomítko a jméno souboru, nachází se soubor v kořenovém adresáři.

Následuje jádro celé aplikace. Komentáře ke kódu ve VBScriptu začínají apostrofem a zabírají celý řádek:

If fso.FileExists(cesta) Then
'pokud soubor existuje, ...
Set soubor = fso.OpenTextFile(cesta, 1)
'otevření souboru s parametrem 1 - jen čtení
cislo = Clng(soubor.ReadLine)
'řádek souboru přečtený pomocí funkce ReadLine
'převedeme na číslo a přiřadíme proměnné
cislo = cislo + 1
'přičtení jedničky k dosavadnímu počtu shlédnutí
soubor.Close
'zavření souboru
Set soubor = fso.OpenTextFile(cesta, 2)
'otevření souboru pro psaní
soubor.WriteLine(cislo)
'přepsání dosavadní hodnoty
soubor.Close
Response.Write cislo
Else
'pokud soubor neexistuje, ...
Set soubor = fso.OpenTextFile(cesta, 2, true)
'otevření souboru - parametr true říká, že jestliže neexistuje,
'ať se vytvoří
soubor.WriteLine("1")
response.write "1"
soubor.close
End If

set fso = Nothing
'ukončení práce s objektem FSO

Vypadá to, že ověření existence souboru není třeba, při prvním otevírání souboru stačí připsat parametr true a je to. Takto lehce to však nejde, neboť pokud použijeme funkci ReadLine a soubor bude prázdný, vyvolá se chybové hlášení.

Nyní již máme celou aplikaci hotovu. Stačí jen tento zdrojový kód dát do zdrojového kódu stránky, u které chcete počítat návštěvníky:

Set fso = Server.CreateObject("Scripting.FileSystemObject")
cesta = Server.MapPath("\pocitadlo.txt")

If fso.FileExists(cesta) Then
Set soubor = fso.OpenTextFile(cesta, 1)
cislo = Clng(soubor.ReadLine)
cislo = cislo + 1
soubor.Close
Set soubor = fso.OpenTextFile(cesta, 2)
soubor.WriteLine(cislo)
soubor.Close
Response.Write cislo
Else
Set soubor = fso.OpenTextFile(cesta, 2, true)
soubor.WriteLine("1")
response.write "1"
soubor.close
End If

set fso = Nothing

Počítadlo není bez "much"; například návštěvník může mačkat klávesu F5 stále dokola a vy budete mít zkreslené výsledky. Jak tento problém vyřešit, to vám ukáži příště.


Autor: Liška Adam
E-mail: liskovi@quick.cz