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.