ProgramatorCZ  |   Diskusní fórum  |   ASMDprojekt  |   Vtipy  |   JavaScript
Spolupracujeme:   WebGuru  |   Komplikátor  |   MinaSite Přidat k oblíbeným položkám  |   Nastavit jako výchozí stránku
Časopis
Hlavní stránka
Assembler
C,C++
Delphi
DOTNET
Flash
HTML
JavaScript
Knihy
O Internetu
Pascal
PHP
Pro. programátor
Programy
Python
Tiskové zprávy

Projekty

JScript Planet
ProProjekty

Služby

Monitoring

Informace
Redakce
O časopisu
Odkazy
Nový redaktor


ISSN 1213-7359

Šéfredaktor:
Jan Sova

Zástupci šéfredaktora
Frerenzy Dawid
Krásenský David

Šéfredaktoři rubrik
Michal Chalupník
Formánek Jiří
Pavel Aleš
Sojka Zdeněk
Petr Rympler

Administrátor
Jan Sova

Naše ikonka
MinaSite
Komplikátorovy Stránky
TOPlist
GALACTICA

Časopis používá redakční systém Sova-Press.



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

Příspěvky ke článku

Ke článku nejsou komentáře
Přidat komentář

Poslední ze stejné rubriky

Dnes má svátek... v PHP
Počítadlo stažení souborů.
Online počet čtenářů
Grafické počítadlo návštěv v PHP
Anketa s vyhodnocením

Funkce ke článku
Přidat komentář

Nejnovější články
DirectX (7.) [2]
Kurz C/C++ (19.) [70]
DirectX (6.) [152]
Kurz C/C++ (18.) [136]
Kurz C/C++ (17.) [156]


O článku
Datum: 11.02.2002
Rubrika: PHP
Čtenářů: 725
Autor: Petr Rympler

Hodnocení článku:
Znamka: 2.16
Počet známek: 45
[1] [2] [3] [4] [5]

 


(c) Systém Jan Sova, Design David Krásenský a Jan Sova
Se svými dotazy či problémy se obracejte na diskusní fórum.
Časopis je součástí projektu Programator