[[oktatas:web:javascript|< JavaScript]]
====== JavaScript sütemény ======
* **Szerző:** Sallai András
* Copyright (c) 2011, Sallai András
* Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC Attribution-Share Alike 4.0 International]]
* Web: https://szit.hu
===== A sütikről =====
A süti angolul cookie. A böngészők és a szerverek HTTP
protokollal kommunikálnak egymással. A HTTP egy
állapotmentes protokoll. A weboldalakon, azonban sokszor szükség
van a weblapok közötti állapot tárolására.
Általában statisztikákhoz, nyomon követéshez használjuk.
===== Hogyan működik =====
A szerver küld egy süteményt a böngésző számára, amiben adatok vannak.
Ha a böngésző elfogadja a sütit, akkor egyszerű szöveges rekordként tárolja.
A szerver később elkérheti a sütit a böngészőtől.
A sütik 5 változó hosszúságú mezőből állhatnak:
* Expires - Az adat mikor jár le. Ha üres, a süti lejár, ha látogató kilép a böngészőből.
* Domain - A webhelyed neve.
* Path - Az útvonal egy könyvtár vagy egy webhely, ahol be van állítva a süti. Ha üresen hagyjuk, a süti tartalma bárhonnan elérhető.
* Secure - Ha ez a mező tartalmazza a secure szót, akkor csak biztonságos szerverről tölthető le a süti. Ha mező üres, nincs ilyen korlátozás.
* Name=érték - Kulcs-érték pár.
===== A sütik élettartalma =====
Alapértelmezés szerint a sütik a böngésző bezárása után megmaradnak.
Az élettartamuk szabályozható másodpercekben a max-age attribútummal.
30 nap beállítása:
document.cookie = "kulcs1=érték1; max-age=" + 30*24*60*60;
Az élettartam megadható az expires attribútummal is.
Az attribútumot GMT/UTC formátumban kell megadni, és nem
másodpercben.
document.cookie = "kulcs1=érték1; expires=Fri, 31 Dec 2100 23:59:59 GMT";
==== Dátum konvertálása ====
Linux alapú rendszeren a dátum konvertálása:
$ export LANG=en_US; date -R -d "2100-12-31 23:59:59"
Fri, 31 Dec 2100 23:59:59 +0100
A +0100-t át kell íri GMT-re:
Fri, 31 Dec 2100 23:59:59 GMT
A napok névvel:
* Mon
* Tue
* Wed
* Thu
* Fri
* Sat
* Sun
===== Süti =====
==== Létrehozás ====
document.cookie = "adat1=valami";
document.cookie = "igaz=true; expires=Fri, 31 Dec 2021 12:00:00 GMT";
Az aktuális lapon legyen tárolva (path):
document.cookie ="valtozonev=tartalom; expires=Sat, 31 Dec 2011 12:00:00 UTC; path=/";
==== Kiolvasás ====
Az összes süti olvasása:
document.write(document.cookie);
document.write(document.cookie.split("=")[1]);
Több süti közül az adat1 kiválasztása:
const cookieValue = document.cookie
.split('; ')
.find(row => row.startsWith('adat1'))
.split('=')[1];
console.log(cookieValue);
Vegyük észre az első split() függvényben a ; pontosvessző után a szóközt!
Függvényként:
function getCookie(name) {
let result = document.cookie
.split('; ')
.find(row => row.startsWith(name))
.split('=')[1];
return result;
}
Másik lehetőség:
function getCookie(cname) {
let ca = document.cookie.split(';');
let name = cname + "=";
for(var item of ca) {
while(item.charAt(0) == ' ') {
item = item.substring(1);
}
if(item.indexOf(name) == 0) {
return item.substring(name.length, item.length);
}
}
return result;
}
==== Törlés ====
Törlésnél a múltba állítjuk a lejárati időt.
document.cookie = "változónév=tartalom; expires=Sun, 31 Dec 2000 12:00:00 UTC; path=/";
vagy
document.cookie = "kulcs1=érték1; max-age=0"
===== Munkamenet =====
sessionStorage.setItem('egy', 'első')
var res = sessionStorage.getItem('egy')
===== Linkek =====
A munkamenetre példa a következő helyen, Craig Buckler által:
* http://blogs.sitepointstatic.com/examples/tech/js-session/session.js
Egy Demo hozzá:
* http://blogs.sitepointstatic.com/examples/tech/js-session/index.html