ARCHIV |
|||||
Software (10844)
Distribuce (131)
Skripty (697)
Menu
Diskuze
Informace
|
PHP (52) - CookiesMohou nám cookies usnadnit práci s PHP a webem? Zjistěme to! Minule jsme sdíleli informace mezi stránkami pomocí parametrů v
odkazech. Dnes se podíváme na to, jak lze pro obdobnou činnost využít
cookies. CookiesCookies představují mechanismus pro ukládání informací na počítači
klienta. Tedy tam, kde spouštíme prohlížeč. Cookies (všimněte si, že se
to do češtiny nijak nepřekládá, přestože pokusy tu byly) fungují na
velice jednoduchém principu:
PHP má pro ukládání cookies příkaz setcookie. Než to nějak dlouhosáhle vysvětlovat, raději si to ukážeme na malém příkladu: <? Pozn.: Jelikož se cookies odesílají v hlavičce odpovědi, neměli byste příkaz SetCookie použít poté, co byl jakýkoli jiný výstup odeslán do prohlížeče. Což je úplně stejná zásada jako při použití příkazu header. Ve skutečnosti, pokud se vyznáte v syntaxi hlaviček, můžete nastavovat cookies i pomocí příkazu header. Pakliže používáte nějaký vyspělý prohlížeč (třeba Mozillu, v IE to
opravdu nehledejte), máte většinou k dispozici Správce souboru
Cookies (V mozille je v nástrojích). Zde se můžete podívat, že daná
cookie Vám byla skutečně
odeslána. Platnost cookiePříkaz setcookie má ještě nepovinné parametry. Hned prvním nepovinným parametrem je doba platnosti cookie. Udává se jako unixový čas a znamená, že prohlížeč bude danou cookie odesílat na server jen určitou dobu, a pak ji zapomene. Takže, kdybychom chtěli v předchozím případě naši cookie považovat za platnou například deset minut, můžeme použít konstrukci <? Pozn.: Abyste mohli prohlížeč
vypnout a znova zapnout, a aby si tu cookie stále pamatoval, musí ji
pochopitelně uložit na disk. V Mozille například k tomu slouží soubor
cookies.txt v adresáři profilu prohlížeče. Cookies bez udané doby
platnosti jsou zapomenuty po ukončení práce s prohlížečem a většina
prohlížečů je vůbec na disk neukládá. Čtení cookiesČtení cookies je opravdu jednoduché. Protože cookies jsou v PHP k dispozici pomocí asociativního pole $_COOKIE (pozor, není to $_COOKIES). Takže můžeme pro práci s cookies použít něco ve stylu: <? Je to dost podobné jako použití proměnných z $_GET nebo $_POST. Ve
skutečnosti platí, že lze použít asociativní pole $_REQUEST nejen na
proměnné získané pomocí metod GET nebo POST, ale i na cookies. Pozn.: Název cookie by neměl obsahovat
"bílé" znaky (mezery, konce řádků a tabelátory). Jednak je to v rozporu
se specifikací,
a jednak většina takových prohlížečů potom cookie sice uloží, ale už
nám ji nevrátí. Náš příkladPřipomeňme si, že minule jsme v příkladu potřebovali evidovat identifikátor uživatele, čas přihlášení a počet stránek navštívených po přihlášení. Kdybychom to chtěli přepsat do podoby s použitím cookies, dopadne to takto: <? Náš skript obsahuje několik změn a taky se trochu jinak chová.
Především si všimněte použítí příkazu setcookie a pole $_COOKIE. Když
si to budete chtít spustit, uvidíte rovněž, že nově nastavená cookie
jsou (logicky) k dispozici až po dalším načtení stránky, takže na to v
reálném světě pamatujte (asi by se postupovalo tak, že by se
zobrazované informace uložily do lokálních proměnných). Konečně si
všimněte příjemné věci - že další stránky aplikace můžeme volat bez
jakýchkoli parametrů. Problémy s cookiesAčkoli jsou cookies mnohem jednodušší na používání než předávání
hodnot pomocí url (byla o tom řeč minule), přesto jejich používání
přináší jisté problémy. Asi nejhorší je, že uživatel může ukládání
cookies v prohlížeči zakázat.
Pakliže Vaše aplikace na cookies závisí, jste v takovém případě
nahraní. Lze sice otestovat, zda se cookie uložila, ale už nelze
bezpečně zjistit, zda uživatel nezakázal prohlížeči práci s cookies
třebas druhý den. Související problém je ten, že uživatel může cookies změnit či smazat ručně. Vždyť se ukládají do
textových souborů. Server si tedy nikdy nemůže být jist, zda cookie,
kterou dostal je táž, kterou prohlížeč kdysi uložil. Konečně, informace uložené pomocí cookies jsou snadno čitelné. Můžete je sice šifrovat
(mluvili jsme o tom minule), ale to jejich použití zase už nebude tak
jednoduché. Takže byste nikdy neměli do cookies ukládat nějak extrémně
citlivé informace. Příště se podíváme na způsob přenosu informací mezi stránkami, který má asi nejméně omezení z dosud uvedených. Budou to sessions.
Související články
Předchozí Celou kategorii (seriál) Další
PHP (1) - Historie a budoucnost
PHP (2) - Jak to funguje PHP (3) - Instalace PHP (4) - Základy syntaxe PHP (5) - Příkaz Echo; formátování kódu PHP (6) - Typy proměnných PHP (7) - Pole PHP (8) - Výrazy, konstanty, inkrementace PHP (9) - Přetypování proměnných PHP (10) - Logické výrazy a operátory PHP (11) - Operátory porovnání; priorita operátorů PHP (12) - Podmínky PHP (13) - Příkazy cyklu PHP (14) - Cyklus for PHP (15) - Funkce PHP (16) - Vyrobme si kalendář PHP (17) - Dokončujeme kalendář PHP (18) - Funkce pro práci s poli PHP (19) - Objekty PHP (20) - Objekty podruhé PHP (21) - Vkládání souborů PHP (22) - Regulární výrazy PHP (23) - Neztraťte se ve funkcích PHP (24) - Pracujeme s formuláři PHP (25) - Formuláře - nikomu nevěřte PHP (26) - Formuláře na sto způsobů PHP (27) - Příklady na formuláře PHP (28) - Chybovati je lidské PHP (29) - Soubory a adresáře PHP (30) - Počitadlo pomocí souborů PHP (31) - Upload a download souborů PHP (32) - Příklad na BLOG PHP (33) - HTTP hlavičky PHP (34) - Úvod do databází PHP (35) - Uložení dat v databázi PHP (36) - Připojujeme se k MySQL PHP (37) - Tvorba tabulek v MySQL PHP (38) - Dolujeme data z MySQL PHP (39) - Zobrazujeme a stránkujeme data PHP (40) - PHP a vkládání záznamů do databází PHP (41) - Měníme data v databázích PHP (42) - Odstraňujeme databázová data PHP (43) - MySQL rychleji a rychleji PHP (44) - MySQL ještě rychleji PHP (45) - Jsou data v databázi v bezpečí? PHP (46) - Importujeme data do databáze PHP (47) - Exportujeme data PHP (48) - Práce s binárními daty (BLOB) PHP (49) - Kam kráčíš, MySQL? PHP (50) - Ověřování uživatelů PHP (51) - Přenos dat mezi stránkami PHP (53) - Sessions PHP (54) - Dodržování webových standardů PHP (55) - Odesílání e-mailů PHP (56) - Tisk a PDF PHP (57) - XML PHP (58) - XML lépe a radostněji PHP (59) - zapisujeme XML PHP (60) - Rozsáhlejší projekty 1. PHP (61) - Rozsáhlejší projekty 2. PHP (62) - Rozsáhlejší projekty 3. PHP (63) - Rozsáhlejší projekty 4. PHP (64) - Ladění kódu PHP (65) - Ladění kódu 2. PHP (66) - PHP debugger PHP (67) - Zdroje informací o PHP PHP (68) - Stavíme portál PHP (69) - Stavíme portál 2. PHP (70) - Registrace uživatelů na portálu PHP (71) - Přihlašování uživatelů na portál PHP (72) - Hrátky s uživateli PHP (73) - Frontend a backend PHP (74) - Administrátorské rozhraní portálu PHP (75) - Pokračujeme na portále PHP (76) - Zobrazujeme data na portále PHP (77) - Portál, databáze a relace PHP (78) - Informační obsah portálu PHP (79) - Triky s formuláři a ergonomie webu PHP (80) - Administrace diskografie hudebního portálu PHP (81) - Uživatel versus programátor PHP (82) - zabezpečení vstupů formulářů PHP (83) - Ukládání textů písní na hudebním portále PHP (84) - Ještě k registraci PHP (85) - ukládání souborů do databáze na portálu PHP (86) - zobrazení dat a stahování soborů pro registrované PHP (87) - finišujeme portál PHP (88) - provoz ve Windows PHP (89) - cesta do hlubin php.ini PHP (90) - Poťouchlé konfigurační volby PHP (91) - php.ini potřetí a naposledy PHP (92) - funkce pro interakci s operačním systémem PHP (93) - příkazový řádek PHP (94) - GUI PHP (95) - GUI podruhé PHP (96) - (ne)bezpečné PHP PHP (97) - bezpečnost ještě jednou PHP (98) - PHP 5. PHP (99) - Budoucnost PHP PHP (100) - Závěr PHP (101) - Apríl: Příklady z praxe php rewrite Byte order mark a PHP Předchozí Celou kategorii (seriál) Další Ke stažení jako HTML nebo jako PDF.
|
Vyhledávání software
Vyhledávání článků
28.11.2018 23:56 /František Kučera 12.11.2018 21:28 /Redakce Linuxsoft.cz 6.11.2018 2:04 /František Kučera 4.10.2018 21:30 /Ondřej Čečák 18.9.2018 23:30 /František Kučera 9.9.2018 14:15 /Redakce Linuxsoft.cz 12.8.2018 16:58 /František Kučera 16.7.2018 1:05 /František Kučera
Poslední diskuze
31.7.2023 14:13 /
Linda Graham 30.11.2022 9:32 /
Kyle McDermott 13.12.2018 10:57 /
Jan Mareš 2.12.2018 23:56 /
František Kučera 5.10.2018 17:12 /
Jakub Kuljovsky | |||
ISSN 1801-3805 | Provozovatel: Pavel Kysilka, IČ: 72868490 (2003-2024) | mail at linuxsoft dot cz | Design: www.megadesign.cz | Textová verze |