Un exemplu de lucru cu sesiuni în php. Sesiuni în PHP

Sesiunile în PHP sau ca date despre un utilizator sau client care vizitează un site sunt salvate la deplasarea între paginile unui site fără prea multe dificultăți. Lecția este foarte importantă. Relevant pentru crearea a 95% din site-uri web.

Ce este o sesiune în php

Sesiunile sunt folosite pentru a stoca date temporare (de exemplu, că un utilizator a vizitat un site) atunci când navighează între paginile aceluiași site. Când utilizați sesiuni, datele sunt stocate în fișiere temporare pe server.
Cel mai adesea, sesiunile (și cookie-urile, de asemenea) sunt folosite atunci când se creează magazine online, forumuri, forumuri, rețele sociale, bloguri și alte resurse. Comoditatea sistemului de sesiune este de a stoca informații temporare ale utilizatorului/clientului conectat, date despre care sunt rapid accesibile pentru o anumită perioadă de timp. Sesiunea are o dată naturală de expirare - până când browserul este închis. Dacă închideți doar pagina, atunci când deschideți site-ul, datele despre utilizator/client vor fi în continuare disponibile.

Logica de sesiune

Sesiunea (sau sesiune) este un fel de stocare temporară a datelor. Vă avertizez imediat că salvarea unei cantități mici de date merită. De exemplu, autentificarea și parola utilizatorului vizitator sau numărul de serie al acestuia din baza de date.

Exemplu de lucru
1. Utilizatorul își introduce login-ul și parola și intră pe site
2. Datele cu autentificare și parolă sunt salvate într-o sesiune a uneia dintre paginile site-ului:

Fişier index.php

Session_start(); // fiecare fișier în care doriți să utilizați datele de sesiune trebuie să conțină o comandă „start session” la începutul codului

$login = "admin";
$parolă = „trece”;
$_SESSION["login"] = $login; // salvează o variabilă care conține autentificare
$_SESSION["parolă"] = $parolă; // salvează o variabilă care conține parola

3. Când accesați o altă pagină a site-ului, aceste date vor fi și ele disponibile:

Fişier exemplu.php(sau orice alta pagina)

Echo "Autentificarea dvs. ".$_SESSION["conectare"]; // va afișa „Autentificarea dumneavoastră este admin”, deși nu am înregistrat date pe această pagină!
Vezi, e simplu!

4. Dacă doriți să ștergeți datele sesiunii, atunci tot ce trebuie să faceți este:

Fişier exemplu.php

Session_start(); // „începe sesiunea” din nou

Unset($_SESSION["login"]); // așa a fost neînregistrată sau „distrusă” variabila
echo "Autentificarea dvs. ".$_SESSION["conectare"]; // va afișa „Autentificarea dvs.”. De când l-am distrus în ultima linie, nu există date

Session_destroy(); // distrug sesiunea. Toate datele, inclusiv $_SESSION[„parola”] nu mai sunt acolo. La solicitarea acestora, va fi afișată o eroare
În general, un astfel de transfer este similar cu metoda POST, dar nu mai trebuie să scrieți mult cod inutil și toate datele transferate de la o pagină la alta sunt stocate în fișiere temporare pe server. Repet, sesiunile ar trebui să conțină cantități mici de date, așa că sunt potrivite pentru stocarea login/parolă, coș de cumpărături și alte volume mici.

Transmiterea unei valori sau a unei matrice folosind o sesiune PHP

Puteți scrie nu numai un șir, ci și o matrice de date într-o sesiune. Doar nu exagerați cu volumul matricei, deoarece toate acestea vor afecta viteza și spațiul ocupat pe server.

Folosim din nou o anumită pagină de pornire index.php

Session_start();

$r = matrice(„unu”, „două”, „trei”);

$_SESSION["arr"] = $r;

La pagina unde va fi afișat totul
Am salvat datele în sesiune și urmăm linkul către o altă pagină, unde vom afișa toate datele.

Fișier destinație, pagina test.php unde deschidem matricea

