Professional Documents
Culture Documents
PHP I MySQLPHP I MySQL Poglavlje 18 Kombib
PHP I MySQLPHP I MySQL Poglavlje 18 Kombib
Rukovanje sesijama
dana{nje vreme, kori{}enje HTTP sesija za pra}enje perzistentnih informacija, kao {to
su korisni~ka pode{avnaja, ~ak i u najjednostavnijim aplikacijama predstavlja vi{e pravilo, nego izuzetak. Zbog toga, nezavisno od toga da li ste po~etnik u razvoju web
aplikacija, ili ste iskusan veteran koji je do sada koristio neki drugi programski jezik, trebalo bi
da posvetite neko vreme pa`ljivom ~itanju ovog poglavlja.
U programskom jeziku PHP rukovanje sesijama je dostupno od verzije 4.0 i predstavlja jednu
od najinteresantijih funkcionalnosti, o kojoj se uvek mnogo diskutuje. U ovom poglavlju mo`ete
nau~iti dosta o rukovanju sesijama, izme|u ostalog:
Kako da kreirate i uni{tavate sesije, odnosno kako da upravljate promenljivama vezanim za odre|ene sesije
445
446
Kori{}enjem kola~i}a: Ovaj genijalan na~in za upravljanje informacijama o korisnicima je, zapravo, vezan za originalan metod kori{}enja kola~i}a. Kada korisnik poseti
odgovaraju}u web stranicu, server bele`i odgovaraju}e informacije o korisniku, kao {to
su pode{avanja koja je korisnik izabrao, zatim te informacije u kola~i}u {alje do korisni~kog ~ita~a, koji ih snima. Kada korisnik uputi zahtev za pristupanje nekoj drugoj
stranici, server o~itava korisni~ke informacije i koristi ih, na primer, za realizovanje
personalizovanog prikaza zahtevane stranice. Me|utim, umesto da se u kola~i}
sme{taju korisni~ka pode{avanja, sme{ta se identifikator sesije. Kako korisnik pristupa
razli~itim delovima web prezentacije, o~itava se identifikator sesije kada je to
neophodno, a zatim se koriste odgovaraju}i podaci koji su vezani za taj identifikator
sesije i korisniku se prikazuju neophodni podaci. Pored toga, po{to kola~i} ostaje na
ra~unaru korisnika i nakon zavr{etka sesije, on mo`e biti o~itan i za vreme neke
naredne sesije, {to zna~i da se odr`ava perzistentnost ~ak i u du`em vremenskom
intervalu, u kome korisnik ne pristupa odgovaraju}oj web prezentaciji. Me|utim,
vodite ra~una o tome da je prihvatanje kola~i}a isklju~ivo u nadle`nosti korisnika,
tako da morate da budete spremni i na mogu}nost da korisnik ne dozvoljava da se
podaci snimaju u kola~i} na njegovom ra~unaru, ili da je nakon nekog vremena korisnik uklonio sve kola~i}e sa svoje ma{ine.
Rukovanje sesijama
POGLAVLJE 18
Modifikovanje URL adrese: Drugi metod koji se koristi za identifikaciju sesije je vezan
za postavljanje identifikatora sesije na kraj svake lokalne URL adrese zahtevane stranice. Rezultat toga je automatsko prosle|ivanje identifikatora sesije svaki put kada
korisnik pritisne jedan od lokalnih linkova. Ovaj metod, poznat kao modifikovanje
URL adrese, uklanja mogu}nost da rukovanje sesija bude onemogu}eno zato {to korisnik ne dozvoljava upotrebu kola~i}a. Me|utim, postoje i odgovaraju}e posledice
primene ovakvog metoda. Prvo, modifikovanje URL adrese ne omogu}ava perzistentnost izme|u sesija, zato {to se proces automatskog postavljanja identifikatora sesije na
kraj URL adrese ne nastavlja kada korisnik napusti va{u web prezentaciju. Drugo, ni{ta
ne spre~ava korisnika da iskopira URL adresu u poruku i elektronskom po{tom je
po{alje nekom drugom korisniku; sve dok se ne prekine sesija, ona }e postojati i na
radnoj stanici primaoca ove poruke. Razmotrite potencijalne probleme koji mogu nastati kada oba korisnika simultano pristupaju odre|enim sadr`ajima na va{oj
prezentaciji, a da pri tome koriste isti identifikator sesije, ili ukoliko primaoc poruke
koja sadr`i link ne treba da vidi odre|ene podatke kojima se mo`e pristupati u datoj
sesiji. Zbog toga se preporu~uje metodologija u kojoj se koriste kola~i}i. Me|utim,
isklju~ivo je na vama da defini{ete sve prednosti i nedostatke oba navedena metoda, i
da na kraju odlu~ite {ta vam je ~initi.
447
Nakon utvr|ivanja identifikatora sesije, mo`ete po~eti da bele`ite informacije vezane za dati
identifikator sesije, a mo`ete i da o~itate prethodno zabele`ene podatke za taj identifikator sesije. Na primer, pretpostavimo da korisnik pregleda razli~ite novinske ~lanke na odgovaraju}oj
stranici. Identifikatori novinskih ~lanaka mogu da se pove`u sa odgovaraju}im identifikatorom
sesije, tako da mo`ete da napravite listu novinskih ~lanaka kojima je pristupio odgovaraju}i
korisnik, odnosno mo`ete da prika`ete tu listu ukoliko korisnik nastavi sa ~itanjem. U narednim
odeljcima }ete imati priliku da nau~ite kako da snimate, odnosno o~itavate odgovaraju}e
informacije vezane za konkretnu sesiju.
SAVET
Informacije o kola~i}ima mo`ete da o~itavate putem $_REQUEST superglobalne promenljive. Na primer, ukoliko je naziv sesije sid, tada }ete pomo}u $_REQUEST odrediti identifikator sesije, kao da ste koristili $_COOKIE['sid']. Me|utim, da bi bilo jasnije, razmotrite kori{}enje superglobalne promenljive koja se na najbolji
na~in uklapa sa mestom nastanka promenljive.
Ovaj proces se nastavlja sve dok korisnik ne zatvori Web ~ita~ ili ne pristupi nekoj drugoj web
prezentaciji. Ukoliko se koriste kola~i}i, tada se defini{e trajanje kola~i}a tako {to se odredi neki
datum u budu}nosti, uz pretpostavku da }e korisnik ponovo pristupiti va{oj prezentaciji pre isteka tog roka, ~ime }e sesija ostati nepromenjena, kao da korisnik nije ni napu{tao va{u web
prezentaciju. Ukoliko koristite modifikovanje URL adrese, sesija se zavr{ava onda kada korisnik
napusti stranicu, a nova sesija mora da po~ne slede}i put kada korisnik poseti stranicu. U narednim odeljcima }ete imati priliku da nau~ite ne{to vi{e o konfiguracionim direktivama i funkcijama koje su odgovorne za izvr{avanje prethodno opisanog procesa.
Konfiguracione direktive
Postoji skoro 30 konfiguracionih direktiva koje se koriste za rukovanje sesijama u programskom
jeziku PHP. Po{to mnoge od ovih direktiva igraju veoma zna~ajnu ulogu u utvr|ivanju
funkcionisanja celokupnog PHP okru`enja, trebalo bi da posvetite odre|eno vreme kako biste u
potpunosti ovladali ovim direktivama i mogu}im pode{avanjima. Najzna~ajnije direktive su
opisane u ovom odeljku.
448
Rukovanje sesijama
POGLAVLJE 18
ra~una o tome da aktivne web stranice mogu da imaju i po nekoliko hiljada datoteka sa podacima o sesijama, pa ~ak i nekoliko stotina hiljada takvih datoteka nakon odre|enog perioda
funkcionisanja.
Opcija vezana za kori{}enje privremene memorije je nabr`e re{enje za upravljanje podacima o
sesijama, ali je problem {to se za sme{tanje koristi RAM memorija. Sqlite opcija omogu}ava
kori{}enje novog SQLite pro{irenja, kako bi se informacijama o sesijama upravljalo transparentno, kori{}enjem ove baze podataka (vi{e informacija o SQLite bazi podataka mo`ete da
prona|ete u poglavlju 22). ^etvrta opcija, iako je najslo`enija za konfigurisanje, predstavlja
najfleksibilniju i najmo}niju opciju, zato {to korisni~ki definisani rukovaoci sesijama mogu da se
kreiraju tako da se informacije o sesijama sme{taju na medijumu koji defini{e programer. U
ovom poglavlju }ete imati priliku da nau~ite kako da koristite ovu opciju za sme{tanje podataka
o sesijama u odgovaraju}oj MySQL bazi podataka.
449
se kola~i}i za ~uvanje identifikatora sesije; ukoliko defini{ete vrednost 0, primenjiva}e se postupak modifikovanja URL adrese. Ova direktiva je slede}eg oblika:
session.use_cookies = 0|1
Vodite ra~una o tome da, ukoliko je omogu}ena session.use_cookies direktiva, ne postoji
potreba da eksplicitno izvr{avate funkciju za pode{avanje kola~i}a (na primer, PHP funkciju
set_cookie()), zato {to se ovo automatski defini{e pomo}u bilioteke za upravljanje sesijama.
Ukoliko izaberete da koristite kola~i}e kao metod za pra}enje korisni~kih sesija, tada morate da
uzmete u razmatranje i nekoliko drugih direktiva koje su opisane u daljem tekstu.
450
Rukovanje sesijama
POGLAVLJE 18
session.use_trans_sid = 0|1
Ne iznena|uje da, ukoliko koristite modifikovanje URL adresa, treba da omogu}ite ovu direktivu, kako biste eliminisali mogu}e ljudske gre{ke u procesu modifikovanja.
451
Ukoliko `elite da odgovaraju}a sesija bude dostupna u razli~itim poddomenima va{e web
prezentacije, recimo domenima customers. example.com, intranet.example.com i www2.example.com,
tada je neophodno da direktivu iskoristite na slede}i na~in:
452
Rukovanje sesijama
POGLAVLJE 18
izra`eno u sekundama (podrazumevana vrednost iznosi 1440 sekundi), i u toku tog vremena se
sesija smatra validnom. Prototip ove direktive je slede}eg oblika:
session.gc_maxlifetime = ceobroj
Nakon {to istekne definisani vremenski interval, uklanjaju se sve informacije vezane za sesiju,
odnosno osloba|aju svi sistemski resursi, koji se mogu dodeljivati nekoj drugoj sesiji.
Kori{}enje sesija
U ovom odeljku su opisani brojni klju~ni zadaci vezani za rukovanje sesijama, koji se realizuju
pomo}u odgovaraju}ih funkcija za upravljanje sesijama. Neki od ovih zadataka podrazumevaju
kreiranje i uklanjanje sesija, definisanje i o~itavanje identifikatora sesije, odnosno sme{tanje i
o~itavanje promenljivih vezanih za sesije. U ovom uvodu su prikazane osnove neophodne za
razumevanje narednog odeljka, u kome su navedeni neki prakti~ni primeri vezani za upravljanje
sesijama.
Kreiranje sesije
Zapamtite da je HTTP protokol bez stanja, tako da ne sadr`i nikakve informacije o prethodnim
ili budu}im pona{anjima korisnika. Zbog toga je neophodno da eksplicitno inicirate sesiju, a
zatim je nastavite kada je to neophodno. Oba zadatka se realizuju pomo}u session_start() funkcije. Prototip ove funkcije je slede}eg oblika:
boolean session_start()
Izvr{avanjem session_start() funkcije kreira}e se nova sesija ukoliko nije definisan nijedan
identifikator sesije, ili }e se nastaviti prethodno zapo~eta sesija ukoliko postoji odgovaraju}i identifikator sesije. Ovu funkciju koristite veoma jednostavno, tako {to }ete je izvr{iti na slede}i na~in:
session_start();
Uo~ite da session_start() funkcija izve{tava o uspe{nom ishodu, nezavisno od rezultata. Zbog
toga je u ovoj situaciji dobro re{enje da koristite neki metod za rukovanje izuzecima.
453
Uklanjanje sesije
Iako mo`ete da konfiguri{ete PHP direktive za rukovanje sesijama, kako bi se automatski uklonila sesija nakon isteka unapred definisanog vremena za trajanje sesije ili na osnovu verovatno}e,
ponekad je mnogo korisnije da ru~no uklonite sesiju. Na primer, mo`da `elite da omogu}ite da
korisnik samostalno napusti stranicu tako {to se izloguje. Kada korisnik pritisne odgovaraju}i
link, vi mo`ete da uklonite iz memorije sve promenljive koje su vezane za tu sesiju, pa ~ak i da u
potpunosti uklonite podatke o sesiji sa odgovaraju}eg memorijskog medijuma, {to se realizuje
pomo}u funkcija session_unset() i session_destroy(), respektivno.
session_unset() funkcija se koristi za uklanjanje svih promenljivih vezanih za trenutnu sesiju,
pri ~emu se efektivno vra}a stanje sesije, koje je bilo nakon njenog kreiranja (nisu registrovane
promenljive vezane za sesiju). Prototip ove funkcije je slede}eg oblika:
void session_unset()
Iako se izvr{avanjem session_unset() funkcije zaista uklanjaju sve promenljive vezane za
trenutno aktivnu sesiju, sesija ne}e biti u potpunosti uklonjena sa odgovaraju}eg medijuma za
sme{tanje.
Ukoliko `elite da u potpunosti uklonite sesiju, neophodno je da upotrebite funkciju
session_destroy(), koja trenutnu sesiju progla{ava neva`e}om, a zatim je u potpunosti uklanja sa
medijuma za sme{tanje sesija. Vodite ra~una o tome da na ovaj na~in ne}ete ukloniti i kola~i}e
koji su sme{teni u korisni~kim ~ita~ima. Prototip ove funkcije je slede}eg oblika:
boolean session_destroy()
Ukoliko niste zainteresovani za kori{}enje kola~i}a nakon zavr{etka sesije, jednostavno
pomo}u session.cookie_lifetime direktive defini{ite vrednost 0 (podrazumevana vrednost) u
php.ini datoteci.
454
Rukovanje sesijama
POGLAVLJE 18
455
UPOZORENJE
Mo`da }ete imati priliku da se susretnete sa nekim starijim dokumentima i diskusijama koje ukazuju na
funkcije session_register() i session_unregister(), koje su nekada bile preporu~eni na~in za kreiranje
i uklanjanje promenljivih vezanih za sesije, respektivno. Me|utim, zato {to ove funkcije zavise od konfiguracione direktive register_globals, koja je prema definiciji onemogu}ena po~ev{i od PHP verzije 4.2.0,
odnosno u potpunosti uklonjena u PHP verziji 6.0, umesto toga trebalo bi da koristite metode za dodeljivanje i uklanjanje promenljivih koji su opisani u ovom odeljku.
promenljive vezane za sesiju pomo}u jednog stringa. Prototip ove funkcije je slede}eg oblika:
string session_encode()
Nakon toga, ovaj string mo`ete da postavite u bazu podataka, odnosno mo`ete ga kasnije
o~itavati, odnosno dekodirati pomo}u session_decode() funkcije.
456
Rukovanje sesijama
POGLAVLJE 18
Na primer, pretpostavimo da kola~i} sadr`i identifikator sesije korisnika i da je sme{ten na njegovom ra~unaru. U trenutku kada korisnik zahteva u~itavanje odgovaraju}e stranice koja sadr`i
slede}i listing, identifikator korisnika se o~itava iz kola~i}a. Ova vrednost se zatim tretira kao
identifikator sesije. Kreiraju se odgovaraju}e promenljive sesije, a zatim im se dodeljuje neophodna vrednost i nakon toga se sve ove informacije kodiraju kori{}enjem session_encode() funkcije,
~ime se pripremaju za unos u bazu podataka.
<?php
// Iniciranje sesije i kreiranje nekoliko promenljivih sesije
session_start();
457
<?php
session_start();
$sid = session_id();
session_decode($sessionVars);
?>
Izvr{avanjem prethodnog skripta dobija se slede}i rezultat:
User jason logged on at Feb 16 2008 22:55:22.
Cilj ovog hipoteti~kog primera bio je da vam demonstrira kori{}enje PHP funkcija za kodiranje i dekodiranje. Ukoliko zaista `elite da snimate podatke vezane za sesije u bazu podataka, za to
postoji mnogo efikasniji metod, koji podazumeva definisanje odgovaraju}eg rukovaoca sesijama,
odnosno postavljanje tih rukovaoca direktno u API interfejs PHP okru`enja. Kako se ovo
realizuje, prikazano je kasnije u toku ovog poglavlja.
458
Rukovanje sesijama
POGLAVLJE 18
459
<?php
session_start();
// Da li je sesija prethodno inicirana?
if (! isset($_SESSION['username'])) {
// Ukoliko postoji prethodno inicirana sesija, da li je ona vezana
// za odgovarajuceg korisnika?
if (isset($_POST['username']))
{
$username = mysqli_real_escape_string($_POST['username']);
$pswd = mysqli_real_escape_string($_POST['pswd']);
// Povezivanje na MySQL server i selektovanje odgovarajuce baze podataka.
mysql_connect("localhost","webuser","secret");
mysql_select_db("chapter18");
// Pretraga odgovarajuceg korisnika u users tabeli.
$query = "SELECT username FROM users
WHERE username='$username' AND pswd='$pswd'";
$result = mysql_query($query);
// Da li je odgovarajuci korisnik pronadjen u users tabeli?
if (mysql_numrows($result) == 1)
{
$_SESSION['username'] = mysql_result($result,0,"username");
echo "You've successfully logged in. ";
}
// Ukoliko korisnik nije prethodno prijavljen na sistem, prikazuje se
forma za prijavljivanje.
} else {
include "login.html";
}
// Korisnik se vratio. Prikazati poruku dobrodoslice.
} else {
printf("Welcome back, %s!", $_SESSION['username']);
}
?>
460
Rukovanje sesijama
POGLAVLJE 18
Po{to su danas korisnici zatrpani razli~itim korisni~kim imenima i {iframa, koje omogu}avaju
pristupanje razli~itim sistemima i kori{}enje razli~itih usluga, od provere elektronske po{te i
produ`avanja iznajmljivanja knjiga iz biblioteke, do pregledanja stanja na bankovnom ra~unu,
obezbe|ivanje automatskog prijavljivanja, kada to situacija dozvoljava, bi}e veoma dobro prihva}eno od strane korisnika va{e aplikacije.
461
462
Rukovanje sesijama
POGLAVLJE 18
zadataka (definisanih u daljem tekstu) vezanih za kori{}enje lokacija za sme{tanje. Pored toga,
neophodno je da defini{ete parametre za svaku pojedina~nu funkciju, nezavisno od toga da li
va{a konkretna implementacija koristi parametar. U ovom odeljku definisana je namena i struktura ovih {est funkcija. Pored toga, opisana je i session_set_save_handler() funkcija, koja se koristi
za magi~no transformisanje funkcionisanja PHP rukovaoca sesijama u ono {to ste definisali
odgovaraju}im funkcijama. Kona~no, ovaj odeljak sadr`i demonstraciju ove funkcionalnosti,
koja je implementirana pomo}u MySQL baze podataka. Ovu biblioteku mo`ete da koristite u
svojim aplikacijama, koriste}i MySQL tabelu kao primarnu lokaciju za sme{tanje informacija o
pojedina~nim sesijama.
session_open($session_save_path, $session_name): Ova funkcija inicijalizuje sve elemente
koji mogu da se koriste u toku sesije. Dva ulazna parametra, $session_save_path i $session_name, ukazuju na istoimene konfiguracione direktive, koje se nalaze u php.ini
konfiguracionoj datoteci. PHP funkcija get_cfg_var() se koristi za o~itavanje ovih konfiguracionih vrednosti u nekim od primera koji slede.
session_close(): Ova funkcija funkcioni{e sli~no standardnim funkcijama za rukovan-
je, pri ~emu se osloba|aju svi resursi koji su zauzeti pomo}u session_open() funkcije.
Kao {to mo`ete da primetite, ne postoje ulazni parametri za ovu funkciju. Vodite
ra~una o tome da na ovaj na~in ne}ete u potpunosti ukloniti sesiju. To je posao session_destroy() funkcije, koja je opisana na kraju ove liste funkcija.
session_read($sessionID): Ova funkcija se koristi za o~itavanje podataka vezanih za
sesiju, koji su sme{teni na nekom medijumu. Ulazni parametar, $sessionID, ukazuje na
identifikator sesije koji }e se koristiti prilikom identifikovanja podataka vezanih za
konkretnog korisnika.
session_write($sessionID, $value): Ova funkcija se koristi za upisivanje podataka,
va{em skriptu. Ona se koristi za uklanjanje sesije i svih promenljivih koje su vezane za
tu sesiju. Ulazni parametar $sessionID ukazuje na identifikator sesije, kojim je definisana trenutno aktivna sesija.
session_garbage_collect($lifetime): Ova funkcija se koristi za efikasno uklanjanje
svih sesija, ~ije je vreme trajanja isteklo. Ulazni parametar $lifetime ukazuje na session.gc_maxlifetime konfiguracionu direktivu sesije, koja se nalazi u php.ini datoteci.
463
sasvim proizvoljno da dajete, ali da morate da defini{ete odgovaraju}i broj i tip parametara,
kao {to je navedeno u prethodnom odeljku, i da oni moraju biti prosle|eni do
session_set_save_handler() funkcije, u slede}em redosledu: open, close, read, write, destroy i
garbage collect.
U slede}em primeru prikazano je kori{}enje ove funkcije:
session_set_save_handler("session_open", "session_close", "session_read",
"session_write", "session_destroy",
"session_garbage_collect");
U narednom odeljku prikazano je kreiranje rukovaoca koji upravljaju informacijama o sesijama pomo}u MySQL baze podataka.
2.
Slede}a MySQL tabela, sessioninfo, koristi se za sme{tanje podataka vezanih za sesije. Kada se
radi o ovom konkretnm primeru, pretpostavimo da se ova tabela nalazi u odgovaraju}im sesijama za rad sa bazama podataka, iako ovu tabelu mo`ete da postavite gde god `elite.
CREATE TABLE sessioninfo (
SID CHAR(32) NOT NULL,
expiration INT NOT NULL,
value TEXT NOT NULL,
PRIMARY KEY(SID)
);
Listing 18.2 sadr`i definisane MySQL funkcije za rad sa sesijama. Uo~ite da su definisani svi
neophodni rukovaoci, da je obezbe|en odgovaraju}i broj parametara koji se prosle|uju,
nezavisno od toga koji se parametri koriste u samim funkcijama.
464
Rukovanje sesijama
POGLAVLJE 18
Listing 18.2. Rukovalac sesijama, koji koristi podatke iz MySQL baze podataka
<?php
/*
* mysql_session_open()
* Otvara se perzistentna konekcija i selektuje baza podataka.
*/
mysql_select_db("sessions")
or die("Can't select MySQL sessions database");
} // end mysql_session_open()
/*
* mysql_session_close()
* Nista se, zapravo, ne izvrsava dok je konekcija sa serverom
* perzistentna. Vodite racuna o tome da, iako
* ne radi nista u konkretnoj implementaciji,
* ova funkcija mora biti definisana.
*/
function mysql_session_close() {
return 1;
} // end mysql_session_close()
/*
* mysql_session_select()
* Iz baze podataka ocitavaju se podaci vezani za sesiju
*/
465
function mysql_session_select($SID) {
$result = mysql_query($query);
if (mysql_num_rows($result)) {
$row=mysql_fetch_assoc($result);
$value = $row['value'];
return $value;
} else {
return "";
}
} // end mysql_session_select()
/*
* mysql_session_write()
* Ova funkcija se koristi za upisivanje podataka, vezanih za sesiju, u bazu podataka.
* If that SID already exists, then the existing data will be updated.
*/
466
Rukovanje sesijama
POGLAVLJE 18
$result = mysql_query($query);
if (! $result) {
$result = mysql_query($query);
}
} // end mysql_session_write()
/*
* mysql_session_destroy()
* Deletes all session information having input SID (only one row)
*/
function mysql_session_destroy($SID) {
$result = mysql_query($query);
} // end mysql_session_destroy()
467
/*
* mysql_session_garbage_collect()
* Deletes all sessions that have expired.
*/
function mysql_session_garbage_collect($lifetime) {
$result = mysql_query($query);
return mysql_affected_rows($result);
} // end mysql_session_garbage_collect()
?>
Nakon {to defini{ete ove funkcije, mo`ete ih povezati u PHP logiku za rukovanje izvr{avanjem
session_set_save_handler() funkcije. Slede}i kod treba da se na|e na kraju biblioteke, koja je
468
Rukovanje sesijama
POGLAVLJE 18
+---------------------------------------+-------------------+------------------+
| SID | expiration | value |
+---------------------------------------+-------------------+------------------+
| f3c57873f2f0654fe7d09e15a0554f08 | 1068488659 | name|s:5:"Jason"; |
+---------------------------------------+-------------------+------------------+
1 row in set (0.00 sec)
Kao {to ste i o~ekivali, u tabelu je uba~ena odgovaraju}a vrsta, koja sadr`i identifikator sesije i
promenljivu sesije "Jason". Ova informacija je postavljena tako da istekne 1440 sekundi nakon
kreiranja; ova vrednost se izra~unava utvr|ivanjem trenutnog broja sekundi od po~etka Unix
epohe, i dodavanjem vrednosti 1440 na tu vrednost. Uo~ite da iako je 1440 podrazumevano
vreme za isticanje sesije, kao {to je definisano u php.ini datoteci, ovu vrednost mo`ete sasvim slobodno da promenite nekom vredno{}u koja vam odgovara.
Uo~ite da ovo nije jedini na~in za implementiranje ovih procedura, ukoliko se koristi MySQL
baza podataka. Ovu biblioteku mo`ete i samostalno da modifikujete, onako kako vama
odgovara.
469
470