9.14b Sütik a PHP-ban

A Cookie-k (sütik) a Netscape által kifejlesztett technológia, amely arra irányult, hogy az ugyanarról a domainről származó, egymás után többször meghívott weboldalak között weboldalak között adatcserét tegyen lehetővé. Programozói szempontból ez azt jelentette, hogy az egyes weboldalak állapotát le lehetett menteni így a weblap állapottartóvá vált.

A sütik tárolása mindig a böngészőn történik. A különböző böngészők más és más módon tárolják a sütik tartalmát, de összességében elmondható, hogy

  • egy weboldalról származó sütik mérete legfeljebb 4 kbyte lehet,

  • az adatok nyílt szövegként tárolódnak, azokat a weboldalon futó javascript kódok olvasni tudják,

  • a sütik a weboldal hívásakor a böngészőből nyílt módon (ha a protokoll nyílt) automatikusan kerülnek át a weboldalra a böngésző kérésének fejlécében (header),

  • ha a szerver oldalon futó kód (pl. PHP kód) sütit akar elküldeni a böngészőnek, akkor azt mindenféle egyéb output kiküldése előtt kell elküldenie.

A PHP-ban a sütik kezelésére az alábbi lehetőségek vannak

$_COOKIE[] - szuperglobális tömb, azaz a PHP kód bármelyik pontján az értékek olvashatók.

Egy cookie létrehozása

setcookie(
    string $name,                         // A cookie neve
    string $value = "",                  // A cookie értéke
    int $expires_or_options = 0,   // A cookie lejáratának ideje - ha nincsen megadva vagy 0, 
                                                  // akkor a böngésző bezárásáig érvényes
    string $path = "",                   // A domain melyik könyvtárából és alkönyvtáraiból 
                                                  // származó oldalon legyen elérhető a cookie
    string $domain = "",               // A domain, ahonnan elérhető lehet
    bool $secure = false,              // Csak HTTPS protokollon keresztül lehet átvinni
    bool $httponly = false            // Csak HTTP protokollon lehet átküldeni
): bool

A Cookie-ban akár kisebb tömböket is lehet tárolni.

Ha a cookie-ban speciális karakterekből álló szöveget akarunk tárolni, azt urlencoding segítségével elkódolja az oldal kiküldés előtt.

A lejárat ideje tulajdonképpen egy időpontot jelöl. Ez egy UNIX időbélyeg, amely a UNIX világ kezdőidőpontja óta eltelt másodperceket adja vissza szám formájában. Használható az mktime() php függvény és a time() függvény is:

setcooke("nev", ertek, mktime() +86400);  // Egy nap múlva jár le 60*60*24 = 86400
setcooke("nev", ertek, time() +60*60*24*30);  // 30 nap múlva jár le a cookie

A setcookie utasítást mindenféle print, echo stb... kiírás előtt lehet csak kiadni!

Egy Cookie olvasása

print $_COOKIE["nev"];

Ezzel a Cookie tömb paramétereit lehet lekérdezni.