Session_start();
print_r($_SESSION["arr"]);
// se va imprima
/*
Matrice
=> unul
=> doi
=> trei
*/
?>
Poate doriți să perfecționați lecția de pe . În general, totul ar trebui să fie clar.

Alte funcții pentru lucrul cu sesiuni

session_unregister(șir)- sesiunea uită valoarea variabilei globale specificate;
session_destroy()- sesiunea este distrusă (de exemplu, dacă utilizatorul a părăsit sistemul făcând clic pe butonul de ieșire);
session_set_cookie_params(int lifetime [, string path [, string domain]])- folosind această funcție puteți seta cât va dura o sesiune prin setarea unix_timestamp care determină momentul morții sesiunii.

Lista de funcții pentru lucrul cu sesiuni în php
session_cache_expire - returnează expirarea memoriei cache curente
session_cache_limiter - Obține și/sau setează limitatorul curent de cache
session_commit este un alias pentru session_write_close()
session_decode - decodifică datele sesiunii dintr-un șir
session_destroy - distruge toate datele înregistrate pentru sesiune
session_encode - criptează datele sesiunii curente ca șir
session_get_cookie_params - primește parametrii cookie-urilor de sesiune
session_id - obține și/sau setează ID-ul sesiunii curente
session_is_registered - determină dacă variabila este înregistrată în sesiune
session_module_name - obține și/sau setează modulul sesiunii curente
session_name - obține și/sau setează numele sesiunii curente
session_regenerate_id - modifică ID-ul sesiunii curente cu unul nou generat
session_register - înregistrează una sau mai multe variabile pentru sesiunea curentă
session_save_path - obține și/sau setează calea pentru salvarea sesiunii curente
session_set_cookie_params - setează parametrii cookie-urilor de sesiune
session_set_save_handler - setează funcțiile de stocare a sesiunii la nivel de utilizator
session_start - inițializează datele sesiunii
session_unregister - anulează înregistrarea unei variabile din sesiunea curentă
session_unset - eliberează toate variabilele de sesiune
session_write_close - scrie datele sesiunii și sfârșitul sesiunii

Exemple de lucru în sesiune

Contor de vizualizări de pagină în timpul unei sesiuni. Un exemplu clar de muncă. Cu toate acestea, după închiderea browserului, numărătoarea inversă va începe din nou.

Contor de vizite la o pagină într-o sesiune

// Un exemplu simplu de utilizare a sesiunilor fără module cookie.
nume_sesiune("test");
sesiune_start();
$_SESSION[„număr”] = @$_SESSION[„număr”] + 1;
?>

Tejghea


Ați deschis această pagină în sesiunea curentă de browser
timp(e).
Închideți browserul pentru a reseta acest contor.
Click aici pentru a actualiza pagina!
Cu fiecare tranziție, contorul va crește cu 1)

Vă mulțumim pentru atenție! Mult succes in demersurile tale!

Sesiunile în PHP sunt un mecanism pentru stocarea informațiilor despre computerul clientului pe partea serverului. De fapt, sesiunile în PHP nu sunt un subiect atât de complex, dar pentru a-l înțelege trebuie să știi cum funcționează cookie-urile în PHP. Deci, dacă nu știți cum funcționează cookie-urile în PHP, atunci citiți mai întâi articolul relevant și apoi reveniți aici.

Cuvântul sesiune este tradus din engleză ca sesiune, astfel încât însuși sensul sesiunilor în PHP devine mai clar, dar programatorii au adoptat termenul „sesiuni” și îl vom folosi în acest articol.

Sesiunile în PHP sunt foarte asemănătoare cu mecanismul cookie, aceeași cheie => perechi valori, doar că sunt stocate pe partea de server.

funcția session_start().

Trebuie să începem sesiunea, pentru aceasta există funcția session_start(). Această funcție pornește o sesiune sau o sesiune, oricum doriți să o numiți.

Este recomandabil să apelați funcția session_start() chiar la începutul paginii, dar în exemplele mele nu fac acest lucru.

matrice $_SESSION

Sesiunile sunt grupuri de variabile care sunt stocate pe server, dar se referă la un singur vizitator. Din nou, acesta este punctul cheie: sesiunile sunt stocate pe server.

