DOPORUČUJEME:    Poeta.cz, MůjCitát chcete tu mít svůj odkaz ?Web není v současnosti aktualizován
Zpět na index Můjscriptu
 Přiřazovací operátory   Řetězcové operátory   Speciální operátory   Pohyblivé menu  Článků: 95; Příkladů: 64
Právě nás čte 8 lidí
 Hlavní nabídka:
Základy
Základy
Proměnné
Funkce
Větvení
Dialogová okna
Cyklus
Události
Uživatelská okna
Datum a čas
Formuláře
Obrázky
Matematické funkce
Cookies
Kompatibilita
Reference
Základy
Objekty
Ostatní
Operátory
Příklady
1-5
6-10
11-15
16-20
21-25
26-30
31-35
36-40
41-45
46-50
51-55
56-60
61-65
Nastavit jako homepage Přidat k oblíbeným
 Podsekce MůjScriptu:
Tvůrčí tým
Napsali nám
Guestbook
 Náš Webtip:
Poeta.cz - server nejen o poezii
MůjCitát - server o citátech
 Nenechte si ujít:
Řešení nekompatibility na jedné stránce
Objekt navigator
Cookie manipulátor
Využití cookies ve formulářích
Počítadlo návštěv jednoho člověka na dané stránce
Faktoriál
Animace obrázků
Záměna více obrázků
Záměna dvou obrázků
Kontrola údajů ve formuláři
Přístup k prvkům formuláře pomocí pojmenování
Přístup k prvkům formuláře pomocí pořadových čísel
window.clearTimeout()
Načasování v JavaScriptu
Operace s časovými údaji
Datum a čas - začínáme
Stavový řádek
Vytvoření nové stránky
Ovládač události onDblClick
Ovládač události onClick
Ovládač události onUnLoad
Ovládač události onLoad
Příkaz continue
Příkaz break v cyklech
Příkaz for
Příkaz while
Příkaz do while
Vstupní okno
Potvrzovací okno
Výstražné informační okno
Logické operátory
Příkaz switch
Podmínka if else (2)
Podmínka ? :
Funkce - začínáme 2
Funkce - začínáme
Pole v praxi
Proměnné v praxi
Základní aritmetické operátory
Kam se scripty? Jaká je správná základní syntaxe JS?
JavaScript - co to je?
Počítadlo návštěv jednoho člověka na dané stránce

V tomto článku se dozvíte jak pomocí cookies informovat návštěvníka o tom, kolikrát již danou stránku navštívil.

Vše si předvedeme na příkladu. Je docela obtížný, tak se pořádně soustřeďte:

<HTML>
<HEAD>
<TITLE>Počítadlo návštěv jednoho člověka na dané stránce</TITLE>
<SCRIPT LANGUAGE="JavaScript">
function prectiCookie(nazev)
{
obsah=document.cookie; upravene=obsah.split(';');
velikost=upravene.length; kusy=""; vrat="";

for (x=0;(x<velikost && vrat=="");x++)
{
kusy=upravene[x].split('=');
if (kusy[0].substring(0,1)==' ')
kusy[0]=kusy[0].substring(1,kusy[0].length);
if (kusy[0]==nazev) vrat=kusy[1];
}
if (vrat) return unescape(vrat);
else return false;
}

function zapisCookie(nazev,hodnota,vyprsi)
{
datum=new Date();

if(vyprsi) {
datum.setTime(datum.getTime()+vyprsi);
document.cookie=nazev+"="+escape(hodnota)
+"; expires="+datum.toGMTString(); }

else document.cookie=nazev+"="+escape(hodnota);
}
</SCRIPT>
</HEAD>
<BODY>
<SCRIPT>
<!--
nazev_cookie="pocet_navstev";
pocet=prectiCookie(nazev_cookie);

if (!pocet) pocet=1;
else pocet++;

zapisCookie(nazev_cookie,pocet);
document.write("Tuto stránku jsi dnes navštívil už "+pocet+" - krát!");
// -->
</SCRIPT>
<P>
<A HREF="javascript:location=this.location">Reload stránky</A> /
<A HREF="javascript:zapisCookie(nazev_cookie,'');">Vynuluj počítadlo</A>
</P>
</BODY>
</HTML>
 


Pro výsledek klikněte ZDE.

