Cookies – kas, kaip ir kodėl ?
5 (100%) 1 vote

Cookies – kas, kaip ir kodėl ?

Klausymas: Kas yra cookie ?
Atsakymas: Tiesioginis lietuviškas vertimas butu ‘sausainis’, ‘sausainiukas’. Arba tiesiog galite naudoti angliška tarima – kukis (daug.: kukiai).

Klausymas: Kam jis reikalingas ?
Atsakymas: Kukis reikalingas saugoti informacija nutolusiame kliente ir taip ‘sekti’ jusu puslapio lankytojus.

Klausymas: Kokios yra kukiu savybes (privalumai/trukumai) ?
Atsakymas:
– kukis yra išsiunchiamas kartu su kitomis HTTP antraštemis (headers), todel jis privalo buti išsiustas prieš bet kokius ar tagus.
– jis netaps matomas iki kito užkraunamo puslapio;
– kukiai turi buti ištrinami su tokiais pat parametrais, kurie buvo naudojami jiems sukurti;
– kukiu pavadinimai gali buti užsetinami kaip masyvu vardai ir jusu PHP skripte bus prieinami kaip masyvai;

Klausymas: Kaip galechiau užsetinti kuki ?
Atsakymas: Naudok PHP f-ja setcookie(); bendra f-jos sintaxe:
setcookie( string vardas [, string reikšme [, int galiojimo_laikas [, string kelias [, string domenas [, int apsaugotas ]]]]] ); Visi parametrai išskyrus pati pirmaji (kukio vardas) yra pasirinktini.

Klausymas: O kaip del kitu parametru ? Ka jie reiškia ?
Atsakymas: Kaip jau ir minejau pirmas parametras naudojamas nustatyti kukio vardui.
string reikšme: nurodo kukio reikšme. T.y. jeigu kukio vardas yra „Jonas“, o jo reikšme „Petraitis“, tai PHP skripte analogas butu: $Jonas = „Petraitis“;
int galiojimo_laikas: nustato kukio galiojimo laika sekundemis, nuo jo nustatymo datos;
string kelias: parodo, kuriuose serverio kataloguose veiks kukis;
string domenas: tas pats kaip ir ‘string kelias’ tiktais nurodo galiojima (sub)domenuose, o ne kataloguose;
int apsaugotas: nustato ar kukis turetu buti užsetintas per HTTPS protokola, ar ne;

Klausymas: Gal galima butu pavyzdžiu ?
Atsakymas: Žinoma !

1. Kukiu užsetinimas

1.1: Papraschiausias kukio vardu „TestCookie“ užsetinimas be jokios reikšmes, kurio galiojimo laikas yra 1 valanda nuo užsetinimo laiko:

setcookie(„TestCookie“,““, time() + 3600);

1.2: Kukis vardu „kataloginis“, su reikšme „sausainis“, kuris galios 15 minuchiu domeno „.example.com“ betkokiame subdomene, „/of_cookie/“ kataloge ir bus persiustas HTTPS protokolu:

setcookie(„kataloginis“,“kukis“,time() + 900, „/of_cookie/“, „.example.com“, 1);

1.3: Kukio, kaip masyvo, užsetinimas su ivairiu galiojimo laiku:

setcookie(„kukis[vienas]“,“reikšme1″,time() + 3600); // 1 valanda
setcookie(„kukis[du]“,“reikšme2″, time() + 1800); // 30 minuchiu
setcookie(„kukis[trys]“,“reikšme3″, time() + 86400); // 1 para

2. Kukiu trynimas

2.1: Kukio trynimas, kuris buvo užsetintas, kaip parodyta pirmame pavyzdyje:

setcookie(„TestCookie“,““, time() – 3600);

Atkreipkite demesi, kad norint ištrinti kuki reikia naudotis praeities laika.

2.2: Kukio trynimas, kuris užsetintas su tokiais pat parametrais, kaip ir antrame pavyzdyje:

setcookie(„kataloginis“,““, time() – 3600, „/of_cookie/“, „.example.com“, 1);

2.3: Kukio, kaip masyvo elemento, trynimas:

setcookie(„kukis[du]“,““, time() – 3600);

Klausymas: Na gerai – aš užsetinau kukius. Dabar kaip man gauti reikšmes iš tu kukiu ?
Atsakymas: Gali naudoti viena iš sekanchiu pavyzdžiu:

1: echo $TestCookie; // parodys kukio, vardu „TestCookie“ reikšme

2: echo $_COOKIE[„TestCookie“]; // analogas pirmajam atvejui

3: echo $HTTP_COOKIE_VARS[„TestCookie“]; // tas pats kaip ir pirmais dviema atvejais

Pastaba: $_COOKIE yra palaikomas > PHP 4.1.0 versijos, $HTTP_COOKIE_VARS palaikomas nuo PHP 3 versijos.

Klausymas: Emmm… O kaip su tais „masyviniais“ kukiais ?
Atsakymas: Naudok while() cikla su list() bei each() f-jomis. Paprastas pvz.:

if (isset ($cookie)) {
while (list ($name, $value) = each ($cookie))
{
echo „$name == $value
\n“;
}
}

Klausymas: Kur kreiptis del klausimu ar problemu ?
Atsakymas: Yra manual’as, yra http://www.php.net, yra http://www.php.lt, yra konferencijos, #php kanalas, bei mano e-mail’as: enc@omni.lt. Sekmes!