Pentru a vă asigura că fiecare vizitator interacționează cu datele sale din sesiunea sa, se folosește un cookie, comanda pentru a crea pe care PHP și-o oferă, nu trebuie să vă faceți griji. Acest cookie este relevant doar pentru server și nu poate fi utilizat pentru a obține date despre utilizator.

Pe server, datele sesiunii sunt stocate într-un fișier text și sunt disponibile în programul PHP în matricea $_SESSION. Pentru a salva o variabilă într-o sesiune, trebuie să îi atribuiți o valoare în această matrice.

Să începem în sfârșit să folosim exemple. Totul este foarte simplu.

Sesiuni în PHP sens.”; ?>

Acum să încercăm să obținem valoarea din matricea $_SESSION într-un alt exemplu.

Sesiuni în PHP

Vă rugăm să rețineți că dacă în al doilea exemplu eliminăm funcția session_start() atunci nu vom avea acces la datele din matricea $_SESSION.

funcția session_id().

Odată ce o sesiune este creată, aveți automat acces la identificatorul unic al sesiunii folosind funcția session_id(). Această funcție vă permite să setați și să obțineți valoarea ID-ului sesiunii.

Sesiuni în PHP

Puteți căuta în bara de instrumente pentru dezvoltatori a browserului dvs. (în Chrome, apăsați Ctrl + Shift + I, apoi Resurse, și veți găsi acolo un cookie), acest domeniu a setat un cookie pentru browserul dvs. cu numele PHPSESSID și aproximativ următorul valoare: „7g5df9rkd1hhvr33lq1k6c72p7”.

Prin valoarea PHPSESSID serverul va determina browserul și va lucra cu setul corespunzător de variabile care vor fi disponibile pentru script prin intermediul matricei $_SESSION, așa cum a fost scris anterior.

funcția session_name().

În timp ce funcția session_id() vă permite să obțineți valoarea ID-ului sesiunii, funcția session_name() vă permite să obțineți numele sesiunii.

Sesiuni în PHP

Încă o dată despre funcția session_start().

Acum știm mai multe despre cum funcționează sesiunile în PHP și trebuie să revenim încă o dată la funcția session_start(). Această funcție inițializează mecanismul de sesiune pentru utilizatorul curent. Cum se întâmplă exact acest lucru:

  • Dacă utilizatorul a lansat site-ul pentru prima dată, session_start() setează un cookie pe client și creează stocare temporară pe server asociată cu ID-ul utilizatorului.
  • Specifică magazinul asociat cu ID-ul curent transmis.
  • Dacă există date în stocarea de pe server, acestea sunt plasate în matricea $_SESSION.
  • Dacă register_globals din fișierul php.ini este On, atunci toate elementele matricei $_SESSION sunt transformate în variabile globale.

Exemplu de utilizare a sesiunii

Acum ne vom uita la un exemplu care ne va permite să realizăm mici experimente cu sesiuni.

Sesiuni în PHP

Tejghea

Ați deschis o pagină în sesiunea curentăo singura data.

Deschideți exemplul din „>această filă.

Toate lucrările sesiunii se bazează pe matricea $_SESSION, acest lucru este clar vizibil în acest exemplu.

Dacă închideți fereastra browserului, sesiunea se va încheia și contorul nostru va fi resetat la zero. Acest comportament al sesiunilor în PHP poate fi modificat, vom reveni la această problemă puțin mai târziu în articol.

Încheierea unei sesiuni

Pentru a încheia sesiunea avem nevoie de:

  1. Ștergeți matricea $_SESSION.
  2. Ștergeți spațiul de stocare temporar de pe server.
  3. Ștergeți cookie-urile de sesiune.

Puteți șterge matricea $_SESSION folosind funcția session_unset().

Funcția session_destroy() șterge stocarea temporară de pe server. Apropo, ea nu face altceva.

Trebuie să ștergeți un cookie de sesiune folosind funcția setcookie(), pe care am învățat-o în lecția despre lucrul cu cookie-uri în PHP.

