PHP sesiune de instruire

Una dintre caracteristicile protocolul HTTP este „nici o amintire“. Acest lucru înseamnă că serverul „uită“ la utilizator, imediat după încheierea HTTP-sesiune (pagina de descărcare). Chiar dacă doar pentru a actualiza pagina încărcată anterior - serverul va presupune că noul utilizator a adresat el.

Pentru un site web static este destul de mult, pentru că conținutul paginilor nu sa schimbat și este afișat pentru toți utilizatorii este zhe.A aici pentru site-uri dinamice situația este mult mai rău - acolo server trebuie sa într-un fel foarte diferite unele de altele și să dea fiecare dintre ele datele solicitate.

PHP oferă o soluție bazată pe sesiuni. Sesiunea - un set de parametri și valori care identifică în mod unic utilizatorului. Fiecare sesiune are propriul identificator unic, astfel încât utilizatorul este suficient pentru a informa serverul de identificatorul de sesiune și serverul „își amintește“ toate detaliile și istoricul de interogări de utilizator.

În funcție de setările de sesiune PHP pot fi create manual sau automat atunci când primul utilizator accesează. În majoritatea furnizorilor de a crea automat sesiuni nu este activat din motive de securitate și performanță.

Pentru a crea o nouă sesiune, trebuie să apelați session_start () funcția fără parametri, apoi disponibile matrice $ _SESSION și cookie-urile la nivel mondial în browser-ul utilizatorului va PHPSESSID elementul.

Sesiunea este inițiată o dată, toate apelurile repetate session_start () conduc numai pentru a preveni apariția de „sesiune este deja deschisă, re-deschidere nu este permisă.“. Pentru a verifica, funcția funcția session_id specială () session_start () există dacă deja datorate. Această funcție returnează întotdeauna un șir cu ID-ul de sesiune, dar, în cazul în care sesiunea nu există încă - șir de caractere va fi goală.

Aceasta tehnica este foarte util atunci când script-ul se conectează alte script-uri, care pot fi provocate și de session_start ().

Pentru a se asigura că datele sunt stocate pe server atunci când navigarea între pagini, suficient pentru a le pune în globale matrice $ _SESSION. De exemplu:

Uneori, există situații când este necesar pentru a regenera identificatorul de sesiune. Pentru această funcție scop session_regenerate_id (). Pentru că trebuie să fie după ședința de deschidere:

Tehnica sunt afișate uneori folosite pentru a proteja site-ul de atac, atacatorul este de a înlocui ID-ul de sesiune la ID-ul de utilizator cu privilegii superioare. Pick up identitatea altcuiva este aproape imposibil, dar să știe (asculta un sniffer de rețea sau folosind troieni) - este posibil.

Sesiunea a elementelor poate fi nu numai tipuri simple, dar și matrice:

Sesiunea poate fi închisă sau distruse. Închiderea sesiunii are loc atunci când apelați session_write_close () funcția. În acest caz, toate modificările efectuate într-o sesiune sunt stocate în memoria cache pe disc. Dacă trebuie să închideți sesiunea și să ștergeți toate datele sale - trebuie să apelați session_destroy () sau session_unset (). Diferența dintre ele este că session_unset () poate fi utilizat în vechiul cod nu este disponibil în cazul în care la nivel mondial matrice $ _SESSION.

După cum puteți vedea, de lucru cu sesiuni este destul de simplu. Doar nu uitați că cantitatea de date stocate în sesiune, după toate finit și nu este necesar pentru a stoca excesul.