Hlavní nabídka: |
Základy
Reference
Příklady
|
|
|
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 | |
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.
|
|
|