
Előző két cikkünkben már egy kicsit nehezebb leckék voltak soron. Megismerkedhettél a szessziókkal, és megtanulhattad használni a date funkciót. Most, hogy már bonyolultabb weboldalakat is létre tudsz hozni, olyan dolgokra is gondolnod kell, mint amilyenek a sütik, azaz a 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):
- 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!
- 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).
- 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!
Nyereményjáték
Rovatunk elsődleges célja, hogy közelebbről is bemutassa a legismertebb webtechnológiákat. Azok között az olvasók között, akik minden héten követik rovatunkat, azaz velünk tanulják a programozás alapjait és kitöltik a feladatsort, a sorozat végén egy laptopot sorsolunk ki.
Néhány szó rólunk:
Az ErdSoft (www.erdsoft.com) 2011-ben alakult meg. Csapatunkat a fiatalos lendület, a szakértelem, a folyamatos tanulás és tapasztalatgyűjtés jellemzi. Ügyfeleinknek igyekszünk teljes körű szolgáltatást nyújtani — bátran fordulhatnak hozzánk, legyen szó webfejlesztésről, alkalmazásokról, SEO-optimalizálásról, grafikai tervezésről, marketingről vagy szövegírásról. Csapatunk sikerét mi sem bizonyítja jobban, mint a több száz elkészült weboldal és a számos elégedett ügyfél Szerbiában, Magyarországon és az Egyesült Királyságban.