[[oktatas:programozás:php|< PHP]]
====== A PHP sütik és a munkamenetek ======
* **Szerző:** Sallai András
* Copyright (c) Sallai András, 2011
* Licenc: GNU Free Documentation License 1.3
* Web: http://szit.hu
===== Bevezetés =====
A sütik angolul cookie, melynek jelentése süti vagy keksz.
A munkamenet angolul session.
A sütik és a munkamenetek arra valók, hogy adatokat tároljunk a kliensről.
A különbség a kettő között, hogy a süti a kliensprogramban tárolódik,
addig a munkamenet a szervere oldalon (persze az azonosításhoz az is
ad egy sütit.) A süti hosszú ideig is tárolható, a munkamenet csak
a böngésző bezárásáig marad meg.
A sütiket szokás session cookie néven is emlegetni míg a munkameneteket sessionid néven.
===== Süti =====
==== A sütikről ====
A PHP nyelvben a sütiket a setcookie() függvénnyel állíthatjuk be.
Szintaxis:
bool setcookie ( string $name [, string $value [, int $expire = 0 [, string $path
[, string $domain [, bool $secure = false [, bool $httponly = false ]]]]]] )
| name | A cookie neve |
| value | A cookie értéke. Ez az érték a kliens számítógépén lesz tárolva. Lekérdezés $_COOKIE['cookiename'] |
| expire | A cookie lejárati ideje. Ez egy Unix időbélyeg. A korszakváltás óta eltelt másodpercek. \\ A time() függvénnyel megkapjuk az eddig eltelt másodperceket, amihez hozzáadjuk a hány másodperc múlva jár le. \\ Például 30 nap: time()+60*60*24*30. \\ Ha az érték 0, akkor a cookie akkor jár le mikor befejezzük a munkamenetet (A böngésző bezárása). \\ Az értéket megadhatod Unix időbélyeggel is: DD-Mon-YYYY HH:MM:SS GMT. A PHP átkonvertálja. |
| path | Útvonal a szerveren, ahol a cookie elérhető. Ha '/', akkor a cookie az aktuális tartományban van. Ha '/valami/', akkor a cookie a /valami/ könyvtárban érhető el. Az alapértelmezés az aktuális könyvtár. |
| domain | Tartomány, ahol a cookie elérhető. Beállíthatod, például www.pelda.hu tartományt. |
| secure | A cookie csak HTTPS kapcsolaton vihető át. Ha az érték TRUE, akkor csak titkosított lehet kapcsolat. |
| httponly | Ha TRUE akkor a cookie csak HTTP protokollon mehet át. |
==== Süti beállítása ====
Előre meghatározott érvényességi ideig tárolásra kerülnek.
setcookie ("jegyzek", 1);
==== Egy óra lejárati idő ====
setcookie("nev", "Nagy József", time()+3600);
==== Süti lekérdezése ====
$tartalom = $_COOKIE['jegyzek'];
$tartalom = $HTTP_COOKIE_VARS["jegyzek"];
==== Be van-e állítva ====
if (isset($_COOKIE["cookie"]))
;
===== Munkamenet =====
==== Munkamenet indítása ====
A böngésző bezárás után automatikusan törlődnek.
Munkamenete a session_start(); utasítással indítunk.
**Kötelezően az első utasítás kell legyen!**
session_start();
Amelyik fájlban munkamenetet
használunk, ott a fájl elején
lefuttatjuk.
==== Munkamenet adat bejegyzése ====
Teszünk egy változót a munkamenetbe:
$_SESSION['jegyzek']=1;
A változó neve esetünkben jegyzek, de bármi más lehet.
==== Változó tartalmának vizsgálata ====
Van amikor csak azt vizsgálom, hogy be van-e állítva:
if ($_SESSION['jegyzek'] == 1)
;
==== Be van-e állítva a változó? ====
if(isset($_SESSION['jegyzek']))
{
print("Be van állítva");
}
else
{
print("Nincs beállítva");
}
==== Változó eltávolítása ====
unset($_SESSION['jegyzek']);
A session_unset az összes munkamenet változót felszabadítja.
Szintaxisa:
void session_unset ( void )
Használata:
session_unset();
==== A munkamenet törlése ====
session_destroy();
==== Munkamenet neve ====
session_name("menet"); //beállítja a munkamenet nevét
$menetnev = session_name(); // visszaadja az aktuális munkamenet nevét
==== Munkamenet azonosítója ====
session_regenerate_id(); //A munkamenet azonosítójának újragenerálása
session_id("ksdflsdflsjdfldjflsjldfjkdf"); //beállítunk egy munkamenetazonosítót
$az = session_id(); // lekérdezzük a munkamenet azonosítóját