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.
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ě.