Jistě jste si při pohybu po Internetu všimli, že server, kde jste již kdysi byli, ví o vaší činnosti na něm. Například jste hlasovali v anketě a podruhé již nemůžete. Za tohle můžou cookies a v dnešním článku se jim podíváme na zoubek.

<% if Request.Cookies("posledni_navsteva")="" then Navsteva="Dnes jste tu poprvé" Response.Cookies("posledni_navsteva")=now() else Navsteva="Vaše poslední návšteva byla dne: "&Request.Cookies("posledni_navsteva") end if %> Cookieje jednoduchý textový soubor ukládaný na počítač návštěvníka našeho webu, t.j. na počítač který se připojil k serveru. Pomocí něj se ukládají důležité údaje pro činnost webové aplikace. Cookies se v hojné míře používají v e-commerce, kde se vám do cookies ukládá například obsah nákupního košíku. To, jaké údaje a kdy se uloží určíme pomocí ASP skriptu.

Mnoho lidí si Cookie vypíná, protože slyšeli, že Cookies jsou nebezpečné a šíří se pomocí nich viry. Nebojte se, Cookie jsou věc naprosto bezpečná a o šíření virů pomocí Cookienemůže být ani řeč. Díky této fámě přicházíte o možnosti, které vám moderní weby poskytují a to sice personalizaci, kdy máte možnost si nastavit, co se vám na webu bude přednostně zobrazovat. Ano – jde to vyřešit i jinak a to například s pomocí databází a shromaždováním informací na serveru a pak následným přihlašováním k webu, ale proč nepoužít cookies?

Výhody Cookies
Pomocí Cookies můžeme ukládat a zpětně využívat velmi prospěšné informace. Můžeme například zaznamenat údaje o uživatelské personalizaci webu a při dalších návštěvách je zpětně využívat.

Nevýhody Cookies

  • ve většině prohlížečů se dá podpora Cookies vypnout
  • Cookies můžou být na hostitelském počítači smazané

    Co můžeme s Cookies dělat

  • zapsat je na počítač návštěvníka
  • přečíst si Cookiez počítače návštěvníka

    Zapisování Cookies
    Kolekce Cookies z objektu response umožňuje vašim ASP aplikacím zapisovat informace na klientské počítače. Pokud se pokusíte zapsat cookie, které ještě neexistuje, vytvoří se. Pokud existuje je hodnota přepsána.

    Response.Cookies(key)[(subkey)|atribute]=Hodnota_Cookies

    Při zapisování Cookies lze nastavit i vlastnosti Cookies:

  • Exipres
  • Domain
  • Path
  • Secure

    Jednoduché Cookies

    Response.Cookies(„Jmeno_Cookies“)=Hodnota_Cookies

    Kde za Jmeno_Cookies dosadíme jméno proměnné a za Hodnota_Cookies její hodnotu.
    Praktický příklad:

    Response.Cookies(„Visitor“)=“Ondřej Kopp“

    uloží na počítač návštěvníka Cookies Visitor s hodnotou Ondřej Kopp.

    Dvoustupňové Cookies
    Při použití subkey při zápisu cookies dostaneme jakési pole cookies. Tohoto můžeme s výhodou použít v rozsáhlé aplikaci pro udržení pořádku v cookies.

    Response.Cookies(„jmeno_Cookies_1“)(„jmeno_Cookies_2“)=Hodnota_Cookies

    Rozdíl od jednoduchých Cookies je dvoustupňové použití názvu proměnné Cookies.
    Praktický příklad:

    Response.Cookies(„Visitor“)(„First_Name“)=“Ondra“
    Response.Cookies(„Visitor“)(„Last_Name“)=“Kopp“

    Vlastnost Expires
    Vlastnost Expires určuje jak dlouho se mají Cookies uchovat. Použití je možné jen na první úrovni, t.j. Response.Cookies(„Visitor“)(„First_Name“).Expires=#01/01/2005# zobrazí chybové hlášení.

    Default nastavení je, že Cookies bude v počítači návštěvníka jen po dobu připojení a potom dojde k jeho odstranění. Pokud je zadaná hodnota Expires datum z minulosti, bude Cookies odstraněno také s ukončením spojení
    Praktický příklad:

    Response.Cookies(„Visitor“).Expires=#01/01/2005#

    platnost tohoto Cookieje určená do 1.1.2005.

    Vlastnost Domain
    Při použití vlastnosti Domain je Cookie nastaveno tak, že klient pošle toto Cookie pouze stránkám, které jsou v doméně, jenž byla touto vlastností nastavena.

    Vlastnost Path
    Pomocí vlastnosti Path nastavíme Cookie tak, aby je klient posílal pouze stránkám, které mají virtuální cestu, která je nastavena v Cookies pomocí path.

    Vlastnost Secure
    Pomocí vlastnosti Secure nastavíme Cookie tak, že klient toto Cookie neodešle, pokud nepoužívá Secure Sockets Layer (SSL). Tím se velmi sníží pravděpodobnost prozrazení citlivého cookie.

    Pozor na chyby při používání Cookies
    Protože pomocí Response.Cookies měníme obsah hlavičky odpovědí HTTP, musíme hodnoty Cookies nastavit dříve než server odešle klientovi značku <HTML>. To neplatí v případě, že se odpověď ukládá do bufferu a pak se se klientovi posílá najednou. Ukládání do buffer zapneme pomocí Response.Buffer=True
    Špatné použití:

    <HTML>
    <%
    Response.Cookies(„navsteva“)=now
    %>
    ……
    </HTML>

    Správné použití:

    <%
    Response.Cookies(„navsteva“)=now
    %>
    <HTML>
    ……
    </HTML>

    V případě, že Response.Cookies použijete špatně, obdržíte následující chybovou zprávu.

    Response object error ‚ASP 0156 : 80004005‘
    Header Error
    /cookies.asp, line 4
    The HTTP headers are already written to the client browser. Any HTTP header modifications must be made before writing page content.

    Čtení Cookies
    Cookies čteme jednoduchým použitím Request.Cookies a příslušného jména Cookies.

    hodnota=Request.Cookies(Jmneno_cookies)

    Praktický příklad:

    Dim visitor
    visitor =CStr(Request.Cookies(„Visitor“))

    Příklad nám uloží do proměnné visitor hodnotu Cookies Visitor.

    Příklad na závěr
    V příkladu si ukážeme jak na svých stránkách rozpoznat, zda-li je na nich návštěvník poprvé.

    <%
    if Request.Cookies(„posledni_navsteva“)=““ then
       Navsteva=“Dnes jste tu poprvé“
       Response.Cookies(„posledni_navsteva“)=now()
    else
       Navsteva=“Vaše poslední návšteva byla dne: „&Request.Cookies(„posledni_navsteva“)
    end if
    %>

    Výše uvedený kód umístíme před značku <HTML> nebo pomocí response.buffer=True zapneme zpracovávání stránky pomocí zásobníku (Buffer). Poté na místě, kde chceme, zobrazíme pomocí response.Write obsah proměnné navsteva.

    Response.write(navsteva)

    Výsledek příkladu:


    <%Response.write(navsteva)%>


    To je vše, co se týká práce s Cookie pomocí ASP. V dalším článku na toto téma vám objasním práci s Cookie ve skriptech na straně klienta.

    Starší komentáře ke článku

    Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.

  • Žádný příspěvek v diskuzi

    Odpovědět