Práce se session v rubrice PHP
Nevíte jak předávat hodnotu nějaké proměnné na další stránku? Vše
hravě vyřeší tzv. sessions proměnné. Dnes si tento pojem vysvětlíme a
naučíme se jej používat.
Úvod do session proměnných
Často potřebujeme přenášet hodnoty mezi několika skripty.
Tato činnost muže být řešena pomocí formulářů a skrytých polí (<input type="Hidden" name="nějaká_proměnná" value="nějaka
hodnota">) nebo pomocí session. Manipulace se session není nijak
náročná a hravě ji zvládnete. Pro lepší pochopení problematiky session 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. Jednoduše řečeno, pro každý prohlížeč
nová session :o).
Jak vytvořit session
Pro práci se session musíte mít dobře nastavené PHP
(php.ini). To znamená:
session.save_path = /tmp - musí být
zvolen exitující adresář s právy zápisu (pokud využíváte hosting u
poskytovatelů, nemusíte se bát - vše je správně
nastaveno). session.name = PHPSESSID - jméno session - používá
se jako jméno cookie. session.use_cookies = 1 - Dosadíme hodnotu
1, pokud chceme používat k přenášení session id cookies, 0 pokud ne.
session.auto_start = 0 - inicializovat session při
požadavku. session.cookie_lifetime = 0 - životnost cookies v
sekundách. 0 pro dobu, dokud není prohlížeč zavřen
(restartován). session.cookie_path = / - cesta, pro kterou je
cookie platná. session.cookie_domain = - doména, pro kterou je
cookie platná - prázdné pro všechny. url_rewriter.tags -
specifikuje tagy, pro které bude hodnota session id
vpisována.
Nyní již k věci... 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 po té Vá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é"). V tomto okamžiku nám
vznikne zvolená session proměnná. Do této proměnné je potřeba dosadit
nějakou hodnotu. Dosazování je úplně normální:
$název_proměnné = "nějaká
hodnota";
V normálním režimu je session indentifikátor
přenášen jako cookie. Může však nastat problém v případě, že uživatel má
ve svém prohlížeči cookies vypnuté. Jak jsme se dozvěděli již dříve,
musíme proto přenášet session indentifikátor. Tento identifikátor zjistíme
například pomocí:
echo $PHPSESSID; echo session_id(); Oba tyto způsoby by měly
zobrazit textový řetězec podobný tomuto: h0d913f2e367783aafbf2ab590ab853e.
Přenášení toho identifikátoru mezi skripty může být různé
například: <a href="neco.php?<? echo $PHPSESSID;?>">Pokračovat</a>
nebo také:
<form action="neco.php?<? echo $PHPSESSID;?>">
Jak zničit session
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().
Nakonec si ukážeme příklad pro práci se session:
Soubor
skript.php
<?
session_start();
?>
<html>
<head>
<title>Úkázkový skript</title>
</head>
<body>
<?
/* Zaregistruju si proměnné pocet_navstev a login. */
session_register("pocet_navstev");
session_register("login");
/* Dosadím hodnoty do proměnných. */
$pocet_navstev = 255;
$login = "peta";
?>
<a href="skript2.php?<?echo $PHPSESSID;?>">Pokračovat</a>
</body>
</html>
|
Soubor skript2.php
<?
session_start();
?>
<html>
<head>
<title>Úkázkový skript</title>
</head>
<body>
<?
/* Zobrazím obsah proměnných. */
echo "Jmenuješ se $login a máš $pocet_navstev návštěv !";
/* Odstraním session. */
session_destroy();
?>
</body>
</html>
| Tento příklad je pouze ukázkový a je
velice jednoduchý. Pomocí session můžete vytvářet rozlehlé projekty.
Přehled funkcí pro práci se session
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
To by bylo o session snad vše. S jakýmkoliv dotazem se obracejte
do diskusního fóra.
Autor: Petr Rympler
e-mail: http://casopis.programator.cz/index.php?autor=peta@webguru.cz
web: tests.web3.cz
|
Poslední ze stejné rubriky |
|