Exemplu de încheiere a unei sesiuni:

Încheierea unei sesiuni

Sesiunea s-a încheiat.

Acum puteți efectua un experiment: rulați un exemplu cu un contor într-o singură fereastră, creșteți contorul, apoi rulați exemplul cu ștergerea sesiunii și reîmprospătați pagina cu contorul din nou.

Puteți șterge un fișier cookie ca acesta:

setcookie(session_name(), "", time() - 60*60*24*32, "/")

Încă o dată despre funcțiile session_name() și session_id().

Funcțiile session_name() și session_id() sunt rareori folosite în practică, dar scriu despre ele deoarece articolul trebuie să dezvăluie însuși mecanismul modului în care funcționează sesiunile în PHP.

Folosind aceste funcții, vă puteți seta propriile nume și ID-uri de sesiune, dar acest lucru nu este recomandat. Dacă doriți să le setați, atunci scrieți aceste funcții cu argumente înaintea funcției session_start(), ca în exemplul de mai jos:

Sesiuni în PHP

Folosind acest exemplu, tuturor utilizatorilor li se va atribui același ID de sesiune.

Să aruncăm o privire mai atentă aici: dacă rulați exemplul din secțiunea despre funcția session_name() (aici este linkul) în diferite browsere (de exemplu, Chrome și Internet Explorer), atunci fiecare browser va avea propriul său identificator de sesiune unic . Browserele stochează cookie-uri fiecare în propriul folder, astfel încât funcția session_start() va permite fiecărui browser să-și creeze propriul identificator unic și, în consecință, va fi creat un spațiu de stocare unic pentru fiecare browser de pe server. Prin urmare, exemplul de contra (acesta) va funcționa independent în fiecare browser.

Dacă setați același ID de sesiune pentru toți utilizatorii, atunci aceștia vor funcționa cu aceeași stocare pe server. Iată un exemplu de contor care va număra vizitele din diferite browsere:

100) ( session_unset(); session_destroy(); ) ?> Sesiuni în PHP

Ghișeul nr. 2

A deschis pagina în diferite browsereo singura data.

Deschideți exemplul din „>această filă.

Dacă rulați acest exemplu, nu este un fapt că veți vedea unul acolo. Este posibil ca alți vizitatori să fi modificat deja valorile în magazinul de sesiuni de pe server. Nu știu când serverul șterge spațiul de stocare în acest caz, așa că dacă contorul depășește 100, voi încheia sesiunea.

Setarea timpului de așteptare

În mod implicit, sesiunea „live” până când vizitatorul închide fereastra browserului. Acest lucru se datorează faptului că funcția session_start() plasează un astfel de cookie pe client.

Durata de viață a sesiunii poate fi modificată folosind funcția session_set_cookie_params(), aici este sintaxa acesteia.

session_set_cookie_params (int lifetime [, calea șirului [, domeniul șirului [, bool secure]]])

În practică, este suficient să folosiți doar primul parametru (durata de viață), aici notați timpul în secunde, care determină cât timp serverul ar trebui să-și amintească starea sesiunii după închiderea browserului.

Efectul funcției session_set_cookie_params() se aplică numai perioadei în care scriptul rulează.

Iată un exemplu de utilizare a acestei funcții:

Sesiuni în PHP

Ghișeul nr. 3

Contravaloare:.

Deschideți contorul în ">această filă.

Închideți contorul și închideți browserul, după 30 de secunde deschideți din nou acest exemplu. Sesiunea dvs. va fi salvată.

Sesiunile sunt o modalitate simplă de a stoca informații pentru utilizatorii individuali cu un identificator unic de sesiune. Aceasta poate fi folosită pentru a salva starea între solicitările de pagină. ID-urile de sesiune sunt de obicei trimise către browser prin intermediul unui cookie de sesiune și sunt folosite pentru a prelua datele de sesiune disponibile. Absența unui ID de sesiune sau a unui cookie de sesiune îi spune PHP să creeze o nouă sesiune și să genereze un nou ID de sesiune.

Sesiunile folosesc tehnologie simplă. Când este creată o sesiune, PHP fie va prelua sesiunea existentă folosind ID-ul transmis (de obicei dintr-un cookie de sesiune) sau, dacă nu a fost transmis nimic, va fi creată o nouă sesiune. PHP va popula variabila superglobală $_SESSION cu informații despre sesiune după începerea sesiunii. Când PHP iese, acesta va serializa automat conținutul variabilei superglobale $_SESSION și îl va posta pentru salvare, folosind handlerul de sesiune pentru a înregistra sesiunea.

În mod implicit, PHP folosește handlerul de fișiere intern pentru a salva sesiunile, care este setat în variabila INI session.save_handler. Acest handler salvează datele pe server în directorul specificat în directiva de configurare session.save_path.

Sesiunile pot fi pornite manual folosind funcția session_start(). Dacă directiva session.auto_start este setată la 1, sesiunea va începe automat la începutul solicitării.

Sesiunea se termină de obicei când PHP termină de executat scriptul, dar poate fi terminată și manual folosind funcția session_write_close().

Avertizare

Atenţie

cometariu:

Sesiunile care folosesc fișiere (în mod implicit în PHP) blochează fișierul de sesiune imediat când sesiunea este deschisă de funcție session_start() sau indirect prin specificarea session.auto_start . Odată blocat, niciun alt script nu poate accesa același fișier de sesiune până când acesta este închis fie când scriptul se termină, fie când este apelată o funcție session_write_close().

Este probabil ca aceasta să fie o problemă pentru site-urile care se bazează foarte mult pe AJAX și care fac mai multe solicitări simultane. Cel mai simplu mod de a rezolva această problemă este apelarea funcției session_write_close() imediat ce se fac toate modificările necesare în sesiune, de preferință mai aproape de începutul scriptului. De asemenea, puteți utiliza un alt mecanism de sesiune care acceptă accesul simultan.

7,7K

Folosind o sesiune PHP, serverul vă identifică și vă permite să efectuați operațiunile necesare: modificarea informațiilor de pe diverse pagini web, adăugarea de informații noi etc. După ce ați terminat lucrul pe site, ștergeți sesiunea curentă făcând clic pe butonul „Deconectare”:

Ce este o sesiune PHP?

O sesiune PHP este o modalitate de stocare a informațiilor în variabilele de sesiune care poate fi folosită pentru a se autentifica în mai multe pagini web. Spre deosebire de cookie-uri, informațiile despre sesiune nu sunt stocate pe computerul utilizatorului. În schimb, sesiunea creează un fișier pe server într-un director temporar.

Aceste informații, stocate pe parcursul sesiunii, sunt disponibile pentru toate paginile web ale resursei. Pe server, locația fișierului temporar este determinată de parametrul session.save_path din fișierul de configurare php.ini.

La crearea unei sesiuni PHP, se parcurg următorii trei pași:

  • Când se creează o sesiune, PHP generează un identificator unic, care este un șir aleator de 32 de numere hexazecimale. ID-ul de viață al sesiunii PHP arată cam așa: 9c8foj87c3jj973actop1re472e8774;
  • Serverul trimite un cookie numit PHPSESSID către computerul utilizatorului pentru a stoca un șir unic de identificare a sesiunii;
  • Serverul generează un fișier în directorul temporar specificat care conține numele identificatorului unic de sesiune cu prefixul sesiune_g. sess_9c8foj87c3jj973actop1re472e8774.

Aceste setări ajută scriptul PHP să recupereze valorile variabilelor de sesiune din fișier. Pe partea clientului, PHPSESSID conține identificatorul de sesiune. Acesta confirmă numele fișierului care urmează să fie căutat într-un director specific din partea serverului, din care variabilele de sesiune pot fi extrase și utilizate pentru verificare.

Utilizatorul poate încheia sesiunea făcând clic pe butonul de deconectare, care apelează funcția session_destroy(). Când utilizatorul închide browserul, sesiunea PHP se închide automat. În caz contrar, serverul va încheia sesiunea după perioada specificată.

Sintaxa sesiunii în PHP

