Č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).
$_COOKIES je vlastne pole ,ktorého prvkom je hodnota cookie. Viac už napovie príklad :
Príklad:
<?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:
<?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.
