PHP část XXV. - Cookies - Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:



PHP

PHP část XXV. - Cookies

24. ledna 2001, 00.00 | Stručný popis použití cookies v php skriptech. Nechcete aby návštěvníci vašich stránek neustále vyplňovali stejná data do formuláře? A nevíte jak na to?

Podobně jako jiné skriptovací jazyky (např. JavaScript) i PHP podporuje tzv. cookies, které řeší problém identifikace klienta. Přesněji řečeno, cookies tvoří jakýsi doplněk protokolu HTTP. Jelikož HTTP navazuje pro každý požadavek, tedy přenos WWW stránky, nové spojení, které se po vyřízení požadavku ihned uzavře. Server ani skript nemohou zjistit, zda je uživatel na této stránce poprvé nebo jestli sem chodí každý den. Pro tento problém vyvinuly dílny firmy Netscape řešení zvané cookies, což by se česky dalo nazvat "trvalý stav klienta".
Princip je velice jednoduchý. Pokud zašleme serveru požadavek (na zobrazení nějaké WWW stránky), může nám v odpovědi zaslat také informace, které má klient (prohlížeč) uložit pro pozdější použití. Právě těmto informacím se říká cookies. Pokud někdy v budoucnu zašleme stejný požadavek (tedy na stejnou WWW stránku), zašle se serveru spolu s naším požadavkem i obsah cookies. Cookies jsou uloženy na klientském počítači (tedy na vašem). Kromě vás (a lidí, kteří mají fyzicky přístup k vašemu počítači) má přístup ke cookies jen váš prohlížeč. Nehrozí tedy žádné vyzrazení dat uložených v cookies z "venku", tedy z internetu, protože prohlížeč může obsah cookie zaslat jen tomu serveru, který zaslal vašemu prohlížeči žádost o její uložení.

Stále vás nenapadá, k čemu by se cookies daly využít? Možnosti využití jsou opravdu velké. Představte si např. formulář v internetovém obchodu, do kterého se vyplňuje adresa, na kterou má být zasláno zboží. Uživatel ji vyplní, odešle formulář a čeká na zboží. Další den si vzpomene, že by chtěl koupit ještě něco dalšího. Znovu tedy navštíví onen internetový obchod, vybere zboží a postupně dojde zase k formuláři s adresou. Pokud tvůrce internetového obchodu nevyužil technologii cookies, musí uživatel tuto adresu vyplnit znovu, což je zdlouhavé a nudné. Pokud ovšem tvůrce tuto technologii použil, objeví se uživateli formulář, ve kterém již bude vyplněna jeho adresa. Jak se to stalo? Při prvním vyplnění formuláře server zaslal klientovi (prohlížeči) informaci, že by se mu mohla tato data hodit i v budoucnu. Prohlížeč tedy tato data uložil do cookies. Následující den prohlížeč zaslal serveru spolu s požadavkem na zobrazení formuláře i data z cookies, protože zjistil, že pro tento formulář má uložena nějaká data (cookies). Specifikace také zmiňují maximální počet uložených cookies pro jeden server. Tento počet byl stanoven na 20. Myslím, že teorie už bylo dost, nyní se podíváme, jak jsou cookies řešeny technicky.

Uložení cookies

Ukládání cookies je velice jednoduché a pohodlné. PHP pro tento účel obsahuje funkci SetCookie();. Tato funkce má několik parametrů, z nichž jsou některé nepovinné. Syntaxe funkce:

SetCookie(jméno, hodnota, platnost, cesta, doména, SSL);

Nyní se na jednotlivé parametry podíváme podrobněji. Jediný povinný parametr je "jméno", který určuje název cookie, která má být zaslána klientovi. Za parametr "hodnota" dosazujeme hodnotu, kterou chceme přiřadit dané cookie. Pokud odešleme cookie bez určení hodnoty, cookie se na klientovi smaže. Parametr "platnost" určuje, do kdy se má cookie uchovávat. Zadává se jako počet sekund, které uběhly od 1. ledna 1970 - k určení platnosti tedy můžeme použít funkci Time();, která tuto hodnotu vrací. Následující dva parametry blíže určují, kterému serveru ("doména"), a kterému dokumentu na serveru ("cesta") tato cookie náleží. Poslední parametr je zaveden z bezpečnostních důvodů. Pokud jeho hodnotu nastavíme na TRUE, může se cookie odeslat jen v případě, že spojení je kryto bezpečnostní vrstvou SSL (Secure Socket Layer).

Nyní si ukážeme jednoduchý příklad:

SetCookie("Jmeno", "Marek Bražina", Time() + 86400);

Zajistili jsme tedy uložení cookie, která se jmenuje Jmeno, její hodnota je Marek Bražina a platí přesně jeden den (protože 24 hodin * 60 minut * 60 sekund = 86400 sekund + aktuální čas Time();).

Na závěr jedna důležitá poznámka: funkci SetCookie(); musíme ve skriptu použít ještě před tím, než začne daný skript generovat jakýkoliv výstup.

Čtení cookies

Existuje několik způsobů čtení cookies. Nejprve však zopakuji systém zasílání cookies serveru. Jak již víme z úvodu, cookie je klientem (prohlížečem) zasílána serveru jako součást HTTP hlavičky. A máme zde první způsob, jak v PHP vyvolat obsah nějaké cookie. PHP totiž automaticky ukládá obsah všech přijatých cookies do asociativního pole $HTTP_COOKIE_VARS. Z tohoto pole už tedy jednoduše můžeme získat hodnotu cookie. PHP však nabízí ještě pohodlnější a jednodušší zbůsob. Automaticky totiž převádí získané cookies na proměnné. Jméno proměnné je totožné se jménem cookie. Hodnotu naší cookie Jmeno z předchozího příkladu bychom tedy ve skriptu měli uloženu v $Jmeno.

To je pro dnešek vše...

 

Obsah seriálu (více o seriálu):

Tématické zařazení:

 » Rubriky  » PHP  

 » Rubriky  » Web  

 

 

 

Nejčtenější články
Nejlépe hodnocené články

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: