Session

Stefanescu Mihai 2 years ago 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>

 

Programator de ~8 ani, am lucrat la proiecte din mai multe industrstrii, de la eCommerce la telecomunicatii la automatizari. In acest timp am folosi diferite tehnologii, de la PHP, MySQL, PostgreSql, RabbitMq, Redis, Memcached si altele.


Get in touch
Pentru nelamuriri, dubii, comentarii si chestii de pe suflet ne putem auzi pe Discord, Reddit sau poti deschide o discutie noua pe forum

Club-ul este dedicat membrilor si ofera access la mai multe zone ale website-ului.
Login Register

🔖 Bookmarks
âœĻ Pentru a sustine aceasta comunitate am sa te rog sa te autentifici sau sa te inregistrezi!

🌊ïļ Discord
Back to top
Folosim cookie-uri pentru a oferi functionalitatile critice ale aplicatiei Invata-Programare. Folosim cookie-uri si pentru a analiza traficul, pentru care e nevoie de consimtamantul dvs. explicit.