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.

Mi az a Cookie

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íg www.sub.cookiedomain.com korlátozza a cookie-k elérését www.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

A Cookie érték lekérése

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

A Cookie érték lekérése

  • 3. lépés – Váltson vissza az első lapra, majd kattintson a frissítés gombra

A Cookie érték lekérése

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.