LINUXSOFT.cz Přeskoč levou lištu
Uživatel: Heslo:  
   CZUKPL

> Perl (86) - CGI - cookies

Perl Cookies je mechanizmus, který umožňuje ukládat data na počítači klienta. Typickými úlohami pro cookies je počítání počtu návštěv, rozlišování uživatelů, pamatování obsahu formulářů nebo nákupní košíky v internetových obchodech.

24.8.2009 01:00 | Jiří Václavík | Články autora | přečteno 8209×

HTTP Cookie je nějaký textový soubor, který je součástí odpovědi webového serveru. Tato data si prohlížeč automaticky uloží. Jakmile někdy v budoucnu klient posílá tomuto webovému serveru další požadavek, pošle mu spolu s ním i uložená cookies.

Vzhledem k tomu, že cookies jsou součástí hlavičky HTTP požadavku, si je představíme zde.

To, že cookies jsou uloženy na straně klienta má pro autora webových stránek kladné i záporné vlastnosti. Cookies nám umožňují ukládat a zpětně využívat data při opakovaných návštěvách z téhož počítače, což může do jisté míry automatizovat činnost klienta. Toho se využívá konkrétně například při vyplňování formulářů, při ukládání nastavení apod. Mezi negativní důsledky patří to, že se nelze na nic spolehnout. Klient si může s cookies volně manipulovat - může je mazat nebo libovolně upravovat.

Struktura cookie

Cookie je fyzicky šestice datových položek. Jsou to následující.

  1. Název cookie - z jednoho serveru můžeme uchovávat několik cookies, které se budou lišit v názvu.
  2. Hodnota
  3. Doména - jméno webového hostitele, ze kterého sem byla cookie uložena
  4. Cesta - určuje, na který adresář domény budou cookies odesílány
  5. Čas vypršení - čas, kdy cookie pozbyde platnosti
  6. Secure - klient neodešle cookie, nebude-li to bezpečné

Poznámka - Pro názornější představu, jak cookies fungují, můžeme nahlédnout do svého www prohlížeče na nastavení cookies. Zde je seznam všech dostupných cookies i s hodnotami.

Konqueror - správa cookies

Náhled na cookies v prohlížeči

Ukládání cookies a modul CGI

Jednou z HTTP hlaviček je i Set-Cookie. Tu nastavujeme klíčem -cookie, předanému funkci header, jež generuje hlavičky.

Hodnotou Set-Cookie je řetězec formátovaný tak, aby obsáhl všechny datové položky cookies. Pro zformátování zde máme funkci cookie, která je součástí importované třídy :cgi a tedy i :standard.

Funkce cookie přijímá jako parametr opět hash, který může obsahovat prvky -name, -value, -domain, -path, -expires a -secure. Hodnotami těchto prvků jsou příslušné výše uvedené datové položky.

Hodnotou položky -expires může být buď datum ve formátu DD-MMM-YYYY hh:mm:ss, například 21-Feb-2009 09:11:55, nebo now pro platnost do konce relace. Dále je možné užít hodnotu ve formátu +<číslo><jednotka>. Taková cookie vyprší za daný počet jednotek. Dostupné jednotky jsou v tabulce.

JednotkaVýznam
ssekunda
mminuta
hhodina
dden
Mměsíc
yrok

Uveďme si příklad uložení cookie. Nejprve vytvoříme cookie stejnojmenou funkcí a následně odešleme hlavičky.

#!/usr/bin/perl
use strict;
use CGI qw(:standard);

my $cookie = cookie(
    -name=>"pocet_navstev",
    -value=>1,
    -expires=>"+10d",
);
print header(-type=>"text/plain", -cookie=>$cookie);

#následuje samotný obsah dokumentu

Nyní se podívejte ve vašem oblíbeném www prohlížeči na správu cookies. Vytvořila se zde nová položka. Na adrese localhost máme proměnnou pocet_navstev s hodnotou 1. Zde je screenshot zobrazující správu cookies v Konqueroru, kde je hezky vidět, co se stalo.

Konqueror - správa cookies

Naše první cookie

Je-li zapotřebí uložit více než jedinou cookie, lze jako argument prvku -cookie předat odkaz na seznam.

print header(-cookie=>[$cookie1,$cookie2]);

Získávání uložených cookies a modul CGI

Voláním funkce cookie s jménem cookie jako parametrem získáme nazpět hodnotu.

$cookie = cookie("cookie");

V seznamovém kontextu vrací funkce cookie seznam jmen všech cookies.

Příklad - počítadlo návštěv

Na závěr si napíšeme jednoduché počítadlo návštěv. Pokaždé, když návštěvník zobrazí naši stránku, dostane informaci, kolikkrát tu byl.

#!/usr/bin/perl
use strict;
use CGI qw(:standard);

my $pocet_navstev = cookie("pocet_navstev") or 0;
$pocet_navstev++;

