Sesiuni PHP
1. Despre sesiuni
Sesiunile sunt folosite pentru a transporta date de la o pagina la alta fara a fi nevoie de o baza de date sau salvare in cookie care poate fi putin mai periculoasa(doar putin). Cu toate acestea sesiunile nu sunt mai sigure ca cookie-urile deoarece unele servere nu sunt securizate destul de bine si ceilalti cu care impartiti serverul va pot vedea id-ul sesiunilor. (Inca nu am intalnit host-uri unde se si poate citii sesiunea, dar nu excludem ca exista). Pentru securizarea sesiunilor putem folosii un hash cum am folosit la cookie-uri, dar eu nu recomand folosirea sesiunilor prea mult, doar pentru putine informatii.Sesiunile se salveaza intr-un fisier pe serverul vostru spre deosebire de cookieuri care se salveaza pe PC-ul utilizatorului. Utilizatorul care detine sesiunea este recunoscut cu ajutorul session_id-ului salvat in cookie-ul cu numele PHPSESSID , avantajul sesiunilor este ca vizitatorul nu poate modifica continutul sesiunii deoarece continutul este salvat intr-un fisier pe de pe server dar poate sterge sesiunea sau modifica session_id.
Furtul de sesiuni este foarte rar intalnit, dar in cazul serverelor slab securizate sau in caz ca aveti sesiunile salvate intr-o baza de date atunci este foarte posibil sa patiti asa ceva. Contrar a ce cred unii adminul site-ului poate sterge sesiunea userului , despre asta vom vorbii intr-un tutorial separat.
Eu unul nu recomand folosirea sesiunilor pentru sesiunile utilizatorilor, cu putina imaginatie se poate face cu cookie cum au si siteurile importante. Dar decizia mea nu se bazeaza ca siteurile mari au sistemul de sesiuni pe baza de cookie ci pe libertatea cu care se poate lucra cu cookieuri. Nici pentru sisteme de vot nu recomand folosirea sesiunilor, vizitatorul poate sterge cookie-ul PHPSESSID si astfel scapa de sesiune.
Sesiunea este pastrata pana utilizatorul inchide browserul, deci nu se poate salva informatie pe termen lung. Pentru asta recomand o baza de date sau chiar fisiere create de voi imitand sesiunile.
2. Lucrul cu sesiuni
Incepem lucrul cu sesiuni cu ajutorul functiei session_start(), in caz ca nu folosim ob_start() este necesar ca session_start() sa se afle in primele linii din fisier ca nu s-a trimis nici macar un caracter la browser.Cand dorim sa salvam date cu ajutorul sesiunii trebuie sa adaugam asta la array-ul $_SESSION. Iar pentru afisarea unei valori din sesiune pur si simplu afisam ce vrem din respectivul array.
Creati fisierul sesiune.php si adaugati asta in el:
<?php session_start(); $_SESSION['limbaj'] = 'PHP'; $_SESSION['calitate'] = 'super buna'; echo '<pre>'.print_r($_SESSION,true).'</pre>'; ?>O sa va arate ceva asemnator cu:
Acum creati fisierul sesiune2.php si adaugati asta in el:
<?php session_start(); if( isset($_SESSION['limbaj']) ){ // folosim $_SESSION[index] pentru a afla valoarea unei variabile din sesiune echo "Limbajul <b>{$_SESSION['limbaj']}</b> are calitatea <b>{$_SESSION['calitate']}</b>! "; } else{ echo 'Trebuie sa vizitezi inainte sesiune.php!'; } ?>Output:
O sesiune se sterge cu functia session_destroy()
Acum hai sa testezi mai pe pielea ta sesiunile.
Viziteaza pagina sesiuni1.php iar apoi pagina sesiuni2.php apoi pagina sesiuni3.php
Codul pentru sesiuni1.php:
<?php session_start(); if(isset($_GET['nume'])){ $_GET['nume'] = htmlspecialchars($_GET['nume'], ENT_QUOTES); $_SESSION['nume'] = $_GET['nume']; $_SESSION['time'] = time(); echo "Numele <b>{$_GET['nume']}</b> a fost salvat cu success in sesiune cu index-ul <b>nume</b>!<br/>"; echo 'Acum poti vizita pagina <a href="sesiuni2.php">sesiuni2.php</a>!'; } else{ echo '<form>'; echo '<input type="text" name="nume" placeholder="Cum te cheama"/>'; echo '<input type="submit" value="Salveaza in sesiune!"/>'; echo '</form>'; } ?>Codul pentru sesiuni2.php:
<?php session_start(); if(isset($_SESSION['nume'])){ echo "Bine ai revenit {$_SESSION['nume']} , ne-ai vizitat ultima data la <b>".date('d-m-Y H:i', $_SESSION['time'])."</b>"; } else{ echo 'Trebuie sa vizitezi inainte <a href="sesiuni1.php">sesiuni1.php</a>!'; } ?>Codul pentru sesiuni3.php
<?php session_destroy(); echo 'Sesiunea a fost stearsa cu success! Acum viziteaza pagina <a href="sesiuni2.php"></a>'; ?>
Daca doriti sa stergeti o variabila din sesiune folositi unset() ca la variabilele simple, exemplu mod de folosire:
<?php session_start(); unset($_SESSION['nume']); ?>
3. Functii utile pentru lucrul cu sesiuni
- session_id ([ string $id ] )
- session_save_path( [string path])
- Securizare - Fisierele vor fi salvate in folderul tau
- Poti sterge foarte usor sesiunea altui user tu ca admin
Cu el modificati sau aflati id-ul sesiuni curente. Retineti insa ca si utilizatorul isi poate seta id-ul modificand continutul cookie-ului PHPSESSID. Exemplu folosire:
Poate una din cele mai folositoare functii, cu ea puteti modifica sau afla locatia unde se salveaza sesiunile. Are utilizari ca
Tags: Curs Php, Tutoriale, Programare Web, Php
Comments
Nota
0
din
0
Sharpe
Frumos, aproape la fel de bun ca python. Aproape...