Când PHP autorizează printr-o sesiune, aceasta este creată folosind funcția session_start() și șters folosind funcția session_destroy(). O variabilă globală PHP cunoscută sub numele de $_SESSION este utilizată pentru a seta valorile variabilelor de sesiune. Puteți reseta toate valorile setate pentru variabilele de sesiune folosind funcția session_unset().

Operațiuni de sesiune

Vom analiza următoarele operații folosind o sesiune PHP, precum și exemple ale acestora.

  • Pornirea unei sesiuni PHP și setarea variabilelor acesteia: o nouă sesiune PHP este pornită folosind funcția session_start(). Odată ce o sesiune a fost creată, variabilele acesteia pot fi setate folosind $_SESSION. Am stabilit valorile pentru variabilele „ ID-ul de utilizator” — “php_user" Și " parola” — “tutoriale”:

Sesiuni PHP - creare O sesiune PHP a fost pornită și variabilele de sesiune au fost setate!"; ?>

Rezultat: Rularea codului PHP de mai sus pe server va produce următorul mesaj:

  • Obținerea valorilor variabilelor de sesiune PHP: Este posibil să obținem valorile variabilelor pe care le-am setat în timpul ultimei sesiuni de conectare PHP. Când deschidem o sesiune PHP la începutul fiecărei pagini ( session_start()), trebuie specificat codul de mai jos. Preluăm și afișăm aceste valori folosind variabila globală $_SESSION:

Sesiune PHP - obținerea valorilor
"; echo "Parolă - " . $_SESSION["parolă"] . "."; ?>

Rezultat: Când rulăm codul PHP de mai sus pe server, vom primi următorul mesaj ca rezultat. Sunt afișate valorile variabilelor de sesiune pe care le-am setat mai devreme după crearea sesiunii PHP.

  • Actualizarea valorilor variabilelor de sesiune PHP: În timpul unei sesiuni, puteți actualiza valorile variabilelor acesteia. Mai întâi trebuie să deschidem o sesiune PHP la începutul fiecărei pagini ( session_start()). În codul de mai jos, actualizăm valorile variabilelor „ ID-ul de utilizator” — “utilizator_php_nou" Și " parola” — “educaţie”.

Puteți imprima o serie de variabile de sesiune și valorile acestora folosind funcția print_r($ _SESSION), după cum se arată mai jos:

Sesiune PHP - modificarea valorilor
"; print_r($_SESSION); ?>

Rezultat: Când rulăm codul PHP de mai sus pe server, vom primi următorul mesaj. Acesta va conține o serie de variabile de sesiune cu noile lor valori.

Sesiuni vă permit să stabiliți o conexiune între vizitator și site-ul care utilizează sesiune ID.

Variabilele de sesiune și valorile acestora sunt stocate numai pe server. Doar identificatorul de sesiune (generat aleatoriu) este stocat pe computerul utilizatorului și pe server, ceea ce ne permite să stabilim o conexiune între utilizator și server.

ID-ul sesiunii stocat pe computerul utilizatorului este un cookie.

Cookie-ul este stocat în browserul utilizatorului, iar pe server este creat și un fișier corespunzător.

Creați o sesiune

Cel mai simplu mod de a deschide o sesiune este să utilizați funcția session_start:

// initiaza o sesiune session_start();

Această funcție verifică dacă există un ID de sesiune și, dacă nu, creează unul. Dacă ID-ul sesiunii curente există deja, atunci variabilele de sesiune înregistrate sunt încărcate.

Această construcție (trebuie apelată o dată pentru fiecare pagină) trebuie apelată înainte de orice concluzie(această regulă funcționează și pentru setcookie()), inclusiv spații.

Când se creează o sesiune, următorul cookie este trimis către browser:

PHP

echo „Numele sesiunii: „.session_name(). " ID sesiune: ".session_id(); // Nume sesiune: PHPSESSID ID sesiune: mceu820l02id3ds0vcvtgnht04

Creați o variabilă de sesiune

O variabilă de sesiune este creată prin adăugarea unei valori la tabloul superglobal $_SESSION:

