php - pre začiatočníkov

Vytlač príspevok
Odporuč príspevok
Bookmark and Share PRIDAŤ NA VYBRALI.SME.SK

PHP Manuál : 9. Cookies

Robíme v PHP koláčiky.
Navigácia
  1. Cookies
    1.1 Vytvárame a odstraňujeme cookies - setcookie()

  2. Práca s cookies

COOKIES

Áno. Cookies su v doslovnom preklade koláčiky. Ale ,to čo vlastne cookies sú ,sme si povedali v článku o superglobálnych premenných. Ale opakovanie je matka múdrosti.

Čo sú cookies ?
Je to nejaká informácia/údaj ,ktorú na žiadosť servera ,prehliadač uloží na užívateľovom počítači. Tieto informácie sa neskôr využijú pri opätovnom načítaní aplikácie. V týchto súboroch sú väčšinou uložené nejaké osobné nastavenia.

setcookie()
Touto funkciou cookie vytvoríme. Resp. vytvoríme informáciu ,ktorú na žiadosť servera (cez náš skript) , prehliadač uloží do súboru na klientskom počítači.
Keďže cookies patria k hlavičke komunikácie cez protokol HTTP musíme túto funkciu použiť , ešte pred akýmkoľvek výstupom skriptu. (ešte pred html tag <HTML>).
Syntax :
setcookie("meno","hodnota","cas_platnosti","cesta","doména",);
  • "meno" - (povinný parameter)
    je meno cookie , toto meno neskôr využívame pri identifikácii cookie.
  • "hodnota" - (povinný parameter)
    je hodnota ,ktorú chceme do cookie uložiť.
  • "cas_platnosti" - (voliteľný parameter)
    určuje čas platnosti cookie. Definuje sa : time()+3600*24*30 nám nastaví platnosť na 30 dní. Funkcia time nám vráti počet sekúnd od 1.1.1970 a k tomu pripočítame platnosť cookie  - 3600 sekúnd (1 hodina)  * 24 hodín (1 deň) * 30 dní. Ak tento parameter nenastavíme platnosť cookie skončí keď ukončíme komunikáciu. (zavrieme prehliadač)
  • "cesta" - (voliteľný parameter)
    nastavuje cestu pre ktorú platí cookie. Napr. ak by sme zadali "/skuska" ,tak cookie by bolo platné len pre tento adresár a pre príslušné podadresáre. Ak zadáme "/" cookie je platné pre celú doménu.
    Ak nezadáme nič, tak východzie nastavenie je ten adresár v ktorom je skript ,ktorý vytvára cookie.
  • "doména" - (voliteľný parameter)
    nastavuje na akej doméne platí nastavené cookie. Napr. ak zadáme ".priklad.sk" , tak cookie je dostupné na všetkých subdoménach servera "priklad.sk" ,ale ak zadáme "www.priklad.sk" , tak je cookie dostupné len na tejto doméne.
Jednoduchý príklad zápisu :
setcookie("pocet","30");

A ako vymažeme nastavené cookie ?
Ukážeme si to na predchádzajúcom zápise. Na mazanie koláčikov nemá PHP zvláštnu funkciu. Použijeme setcookie(). Ak by sme chceli vymazať vyššie definovaný cookie , zapíšeme :
setcookie("pocet","");

Ale ak už chceme vymazať cookie ,ktorému sme nastavili platnosť , musíme mu nastaviť neplatnú platnosť (: ...
setcookie("pocet","30",time()+3600); //nastavili sme cookie "pocet" s platnosťou 1 den
setcookie("pocet","",time()-3600); //vymazali sme cookie "pocet " ,pretože mu platnosť vypršala pred 1 dňom (-3600)

PRÁCA S COOKIES

Teraz keď už vieme cookies vytvárať a odstraňovať , si môžme povedať ako narábať s údajmi cookies. Na načítanie týchto údajov sa používa superglobálna premenná $_COOKIES (v starších verziách $HTTP_VARS_COOKIES).
Ako sme si v článku o superglobálnych premenných povedali , $_COOKIES je vlastne pole ,ktorého prvkom je hodnota cookie. Viac už napovie príklad :
Príklad 23
<?php
setcookie("kolacik","hodnota kolacika",time()+3600); //nastavíme cookie s platnosťou 1 hodinu
?>

<html>
<body>
<?php
if (isset($_COOKIE["kolacik"])) {  //použil som podmienku s isset k otestovaniu či je cookie nastavené
echo $_COOKIE["kolacik"];     //vypíše hodnotu cookie s menom kolacik
setcookie("kolacik","",time()-3600);    //vymaže nastavené cookie
}
else {
echo "cookie nie je definované !";
}

?>
</body>
</html>


Tento kód nastaví cookie "kolacik" , následne podmienka vyhodnotí ,že hodnota $_COOKIE existuje a vypíše hodnotu kolacik-a. A hneď na to ju vymaže a toto nastavenie platí. Čiže keď obnovíte stránku vypíše Vám to text "cookie nie je definované!". Ale ak obnovíte stránku znova cookie už bude opäť nastavené.

Pri práci s cookies môžme využiť aj pole :
Príklad 24
<?php
setcookie("kolacik[1]","hodnota kolacika - pole 1",time()+3600);    // nastavime jednotlive prvky pola
setcookie("kolacik[2]","hodnota kolacika - pole 2",time()+3600);
?>
<html>
<body>
<?php
if (isset($_COOKIE["kolacik"])) {

foreach($_COOKIE["kolacik"] as $hodnota) {   //pomocou cyklu foreach vypíšeme jednotlivé prvky poľa
echo $hodnota."<br />";
}

}
else {
echo "cookie nie je definované !";
}

?>
</body>
</html>


To už je ku koláčikom snáď všetko. Na záver ešte musím spomenúť , že pri programovaní svojej aplikácie prihliadajte aj na to aby fungovala aj s variantou ,ktorá nepoužíva koláčiky. Pretože tieto , si vie každý užívateľ vypnúť - tým pádom ich prehliadač ignoruje.


Články
Predošlý článok : 8. Práca so súbormi
Nasledujúci článok : 10. Session



Odkazy
Stiahnite si príklady vypracované v článku


php | stály odkaz

Komentáre

Pozor, na konci je potreba spočítať neľahkú matematickú úlohu! Inak komentár nevložíme. Pre tých lenivejších je tam tlačidlo kúzlo.



Prevádzkované na CMS TeaGuru spoločnosti Singularity, s.r.o., © 2004-2014