Menu

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

Eu am enumerat doar cele mai importante functii ale sesiunilor, lista completa o puteti gasii aici

Ti-a placut articolul? Asigura-te ca-ti dam de veste cand publicam altele noi.


Tags: Curs Php, Tutoriale, Programare Web, Php

Comments Nota 0 din 0
Sharpe
Frumos, aproape la fel de bun ca python. Aproape...