Session

postat acum 2 ani de Stefanescu Mihai in categorie PHP

Alta metoda de a face datele accesibile pe mai multe paginile unui website este folosirea de Sessions.

Session creaza un fisier temporar pe server unde sunt inregistrate variabilele (avem din nou perechi nume-valoare) sesiunii. Aceste date sunt valabile pe toate paginile site-ului doar in timpul unei vizite.

Locatia acestui fisier temporar este determinata de php.ini in setarea numite session.save_path. Inainte de a seta session asiguirati-va ca aceasta optiune este setata.Cand o sesiune este deschisa se intampla urmatoarele:

  • PHP creaza un numar de identificare unic pentru fiecare sesiune care este de fapt un string hexazecimal de 32 de caractere (ex: 3c7foj34c3jj973hjkop2fc937e3445).Un cookie numit PHPSESSID ce contine acel sir de caractere de 32 de caractere este salvat pe calculatorul utilizatoruluiUn fisier este creat automat pe server in care este salvat id-ul unic (cel de 32 de caractere).

Cand un script PHP doreste informatii dintr-o variabila de sesiune, PHP-ul in mod automat preia id-ul unic din PHPSESSID si-l cauta in fisierele temporare salvate pe server pentru a-l valida.

O sesiune se termina atunci cand un utilizator inchide browserul, serverul sterge sesiunea dupa o perioada predefinita de timp (in  general 30 min).

Deschiderea unei sesiuni PHP

O sesiune PHP poate fi deschisa foarte usor cu ajutorul functiei session_start(). Aceasta functie verifica daca o sesiune a fost deschisa deja si daca nu a fost deschide una. Este recomandat sa apelati aceasta functie la inceputul paginii PHP.

Variabilele sesiunii sunt stocate intr-un array asociativ numit $_SESSION[]. Aceste sesiuni pot fi accesate pe toata durata de viata a sesiunii.

In urmatorul exemplu am sa va invat sa porniti o sesiune numita contor care se va incrementa de fiecare data cand pagina este vizitata in timp ce sesiunea este deschisa.

Putem folosi functia isset() pentru a verifica daca variabila a fost setata.

Presupunem ca avem un fisier test.php:

<?php
   session_start();
   if( isset( $_SESSION['contor'] ) )
   {
      $_SESSION['contor'] += 1;
   }
   else
   {
      $_SESSION['contor'] = 1;
   }
   $msg = "Aceasta pagina a fost vizitata de ". $_SESSION['contor']." ori";
?>
<html>
<head>
<title>Sesiunile PHP</title>
</head>
<body>
<?php  echo ( $msg ); ?>
</body>
</html>

Stegerea unei sesiuni

O sesiune PHP poate fi stearsa folosind functia session_destroy(). Aceasta functie nu necesita argumente, o simpla apelare si sesiunea este stearsa. Daca doresti sa stergi o singura variabila atunci puteti folosi functiaunset().

iata un exemplu de stergere a sesiunii cu unset:

unset($_SESSION['contor']);

Acum un exemplu cu functia session_destroy():

<?php
   session_destroy();
?>

Auto Session

Nu trebuie sa apelati functia start_session() de fiecare data cand un vizitator intra pe site, puteti pur si simplu sa setati variabila session.auto_start din php.ini la 1.Session fara CookiePoate fi cazul ca un utilizator sa nu permita stocarea cookie-urilor pe computerul lor. In acest caz exista alta metoda de a trimite session id-ul catre browser.In mod alternativ, puteti folosi constanta SID ce ne spune daca sesiunea a fost pornita. Daca clientul nu a atrimis un session cookie valid va return un string gol, altfel va returna session_name=session_id.

<?php
   session_start();

   if (isset($_SESSION['contor'])) {
      $_SESSION['contor'] = 1;
   } else {
      $_SESSION['contor']++;
   }
?>
<p>
To continue  click following link <br />
<a  href="nextpage.php?<?php echo htmlspecialchars(SID); ?>">
</p>

 

Sunt un tanar programator din Bucuresti ce lucreaza in PHP/Mysql (MySqli/PDO), Laravel, CodeIgniter, MySQL, PostgreSQL, Wordpress, HTML5/CSS3, Sass, Photoshop si multe altele.
Google+ Community Facebook Group
Acest articol a fost mutat de pe vechea platforma.
Pentru orice eroare aparuta la mutare va rog sa ma contactati!