Tartalomjegyzék

< PHP

A PHP sütik és a munkamenetek

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