my $cookie = cookie(
    -name=>"pocet_navstev",
    -value=>$pocet_navstev,
    -expires=>"+1y",
);

print header(-cookie=>$cookie);

print start_html();
if($pocet_navstev == 1){
    print h1("Vítejte! Jste zde poprvé!");
}else{
    print h1("Jste tu již po $pocet_navstev.");
}
print end_html();

Nyní tento skript několikkrát spustíme a budeme monitorovat stav cookies. Zde vidíme, jak se hodnota naší cookie mění.

Stav cookie po 1. návštěvě Stav cookie po 2. návštěvě Stav cookie po 3. návštěvě

1. návštěva *** 2. návštěva *** 3. návštěva

Verze pro tisk

pridej.cz

 

DISKUZE

Nejsou žádné diskuzní příspěvky u dané položky.



Příspívat do diskuze mohou pouze registrovaní uživatelé.
> Vyhledávání software
> Vyhledávání článků

13.9.2017 8:00 /František Kučera

Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Zajímá tě DIY, CNC, SDR nebo morseovka? Přijď na sraz spolku OpenAlt – tentokrát netradičně v pondělí: 18. září od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5).


Přidat komentář

3.9.2017 20:45 /Redakce Linuxsoft.cz
PR: Dne 21. září 2017 proběhne v Praze konference "Mobilní řešení pro business". Hlavní tématy konference budou: nejnovější trendy v oblasti mobilních řešení pro firmy, efektivní využití mobilních zařízení, bezpečnostní rizika a řešení pro jejich omezení, správa mobilních zařízení ve firmách a další.
Přidat komentář

15.5.2017 23:50 /František Kučera
Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Zajímá tě DIY, CNC, SDR nebo morseovka? Přijď na sraz spolku OpenAlt, který se bude konat ve čtvrtek 18. května od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5).
Přidat komentář

12.5.2017 16:42 /Honza Javorek
PyCon CZ, česká konference o programovacím jazyce Python, se po dvou úspěšných ročnících v Brně bude letos konat v Praze, a to 8. až 10. června. Na konferenci letos zavítá např. i Armin Ronacher, známý především jako autor frameworku Flask, šablon Jinja2/Twig, a dalších projektů. Těšit se můžete na přednášky o datové analytice, tvorbě webu, testování, tvorbě API, učení a mentorování programování, přednášky o rozvoji komunity, o použití Pythonu ve vědě nebo k ovládání nejrůznějších zařízení (MicroPython). Na vlastní prsty si můžete na workshopech vyzkoušet postavit Pythonem ovládaného robota, naučit se učit šestileté děti programovat, efektivně testovat nebo si v Pythonu pohrát s kartografickým materiálem. Kupujte lístky, dokud jsou.
Přidat komentář

2.5.2017 9:20 /Eva Rázgová
Putovní konference československé Drupal komunity "DrupalCamp Československo" se tentokrát koná 27. 5.2017 na VUT FIT v Brně. Můžete načerpat a vyměnit si zkušenosti z oblasti Drupalu 7 a 8, UX, SEO, managementu týmového vývoje, využití Dockeru pro Drupal a dalších. Vítáni jsou nováčci i experti. Akci pořádají Slovenská Drupal Asociácia a česká Asociace pro Drupal. Registrace na webu .
Přidat komentář

1.5.2017 20:31 /Pavel `Goldenfish' Kysilka
PR: 25.5.2017 proběhne v Praze konference na téma Firemní informační systémy. Hlavními tématy jsou: Informační systémy s vlastní inteligencí, efektivní práce s dokumenty, mobilní přístup k datům nebo využívání cloudu.
Přidat komentář

15.4.2017 15:20 /František Kučera
Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Zajímá tě IoT a radiokomunikace? Přijď na sraz spolku OpenAlt, který se bude konat ve středu 19. dubna od 18:30 v Šenkovně (Sokolská 60, Praha 2).
Přidat komentář

5.3.2017 19:12 /Redakce Linuxsoft.cz
PR: 23. března proběhne v Praze konferenci na téma Cloud computing v praxi. Hlavními tématy jsou: Nejžhavější trendy v oblasti cloudu a cloudových řešení, Moderní cloudové služby, Infrastruktura současných cloudů, Efektivní využití cloudu, Nástrahy cloudových řešení a jak se jim vyhnout.
Přidat komentář

   Více ...   Přidat zprávičku

> Poslední diskuze

18.9.2017 14:37 / Rojas
high security vault

15.9.2017 7:33 / Wilson
new zealand childcare jobs

31.8.2017 12:11 / Jaromir Obr
Re: ukůládání dat ze souboru

30.7.2017 11:12 / Jaromir Obr
Národní znaky

27.7.2017 12:24 / Jaromir Obr
Cteni/zapis

Více ...

ISSN 1801-3805 | Provozovatel: Pavel Kysilka, IČ: 72868490 (2003-2017) | mail at linuxsoft dot cz | Design: www.megadesign.cz | Textová verze