A cookie-król


A cookie-kat általában arra használjuk, hogy valamilyen adatot tároljunk a felhasználó gépén. Lehet ez jelszó, egy név, vagy bármi más. Már javascripttel is készíthetünk “süti”-ket, de én ezt nem részletezem, mert szerintem azzal kevesebb lehetőségünk van.

php-ben sütik küldésére két függvény is rendelkezésünkre áll: a setcookie() és a setrawcookie(). Az utóbbi annyiban különbözik az előzőtől, hogy utóbbi nem kódolja le a cookie értékét.

A cookiekat mindenképp az előtt kell beállítanunk a kliensnek, mielőtt bármilyen kimenetet vagy fejrészt (header: például.: <html><head>) küldenénk a böngészőnek. Ha a függvény végrehajtása valamilyen okból (például le vannak tiltva a cookie-k a kliens böngészőjében) nem sikerül, akkor az hamis (FALSE) értékkel tér vissza. Sikeres küldés esetén igaz (TRUE) értéket kapunk.
Ha a fejrészt előbb meghatároztuk, mint a cookie-t küldtük, akkor ezt a hibaüzenetet kapjuk:

hibaüzenet

Warning: Cannot modify header information – headers already sent by (output started at /pelda.php:2) in /pelda.php on line 3

Tehát ha késleltetni szeretnénk a kimeneteket, akkor használhatjuk az ob_start() és az ob_end_flush() függvényt.

Most, hogy ezzel megvagyunk beállíthatjuk a setcookie() függvényt, aminek a szintaxisa így néz ki:

szintaxis

<?php
setcookie ( cookie neve [, cookie értéke [, cookie érvényessége [, cookie útvonala a szerveren [, cookie domainje [, biztonság]]]]]);
?>

Ahol:
cookie neve – Ez az egyetlen kötelező argumentum, a többi opcionális. Ezt használjuk majd adataink visszanyeréséhez.
cookie értéke – Ez az adat fog tárolódni a kliens számítógépén. Ezt kapjuk majd vissza ha betöltjük a cookie-t.
cookie érvényessége – Az az időpont amíg a cookie a kliens gépen tárolódik. Az időpontot Unix formátumban kell megadni. Legegyszerűbb a time() függvényhez hozzáadni a lejárathoz szükséges másodpercek számát. Például a time()+60*60*24*10 a cookie érvényességét 10 napra állítja. Ha nem állítunk be semmit akkor a session végéig marad érvényes (böngésző bezárása).
cookie útvonala a szerveren – Ha ‘/’-ra állítjuk, akkor a cookie az egész szerveren elérhető marad. Ha ‘/test/’-re, akkor a test könyvtár, és annak összes alkönyvtárában lesz elérhető. Ha nem adunk meg semmit, akkor abban a könyvtárban lesz érvényes, ahol a cookie-t beállítottuk.
cookie domainje – Az a domain, ahonnan a cookie elérhető. Ha azt akarjuk, hogy egy pelda.com összes al-domain-jén elérhető legyen, akkor állítsuk ‘.pelda.com’-ra. Ez nem feltétlenül szükséges, de sok böngésző így működik. A www.pelda.com, csak a www-s domain-ról lesz elérhető.
biztonság – Ha 1, akkor a cookie csak biztonságos HTTPS kapcsolaton keresztül juthat el a böngészőhöz (ha létezik egy ilyen kapcsolat). Alapértelmezett 0.

Ezzel beállítottuk a cookie-nkat.

Az értékét csak onnan nyerhetjük vissza, ahonnan beállítottuk, vagy amit megadtunk az argumentumokban. Ha ez teljesül, akkor a cookie értékét a következő módon írathatjuk ki:

kód

<?php
echo “$_COOKIE[‘cookienév’]”;
?>

//Ha nem szeretnénk kiíratni, átírhatjuk egy változóba:

<?php
$cookievalue = $_COOKIE[‘cookienév’];
?>

Ezzel aztán már azt csinálunk amit akarunk.

Szerző: Balo

Kapcsolódó bejegyzések:
  • Az alábbi leírásban található tutorial alapján nemsokára Te is naplózhatod az oldaladon, hogy 1-1 laphoz ki, honnan stb.. fért hozzá. A megoldás folyamán szükség …

  • Ma belefutottam egy problémába: mi van akkor, ha otthoni kis házi szerverünk van, és regisztrálunk hozzá egy domain-t pl. a www.no-ip.com-on. Egyszerű az eset: a …

  • A gyik.com fórumon elég sokszor felmerült kérdés: hogy lehet login rendszert illeszteni egy honlapba? Íme a feladat egy lehetséges megoldása:tölthető :letöltés / …

  • Íme egy nagyon egyszerű szkript oldalaink jelszavas védelmére. Ha például az index.html oldalunkat akarjuk védetté tenni, akkor hozzunk létre egy index.php fálj …

  • Ha az ember honlapot készít annak általában az az oka, hogy valamilyen információt meg akar osztani a világgal. Bizonyos esetben ezt nem csak egy nyelven szeretn …

A cikket beküldte: Harder (http://blog.harder.hu)

2 hozzászólás

  1. Lacabacsi says:

    Én szeretném kérdezni hogy tudom megoldani cooki ban azt hogy ha egy felhasználó pl egy hír részt becsuk egy gombbal akkor az ha frissíti az oldalt vagy bezárja a böngészőjét és újra megnyissa akkor amit bezárt az bezárva is maradjon?

    előre is köszi a helpet

  2. Krees says:

    Ez most életmentő volt, köszi :)

Szólj hozzá
a A cookie-król c. bejegyzéshez

- Engedélyezett HTML elemek: <a> <em> <strong> <ul> <ol> <li>
- Forráskód beküldéséhez tedd a kódot ezek közé: <pre lang="php" line="1">Kódrészlet helye itt</pre>