Header

PHP sesije

Pošalji komentar

Ocenite članak

 

Kako radite sa desktop aplikacijom? Otvorite je, unosite, menjate ili brišete podatke, potom je zatvorite. To je jedna sesija. Međutim, kod web aplikacija postoji jedan problem - web server ne zna ko ste.

Sesija je način da se sačuvaju određeni podaci o jednom korisniku aplikacije. Ti podaci se onda mogu koristiti na svim stranicama koje korisnik otvori tokom jedne sesije. Sesija traje sve dok korisnik ne zatvori web brauzer.

Za početak, napravite sledeći fajl sa imenom sesija.php:

1
<?php
2
3
print_r($_COOKIE);
4
5
?>


Pokrenite skriptu:

http://primer1:8080/sesija.php


Bez obzira koliko puta osvežavali stranicu, na ekranu će se pojaviti samo:

Array ( )


Dodajte sada još jedan red i sačuvajte izmenu.

1
<?php
2
3
session_start();
4
print_r($_COOKIE);
5
6
?>


Pozovite ponovo skriptu. U prvom prolazu, matrica $_COOKIE će opet biti prazna, ali nakon osvežavanja stranice, pojaviće se sledeći rezultat:

1
Array
2
(
3
[PHPSESSID] => 5ctu0flpqs2620hcadjmgbire3
4
)


Ok, dobili smo id sesije, ali mi smeta to što moram da osvežim stranicu. Kako već u prvom prolazu da dobijem id sesije, bez kolačića? Lako, pomoću session_id funkcije:

$session_id = session_id();


Sledeća skripta u osnovi radi istu stvar kao prethodni primer - pokazuje koja je razlika između session_id() i $_COOKIE.

1
<?php
2
3
/* Započni sesiju */
4
session_start();
5
6
/* id sesije mogu da pročitam bez obzira da li imam kuki */
7
$session_id = session_id();
8
9
/* Da li se podatak o sesiji nalazi u kukiju? */
10
if ($_COOKIE[PHPSESSID])
11
{
12
echo"Id sesije sam pronašao kao PHPSESSID u kukiju: " .
13
$_COOKIE[PHPSESSID] . "<br><br>";
14
echo "Vrednosti u \$_SESSION matrici definisane u prethodnom" .
15
"prolazu:<br><br>";
16
17
print_r($_SESSION);
18
}
19
/* Nemam podatak o sesiji u kukiju. Uradi inicijalizaciju. */
20
else
21
{
22
$_SESSION['id'] = $session_id;
23
$_SESSION['server_name'] = $_SERVER[SERVER_NAME];
24
$_SESSION['server_addr'] = $_SERVER[SERVER_ADDR];
25
$_SESSION['server_port'] = $_SERVER[SERVER_PORT];
26
$_SESSION['remote_addr'] = $_SERVER[REMOTE_ADDR];
27
echo"Ovo je prva poseta stranici. Nemam podatke o kukiju " .
28
"(matrica \$_COOKIE je prazna), ali imam id sesije: " .
29
$session_id . "<br><br>";
30
echo "U ovom prolazu sam dodao neke vrednosti matrici " .
31
"$_SESSION, koje će ostati sačuvane prilikom ponovnog " .
32
"poziva stranice.<br><br>';
33
echo '<a href="./">Kliknite za refresh stranice</a>';
34
}
35
36
?>