PHP - Sesije


Šta je sesija?

Iako podatke možete pohraniti pomoću kolačića to ima nekih sigurnosnih problema. Budući da se kolačići pohranjuju na korisnikovom računaru, napadač može lako modifikovati sadržaj kolačića kako bi u vašu aplikaciju ubacio potencijalno štetne podatke koji bi mogli oštetiti vašu aplikaciju. Takođe svaki put kada pretraživač zatraži URL poslužitelju, svi podaci o kolačićima za web stranicu automatski se šalju serveru u okviru zahtjeva. To znači da ako ste na korisnikov sistem pohranili 5 kolačića, svaki veličine 4 KB, pretraživač treba učitati 20 KB podataka svaki put kada korisnik pregleda stranicu, što može uticati na performanse vaše web stranice.

Oba ova problema možete riješiti pomoću PHP sesije. PHP sesija pohranjuje podatke na poslužitelja, a ne na računar korisnika. U okruženju zasnovanom na sesiji, svaki se korisnik identifikuje pomoću jedinstvenog broja koji se naziva identifikator sesije ili SID. Ovaj jedinstveni ID sesije koristi se za povezivanje svakog korisnika sa vlastitim informacijama na serveru kao što su e-adrese, postovi itd.



Pokretanje PHP sesije

Prije nego što pohranite bilo kakve informacije u varijable sesije, prvo morate pokrenuti sesiju. Da započnete novu sesiju, jednostavno pozovite PHP funkciju session_start(). Stvoriće novu sesiju i generisati jedinstveni ID sesije za korisnika. PHP kod u primjeru pokazuje kako jednostavno započeti novu sesiju.

<?php
// Započni sesija
session_start();
?>

Funkcija session_start() prvo provjerava postoji li sesija traženjem prisustva ID-a sesije. Ako ga pronađe, tj. ako je sesija već započela, postavlja varijable sesije, a ako ne, započinje novu sesiju stvaranjem novog ID-a sesije.



Pohranjivanje i pristup podacima o sesiji

Sve podatke sesije možete pohraniti kao parove ključ / vrijednost u superglobalni niz $_SESSION[]. Pohranjenim podacima se može pristupiti tokom trajanja sesije. Pogledajmo sljedeću skriptu koja kreira novu sesiju i registruje dvije varijable sesije.

<?php
// Započni sesija
session_start();
 
// Pohranjivanje podataka o sesiji
$_SESSION["firstname"] = "Milos";
$_SESSION["lastname"] = "Mihaljica";
?>

Da biste pristupili podacima sesije koje smo postavili u našem prethodnom primjeru s bilo koje druge stranice na istoj web domeni - jednostavno ponovno stvorite sesiju pozivanjem session_start(), a zatim proslijedite odgovarajući ključ asocijativnom nizu $_SESSION.

<?php
// Započni sesija
session_start();
 
// Pristup podacima sesije
echo 'Pozdrav, ' . $_SESSION["firstname"] . ' ' . $_SESSION["lastname"];
?>

PHP kod u gornjem primjeru daje sljedeći izlaz.


Pozdrav, Milos Mihaljica




Uništavanje sesije

Ako želite ukloniti određene podatke sesije, jednostavno poništite odgovarajući ključ asocijativnog niza $_SESSION, kao što je prikazano u sljedećem primjeru:

<?php
// Započni sesija
session_start();
 
// Uklanjanje podataka o sesiji
if(isset($_SESSION["lastname"])){
    unset($_SESSION["lastname"]);
}
?>

Međutim, da biste potpuno uništili sesiju, jednostavno pozovite funkciju session_destroy(). Ovoj funkciji nije potreban nikakav argument, a jedan poziv uništava sve podatke sesije.

<?php
// Započni sesija
session_start();
 
// Uništavajuća sesija
session_destroy();
?>

Svaka PHP sesija ima vrijednost vremenskog ograničenja - trajanje mjereno u sekundama - koja određuje koliko dugo sesija treba ostati živa u odsustvu bilo kakve korisničke aktivnosti. Ovo trajanje vremenskog ograničenja možete prilagoditi promjenom vrijednosti varijable session.gc_maxlifetime u konfiguracijskoj PHP datoteci (php.ini).