Pomocí Cookies (koláčků :) můžeme uchovávat a následně zpracovávat různé hodnoty v rámci celého webu. Novou cookie musíme zaregistrovat před odesláním jakéhokoliv výstupu a to pomocí funkce:
setcookie( jméno [, hodnota [, expirace [, cesta [, doména [, zabezpečení]]]]])
Jako parametry můžeme dosadit (povinný parametr je pouze jméno):
Jednotlivé cookie jsou přístupné v poli $HTTP_COOKIE_VARS nebo pomocí klasické "$nazev_promenne". Hlavní nevýhodou může být, že cookies jsou přístupné až po dalším načtení stránky.
Nyní si ukážeme příklady využití cookie:
<? // Zaregistrujeme cookie "jmeno" s hodnotou "Jirka" a platností 1 minuta. setcookie("jmeno", "Jirka", time()+60); ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title>Test Cookies</title> </head> <body> <p>Cookie: <? echo $jmeno;?></p> <p>Cookie: <? echo $HTTP_COOKIE_VARS["jmeno"];?></p> </body> </html>
A další:
<? // Zaregistrujeme cookie "jmeno", hodnotou "Jirka", platností 1 hodina, adresář /test/, doména webguru.cz. // Tato cookie nebude správně fungovat, dokud nebude umístěna ve zvoleném adresáři a doméně. setcookie("jmeno", "Jirka", time()+3600, "/test/", "webguru.cz"); ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title>Test Cookies</title> </head> <body> <p>Cookie: <? echo $jmeno;?></p> <p>Cookie: <? echo $HTTP_COOKIE_VARS["jmeno"];?></p> </body> </html>
Často budeme potřebovat přenést hodnoty proměnných z jedné stránky na druhou. V tomto případě bychom mohli využít předávání hodnot proměnných pomocí POST, GET metody, skrytých polí nebo využít Cookies (obdoba sessions, které se uchovává v klientském prohlížeči). Manipulace se session není nijak náročná a hravě ji zvládnete. Pro lepší pochopení problematiky si představte session jako textový soubor. Tento soubor má v sobě uloženy zaregistrované proměnné a jejich hodnoty. Každá session je identifikovaná právě použitým WWW prohlížečem, a proto se nemůže stát, že by někdo zneužil vlastnosti této technologie.
Pro práci se session musíte mít dobře nastavené PHP (php.ini). To znamená:
Abychom mohli využívat session proměnné musíme na začátek každé stránky, kde chceme mít podporu session uvést následující funkci: session_start(). Tím zaručíme podporu session i na dané stránce. Hned poté nám (prohlížeči) bude přidělen jedinečný identifikátor tzv. session ID. Pomocí tohoto ID se přenáší session proměnné mezi skripty. Celé session proměnné by nám byly asi na nic, pokud bychom neuměli vytvořit session proměnnou a použít ji. Novou session proměnnou můžeme vytvořit pomocí funkce session_register("název_proměnné") nebo pomocí pole $_SESSIO. V tomto okamžiku nám vznikne zvolená session proměnná. Do této proměnné je potřeba dosadit nějakou hodnotu:
<? // Chceme využít session. session_start(); // Zaregistrujeme proměnnou "cislo" a dosadíme do ní hodnotu "10". $_SESSION["cislo"] = 10; ?>
Session proměnné můžeme odregistrovat pomocí funkce session_unregister("název_proměnné"). Všechny vytvořené session proměnné můžeme odstranit také pomocí funkce session_unset(). Session odstraníme pomocí funkce session_destroy(). Tyto funkce můžeme využívat tehdy, pokud je povolena direktiva (v php.ini) register_globals na hodnotu On.
Na závěr Vám ukážu několik funkcí pro práci se session.
session_start() - vytvoří session (ID)
session_register("název proměnné") - zaregistruje zvolenou session proměnnou
session_id() - zjistí aktuální session ID
session_is_registered("název_proměnné") - vrátí hodnotu TRUE, pokud je session proměnná již zaregistrovaná a FALSE v případě, že ještě není zaregistrována
session_unregister("název proměnné") - odregistruje existující session proměnnou
session_unset() - odstraní všechny session proměnné
session_destroy() - zničí session
Na závěr si ukážeme příklad využití session a session funkcí. V prvním skriptu si zaregistrujeme proměnnou "$cislo" a přiřadíme jí hodnotu "25". Ve druhém skriptu tuto proměnnou zobrazíme, zobrazíme session id a na závěr ji zničíme.
Skript index.php:
<? // "Nastartujeme" session engine :). session_start(); // Do proměnné přiřadíme hodnotu "10". $_SESSION["cislo"] = 10; ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title>Test Session</title> </head> <body> <p>Session id: <? echo session_id();?></p> <p><a href="skript.php">Další strana</a></p> </body> </html>
Skript skript.php:
<? session_start(); ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title>Untitled</title> </head> <body> <p>Session id: <? echo $PHPSESSID;?></p> <p>Hodnota proměnné: <? echo $_SESSION["cislo"]; ?></p> <? // Session zničíme: session_unregister("cislo"); session_destroy(); ?> <p>Hodnota proměnné: <? echo $_SESSION["cislo"]; ?></p> </body> </html>
Celou ukázkovou aplikaci si můžete stáhnout zde.
Pro tento díl to bude vše. V příštím díle budeme dále pokračovat v poznávání jazyka PHP.