PHP munkamenet és PHP cookie-k példával
Mi az a Cookie?
A cookie egy kis, legfeljebb 4 KB méretű fájl, amelyet a webszerver az ügyfélszámítógépen tárol.
A cookie beállítása után minden oldalkérelem visszaadja a cookie nevét és értékét.
A cookie csak abból a domainből olvasható, amelyről azt kiállították. Például egy cookie-készlet a domain használatával www.guru99.com nem olvasható a tartományból karrier.guru99.com.
Az interneten található webhelyek többsége más domain elemeket jelenít meg, például a hirdetéseket. Az ezeket az elemeket kiszolgáló domainek saját cookie-kat is beállíthatnak. Ezeket harmadik féltől származó cookie-knak nevezzük.
A felhasználó által létrehozott cookie csak az ő számára látható. Más felhasználók nem láthatják az értékét.
A legtöbb webböngészőben lehetőség van a cookie-k, a harmadik féltől származó cookie-k vagy mindkettő letiltására.
Ha ez a helyzet, akkor a PHP az URL-ben található cookie-token átadásával válaszol.
Az alábbi ábra szemlélteti a cookie-k működését.
Itt,
1) A felhasználó sütiket tároló oldalt kér
2) A szerver elhelyezi a cookie-t a felhasználó számítógépén
3) A felhasználó egyéb oldalkérései visszaadják a cookie nevét és értékét
Miért és mikor használjunk sütiket?
- A HTTP egy állapot nélküli protokoll; a cookie-k segítségével nyomon követhetjük az alkalmazás állapotát a felhasználó számítógépén tárolt kis fájlok segítségével. A cookie-k tárolási útvonala a böngészőtől függ. Az Internet Explorer általában a Temporal Internet Files mappában tárolja azokat.
- A felhasználói élmény személyre szabása – ezt úgy érik el, hogy a felhasználók kiválaszthatják saját preferenciáikat. A következő kért oldalak személyre szabottak a cookie-kban megadott beállítások alapján.
- A felhasználó által meglátogatott oldalak követése
Cookie-k létrehozása
Most nézzük meg a cookie létrehozásához használt alapvető szintaxist.
<?php setcookie(cookie_name, cookie_value, [expiry_time], [cookie_path], [domain], [secure], [httponly]); ?>
ITT,
- A PHP „setcookie” az PHP függvény a cookie létrehozásához használt.
- A „cookie_name” annak a cookie-nak a neve, amelyet a szerver akkor fog használni, amikor lekéri az értékét a $_COOKIE tömbváltozóból. Ez kötelező.
- A „cookie_value” a cookie értéke, és annak kötelező értéke
- A „[lejárati_idő]” nem kötelező; ezzel beállítható a süti lejárati ideje, például 1 óra. Az időt a PHP time() függvényekkel kell beállítani, plusz vagy mínusz 0-nál nagyobb másodpercek száma, azaz time() + 3600 1 órán keresztül.
- A „[cookie_path]” nem kötelező; segítségével beállítható a cookie elérési útja a szerveren. A perjel „/” azt jelenti, hogy a cookie a teljes domainben elérhető lesz. Az alkönyvtárak korlátozzák a cookie-k hozzáférését az aldomainhez.
- A „[domain]” nem kötelező, használható a cookie-hozzáférési hierarchia meghatározására, pl
www.cookiedomain.com
a teljes tartományt jelenti, mígwww.sub.cookiedomain.com
korlátozza a cookie-k elérésétwww.sub.cookiedomain.com
és annak altartományai. Vegye figyelembe, hogy lehet egy aldomain aldomainje, ha az összes karakter nem haladja meg a 253 karaktert. - A „[biztonságos]” nem kötelező, az alapértelmezett érték hamis. Ez annak meghatározására szolgál, hogy a cookie-t https-en keresztül küldjék-e el, ha igaz, vagy http-n keresztül, ha hamis értékre van állítva.
- A „[Httponly]” nem kötelező. Ha igazra van állítva, akkor csak az ügyféloldali szkriptnyelvek, pl JavaForgatókönyv nem férhet hozzájuk.
Jegyzet: a php set cookie függvényt a HTML nyitócímke előtt kell végrehajtani.
Nézzünk most egy példát, amely cookie-kat használ.
Létrehozunk egy alapprogramot, amely lehetővé teszi, hogy a felhasználónevet egy tíz másodperc után lejáró cookie-ban tároljuk.
Az alábbi kód a fenti példa „cookies.php” megvalósítását mutatja be.
<?php setcookie("user_name", "Guru99", time()+ 60,'/'); // expires after 60 seconds echo 'the cookie has been set for 60 seconds'; ?>
output:
the cookie has been set for 60 seconds
A Cookie érték lekérése
Hozzon létre egy másik „cookies_read.php” nevű fájlt a következő kóddal.
<?php print_r($_COOKIE); //output the contents of the cookie array variable ?>
output:
Array ( [PHPSESSID] => h5onbf7pctbr0t68adugdp2611 [user_name] => Guru99 )
Megjegyzés: A $_COOKIE egy PHP beépített szuperglobális változó.
Ez tartalmazza az összes beállított cookie nevét és értékét.
Azon értékek száma, amelyek a
A $_COOKIE tömb tartalma a php.ini fájlban beállított memória méretétől függ.
Az alapértelmezett érték 1 GB.
Alkalmazásunk tesztelése.
Tegyük fel, hogy elmentette a PHP fájlokat a phptus mappába.
- 1. lépés – nyissa meg a webböngészőt, és írja be az URL-t http://localhost/phptuts/cookies_read.php
Megjegyzés: Csak egy üres tömb jelenik meg
- 2. lépés – Böngésszen az URL-címhez http://localhost/phptuts/cookies.php
- 3. lépés – Váltson vissza az első lapra, majd kattintson a frissítés gombra
Várjon egy percet, majd kattintson újra a frissítés gombra. Milyen eredményeket ért el?
Cookie-k törlése
- Ha egy sütit a lejárati ideje előtt meg akar semmisíteni, akkor a lejárati időt olyan időpontra állítsa be, amely már lejárt.
- Hozzon létre egy új fájlt cookie_destroy.php néven a következő kóddal
<?php setcookie("user_name", "Guru99", time() - 360,'/'); ?>
- Ismételje meg a fenti szakasz 1-3. lépéseit a cookie-értékek lekéréséhez.
- Nyissa meg az URL-t http://localhost/phptuts/cookie_destroy.php
- Váltson az URL-re http://localhost/phptuts/cookies_read.php milyen eredményeket jelenít meg?
Mi az a munkamenet?
- A munkamenet a szerveren tárolt globális változó.
- Minden munkamenethez egyedi azonosító van hozzárendelve, amely a tárolt értékek lekérésére szolgál.
- A munkamenet létrehozásakor a felhasználó számítógépén egy egyedi munkamenet-azonosítót tartalmazó cookie-t tárolnak, és minden kéréssel visszaküldik a szervernek. Ha az ügyfélböngésző nem támogatja a cookie-kat, akkor az egyedi php munkamenet azonosítója megjelenik az URL-ben
- A munkamenetek a cookie-khoz képest viszonylag nagy mennyiségű adat tárolására képesek.
- A munkamenet értékei automatikusan törlődnek a böngésző bezárásakor. Ha tartósan szeretné tárolni az értékeket, akkor tárolja azokat az adatbázisban.
- Csakúgy, mint a $_COOKIE tömbváltozó, a munkamenet változóit a $_SESSION tömbváltozó tárolja. A cookie-khoz hasonlóan a munkamenetet a HTML-címkék előtt kell elindítani.
Miért és mikor érdemes a Sessions alkalmazást használni?
- A fontos információkat, például a felhasználói azonosítót biztonságosabban szeretné tárolni a szerveren, ahol a rosszindulatú felhasználók nem tudják kezelni őket.
- Értékeket szeretne átadni egyik oldalról a másikra.
- A cookie-kat nem támogató böngészőkben alternatívát szeretne a cookie-k helyett.
- Hatékonyabb és biztonságosabb módon szeretné tárolni a globális változókat, mint az URL-ben való átadásuk
- Olyan alkalmazást fejleszt, például bevásárlókosarat, amelynek ideiglenesen tárolnia kell a 4 KB-nál nagyobb kapacitású információkat.
Munkamenet létrehozása
Munkamenet létrehozásához először meg kell hívnia a PHP session_start függvényét, majd el kell tárolnia az értékeket a $_SESSION tömbváltozóban.
Tegyük fel, hogy tudni akarjuk, hányszor töltöttek be egy oldalt, ehhez használhatunk egy munkamenetet.
Az alábbi kód bemutatja, hogyan hozhat létre értékeket, és hogyan lehet lekérni a munkamenetekből
<?php session_start(); //start the PHP_session function if(isset($_SESSION['page_count'])) { $_SESSION['page_count'] += 1; } else { $_SESSION['page_count'] = 1; } echo 'You are visitor number ' . $_SESSION['page_count']; ?>
output:
You are visitor number 1
A munkamenet-változók megsemmisítése
A session_destroy() függvény a teljes Php session változók megsemmisítésére szolgál.
Ha csak egyetlen munkamenet-elemet szeretne megsemmisíteni, használja az unset() függvényt.
Az alábbi kód bemutatja, hogyan kell használni mindkét módszert.
<?php session_destroy(); //destroy entire session ?>
<?php unset($_SESSION['product']); //destroy product session item ?>
A Session_destroy eltávolítja az összes munkamenet adatot, beleértve a munkamenethez kapcsolódó cookie-kat is.
Az Unset csak az egyes munkamenet-változókat szabadítja fel.
A többi adat érintetlen marad.
Összegzésként
- A cookie-k a felhasználó számítógépére mentett kis fájlok
- A cookie-k csak a kibocsátó domainről olvashatók
- A sütiknek lehet lejárati ideje, ha nincs beállítva, akkor a cookie a böngésző bezárásakor jár le.
- A munkamenetek olyanok, mint a szerveren tárolt globális változók
- Minden munkamenet egyedi azonosító azonosítót kap, amely a felhasználó változóinak nyomon követésére szolgál.
- A cookie-kat és a munkameneteket is el kell indítani, mielőtt a HTML-címkéket elküldené a böngészőnek.