A PHP-sütik (cookies)

A sütik már régóta jelen vannak az interneten. Azért lettek létrehozva, hogy lehetővé tegyék a webmester számára, hogy információkat őrizzen a felhasználó számítógépén a felhasználóval és annak az oldalon tett látogatásával kapcsolatban.

Az első években a laikus nyilvánosság félt a sütik használatától, mert rendkívül rizikósnak tartotta őket. Napjainkban azonban már szinte mindenki böngészőjében engedélyezve vannak a sütik, részben azért, mert ennél sokkal nagyobb veszélyek is leselkednek ránk a neten, részben pedig azért, mert az összes „megbízható” weboldal is használ sütiket.

Mai leckénkben bemutatjuk a sütik mentésének és lekérésének alapjait, majd elmagyarázzuk azokat a lehetőségeket, amelyeket a sütik kínálnak.

Mi a süti?

A sütit gyakran használjuk a felhasználó azonosítására. A süti egy kis fájl, melyet a szerver a felhasználó számítógépébe illeszt. Minden alkalommal, amikor a gép a böngésző segítségével lekéri a weboldalt, a lekéréssel együtt elküldi a sütit is. A PHP segítségével létrehozhatjuk és le is kérhetjük a sütik értékét. A süti létrehozására a setcookie() funkciót használjuk.

Az első PHP-sütid létrehozása

Amikor süti létrehozására készülsz a setcookie funkció segítségével, három paramétert kell meghatároznod. Ezek a paraméterek a setcookie(name, value, expiration):

  1. name: Ez a sütid neve. Fontos, hogy ne felejtsd el, mert később is szükséged lesz rá, amikor le szeretnéd kérni!
  2. value: Ez az az érték, amely a sütiben van elmentve. Gyakori értékek például a felhasználónév (string) és az utolsó látogatás ideje (date).
  3. expiration: Ez az a dátum, amikor a süti lejár és törlődik. Ha nem állítod be a lejárati dátumot, a süti úgy lesz kezelve, mint egy szessziós süti, és törlődik, amikor a böngészőt újraindítják.

Az egyetlen nélkülözhetetlen paraméter a name, de a másik két paraméter alkalmazását is ajánljuk. Ezek mellett más paraméterek is vannak. Ezeket felsoroljuk, de mai leckénkben nem térünk ki rájuk bővebben: setcookie(name, value, expire, path, domain, secure, httponly).

Példánkban létrehozunk egy sütit, mely elmenti a felhasználó utolsó látogatását. Ez akkor hasznos, ha le szeretnénk mérni, milyen gyakran látogatja a felhasználó a weboldalunkat. Azokat, akik több mint két hónapja nem jártak a honlapon, nem szeretnénk bevonni az elemzésbe, ezért a süti lejárati idejét két hónappal előre állítjuk.

PHP-kód:

<?php
  // számoljunk 60 napot előre
  // jelenlegi idő + másodpercek * percek * órák * napok

  $in_two_months = time() + (60 * 60 * 24 * 60);
  setcookie('last_visit', date('G:i - m/d/y'), $in_two_months);
?>

Ne aggódj, ha a kicsit bonyolultabb, dátummal kapcsolatos dolgokat nem érted. Pillanatnyilag csak az a fontos, hogy megtanuld, hogyan állíthatod be a sütit a három fontos argumentum meghatározásával: név (name), érték (value) és lejárati idő (expiration date).

A friss süti lekérése

Ha a süti nem járt le, lekérhetjük a felhasználó számítógépéről a könnyen megjegyezhető nevű $_COOKIE asszociatív tömbbel. Az elmentett süti neve kulcsfontosságú, ezért is kértünk meg rá, hogy jól jegyezd meg. A süti nevével tudjuk lekérni az elmentett sütiértékeket.

PHP-kód:

<?php
  if (isset($_COOKIE['last_visit'])) {
      $visit = $_COOKIE['last_visit'];
      echo 'Utolsó látogatásod időpontja - ' . $visit;
  }

  else {
      echo 'Állott sütijeid vannak!';
  }
?>

Megjelenítés a böngészőben:

Utolsó látogatásod időpontja - 11:48 - 02/28/08

Végezetül nézzünk meg egy kicsit bonyolultabb példát is! Létrehozunk egy sütit, melynek a neve „user”, értéke pedig „John Doe”. A süti lejárati ideje 30 nap (86400 * 30). A „/” azt jelenti, hogy a süti a teljes weboldalon elérhető (más esetben itt beállíthatjuk a kívánt direktóriumot).

A $_COOKIE segítségével lekérjük a „user” süti értékét, és az isset() funkció segítségével ellenőrizzük, hogy a süti be van-e állítva.

PHP-kód:

<?php
  $cookie_name = 'user';
  $cookie_value = 'John Doe';
  setcookie($cookie_name, $cookie_value, time() + (86400 * 30), '/'); // 86400 = 1 day
?>

<html>
    <body>
      <?php
        if (!isset($_COOKIE[$cookie_name])) {
            echo 'Cookie named "' . $cookie_name . '" is not set!';
        }

        else {
            echo 'Cookie "' . $cookie_name . '" is set!<br />';
            echo 'Value is: ' . $_COOKIE[$cookie_name];
        }
      ?>
    </body>
</html>

Fontos megjegyezni, hogy a setcookie() funkciónak a <html> tag ELÉ kell kerülnie. Azt is lényeges kiemelni, hogy a süti értéke automatikus URL-kódoláson esik át a küldés során, a fogadás során pedig dekódolva lesz.

Korábban is biztosan sokat hallottál a sütikről, most azonban már azt is tudod, hogyan használhatod őket a saját weboldaladon. A sütik használatával kapcsolatban még annyit jegyeznénk meg, hogy a GDPR-rendeletben egy róluk szóló rész is található, ezért mielőtt egy, a felhasználók számára is elérhető weboldalon alkalmaznád őket, mindenképp olvass utána a témának, vagy konzultálj egy szakértővel!

Jó gyakorlást!

Az oldal sütiket használ, hogy személyre szabjuk a tartalmakat és reklámokat, hogy működjenek a közösségi média funkciók, valamint hogy elemezzük a weboldal forgalmát. Bővebben a "Részletek mutatása" gombra olvashat.
Az oldal sütiket használ, hogy személyre szabja az oldalon megjelenő tartalmat és reklámokat.