$_SESSION[„nick”] = $_POST[„nume”];

Distrugerea variabilelor de sesiune și a sesiunii în sine

1 . Puteți șterge o variabilă de sesiune după cum urmează:

Dezactivat($_SESSION[„nick”]);

Acest lucru va preveni reutilizarea informațiilor.

Dar este mai bine să ștergeți matricea $_SESSION (eliminați toate variabilele de sesiune):

//șterge tabloul $_SESSION $_SESSION = matrice ();

2. De asemenea, trebuie să faceți următoarele:

Setați cookie-ul de sesiune invalid:

If (isset($_COOKIE)) ( // session_name() - obține numele sesiunii curente setcookie(session_name(), "", time()-86400, "/"); )

Numele sesiunii se referă la ID-ul sesiunii din cookie-uri și URL

3. Distrugeți (încheiați) sesiunea

Session_destroy();

Buffering de ieșire

Dacă aveți deja o ieșire, puteți utiliza funcția ob_start(). Această funcție tamponează ieșirea. Acum rezultatul nu va fi trimis către browser decât dacă îl forțați folosind funcția ob_end_flush().

"; unset($_SESSION["nick"]); if (isset($_COOKIE)) ( setcookie(session_name(), "", time()-86400, "/"); // conținutul sesiunii - șir gol ) // setcookie va funcționa fără erori, deoarece tocmai acum ob_end_flush( // a trimis rezultatul către browser session_destroy();

Pe de altă parte, nu este întotdeauna necesar să folosiți funcția ob_end_flush(), deoarece interpretul PHP va șterge automat buffer-ul la executarea scriptului.

Recrearea identificatorului de sesiune

Din motive de securitate, de fiecare dată când vă conectați la sistem, trebuie să recreați ID-ul sesiunii. Informațiile din variabilele de sesiune sunt păstrate, doar identificatorul de sesiune se modifică. Nu uitați, informațiile despre sesiune sunt stocate pe serverul web ca text într-un fișier corespunzător. Pentru a regenera id-ul, apelați session_regenerate_id() și reîmprospătați pagina curentă sau redirecționați utilizatorul către o altă pagină.

Mecanismul sesiunii


Reducerea duratei de viață a sesiunii

În mod implicit, durata de viață a sesiunii este 0, ceea ce înseamnă că atunci când utilizatorul închide fereastra browserului, sesiunea este distrusă. Uneori este necesar să încheiați sesiunea unui utilizator din cauza inactivității din partea acestuia. Aceasta poate fi implementată în felul următor (să ne uităm la exemplul de autorizare): creăm o variabilă și stocăm în ea timpul de autorizare al utilizatorului dacă încercăm să reîmprospătăm pagina, comparăm timpul cu timpul de inactivitate și, dacă este depășit, deconectam utilizatorul și redirecționăm utilizatorul către pagina de autorizare.

$_SESSION["start"] = ora(); // marca temporală a autorizației utilizatorului $acum = timp(); // ora curentă $time_limit = 1000; // timpul maxim permis de inactivitate a utilizatorului în secunde. if ($now > $_SESSION["start"] + $time_limit) ( echo "Timpul dvs. a expirat"; //...... // și ștergeți sesiunea și cookie-ul acesteia) else ( $_SESSION["start " ] = timp(); ) // dacă comanda, actualizați

Cum să faci o sesiune de viață eternă?

Pentru ca clientul să rămână mereu conectat, nu este nevoie să setați durata de viață a sesiunii să fie eternă. O sesiune este o sesiune: începe când clientul sosește și se termină când clientul pleacă.

Când clientul vine din nou, trebuie să începeți o nouă sesiune, dar să încărcați în ea date despre client, pe baza unui cookie unic pentru client, care este instalat permanent pentru el atunci când selectează o casetă de selectare, de exemplu, „ține minte ”.

Lucrul cu o sesiune când cookie-urile sunt dezactivate

Dacă setarea session.use_trans_sid este setată la 1, atunci când cookie-urile sunt dezactivate, PHP va transmite PHPSESSID folosind metoda GET în linia de solicitare.