Vysvětlení činnosti:
Celý příklad se skládá ze dvou částí. První část (v mezi tagy head) se také děli na dvě samostatné části. Na funkci pro přečtení cookie a funkci pro zápis do cookie. Nejdříve si vysvětlíme první funkci. Nejdříve proměnné obsah přiřadíme obsah věech přístupných cookies. To provedeme pomocí sekvence document.cookie. Což je vlastně odkaz na cookies v tom daném dokumentu, který ji vyvolává. Poté poli upravene přiřadíme funkci split(), která rozdělí jednotlivé části cookie (proměnná obsah) na dané části (viz předchozí článek) a jako oddělovač zvolí ; (viz argument funkce). Dále proměnné velikost přiřadíme zjištění velikosti obsahu, pomocí sekvence obsah.length. A vytvoříme si dvě proměnné, kusy a vrat. S němi budeme dále pracovat, proto při jejich inicializaci (vytvoření) mají prázdnou hodnotu. Dále použijeme podmínku for. Tato podmínka bude hledat cookie, kterou jsme již inicializovali (při zobrazení), aby vrátila jeho hodnotu. Ta, jak víme, má tři argumenty. V první je inicializace proměnné, s kterou budeme pracovat, v našem případě x. V druhé je podmínkový výraz, který stanovuje, jak dlouho má podmínka platit. V našem případě bude platit do doby, kdy bude proměnná x menší než proměnná velikost a zároveň bude proměnné vrat náležet prázdná hodnota. Třetí část argumentu stanovuje jaká bude diference cyklu. Čili po jakých krocích se bude opakovat. V našem případě po jednom kroku. To aby se prohledali všechni cookies Jestliže bude podmínka platit začne script zpracovávat obsah podmínky. Nejdříve přiřadí poli kusy obsah všech cookies a mezi jejich názvy a hodnoty vloží (rozdělí je) znakem =. To se musí ošetřit v případech, kdy by byla v hodnotě cookie na začátku mezera. V tomto případě použijeme podmínku if. V jejím argumentu je stanoveno, že pokud se první znak obsahu proměnné kusy rovná mezeře má vykonat obsah podmínky. K tomu jsme použili funkce substring(počáteční_místo,konečné_místo). Tato funkce vrací pouze znaky, které si zvolíme. Pozor na číslování, které začíná 0. Čili první znak má číslo 0, druhý 1 atd. Navíc konečné místo se ne vybraného podřetězce nevybírá. Když je tedy první znak mezera, tak se poli kusy přiřadí pouze hodnota od 2 znaku do konce (opět použití funkce substing). A nakonec, když se pole kusy bude rovnat názvu (proměnná nazev), který jsme již předtím inicializovali, přiřadí se proměnné vrat. Abychom ho dekodovali použijeme opět podmínku if. Která bude platit, když bude mít proměnná vrat nejakou hodnotu (v argumentu podmínky je jen vrat). Když tedy bude podmínka platit, vrátí hodnotu pomocí return a pomocí funkce unescape ji dekoduje. Vrátí se pouze hodnota, čili ne nazev. Nazev je v poli kusy[0], kdežto hodnota je kusy[1]. Je to díky tomu, že jsem si pomocí split rozdělili název a hodnotu pomocí =.Pokud nebude mít hodnota vrat hodnotu (nebyla předtím nalezeno hledané cookie) vrátí chybu. Nyní se podíváme na druhou funkci v první části. A to funkci zapisCookie(nazev,hodnota,vyprsi). Argument vyprsi v tomto prikladu vynechame. V jinem pripade by se tento argument pricetl (udan v milisekundách) k aktuálnímu GMT času a když by čas dosáhl stanoveného "termínu", platnost cookie by vypršela. V našem příkladě tedy platnost vyprší po zavření okna prohlížeče. Sekvencí if, se tedy budeme zabývat v dalším příkladě (příkladech). Podíváme se tedy jen na sekvenci po else, když tedy argumetn vyprsi není zadán. V takovém případě pouze zapíšeme do cookie daného dokumentu název cookie (proměnná nazev) a jeho hodnotu, odděleno =. To proto, abychom to měli kompatibilní s vypisováním. Viz předchozí funkce. Nyní se jen podíváme na poslední část. V ní proměnné nazev_cookie, což je v dalším zpracování i název cookie přiřadíme hodnotu pocet_navstev. A proměnné pocet hodnotu cookie, kterou máme zvolenou jako pocet_navstevniku. Zde musíme ošetřit první vyvolání funkce prectiCookie(nazev), kdy je nemá pocet_navstev žádnou hodnotu. V takovém případě si pomůžeme podmínkou if, která v případě neexistenci hodnoty pro proměnnou pocet (ta přebírá hodnotu pocet_navstevniku) přiřadí proměnné hodnotu 1. Když už existuje přičte 1. Toto pak pomocí funkce zapisCookie zapíše. Zapíše to do cookie, která odpovídá proměnné nazev a její hodnota bude proměnná pocet. Tedy původní hodnota zvýšena o 1. Zbytek příkladu už jsou základy. Pokud zbytku nerozumíte, přečtěte si některý, z minulých článků věnovaných dané problematice.

08.05.2002 | Cookies | David Havlíček
Dnes je 15. 11. 2024
Svátek má Leopold
 Kontakty na nás
ICQ: 108078007
muj-script@poeta.cz
mongi@centrum.cz
 Bleskové aktuality:
10.12.2002 Dlouho jsme tu neměli příklady, tak co kdybychom si dneska jeden dali?
07.12.2002 Poslední operáty, které si představíme, jsou speciální.
02.12.2002 Po delší pauze si představíme další operátory - řetězcové.
17.11.2002 Next operátory jsou přiřazovací.
10.11.2002 Jedněmi z posledních operátorů jsou porovnávací.
02.11.2002 Už jste slyšeli o logických operátorech? Pár jich taky je.
29.10.2002 Dalšími operátory jsou bitové.
26.10.2002 Dnes si představíme první z řady operátorů - aritmetické operátory.
24.10.2002 Další částí referencí jsou příkazy.
18.10.2002 Dnes se mrkneme na referenční přehled funkcí.
12.10.2002 Window je objekt, který má snad nejvíce metod a vlastností, tak se mu dnes podíváme na zoubek.
06.10.2002 Netradičně v neděli další objekt - string.
28.09.2002 Další sobota. Další objekt - screen.
21.09.2002 Hodně používáný je objekt navigator. Proto se na něj dneska zaměříme.
14.09.2002 Po týdenní pauze další referenční článek o objektu - tentokrát Math.
07.09.2002 Objekt location bude náš dnešní cíl.
04.09.2002 Na paškál si tentokrát vezmeme objekt history.
 Aktuální články:
Speciální operátory
Řetězcové operátory
Přiřazovací operátory
Porovnávací operátory

Copyright © 2001-2004 David Havlíček, design:Vít Dlouhý
Všechna práva vyhrazena (R)
Šíření článků, bez souhlasu redakce je výslovně zakázáno!