Professional Documents
Culture Documents
NIŠ
DIPLOMSKI RAD
PHP Sesija
Predmet: Internet programiranje
Mentor: Student:
Mr Veličković Zoran Radivojević Milan
REr 58/06
PHP sesija
DIPLOMSKI RAD
PHP sesija
Mentor: Student:
Mr Veličković Zoran Radivojević Milan
REr 58/06
Članovi komisije:
1. _______________
2. _______________
-2-
PHP sesija
SADRŽAJ
UVOD............................................................................................................................................4
4. Kolačići (Cookies)………….................................…….………...……………...……..………19
5. Sesija (Session)………..……………………….................................…….…………...…….…26
6. Realizacija projekta…………………………………….……...………………………..........32
6.3.1 Index........................................................................................................................35
6.2.2 Manage-check………...………......………….……………………………...........38
6.2.3 LoginSuccessfull.....................................................................................................40
6.2.4 AccessDenied...........................................................................................................42
6.2.5 Logout.php..............................................................................................................44
6.2.6 LogPage2.................................................................................................................45
6.2.7 Password..................................................................................................................47
7. Zaključak.....................................................................................................................................48
Literatura....................................................................................................................................49
-3-
PHP sesija
UVOD
-4-
PHP sesija
kompjuteru širom Interneta. Ova tehnologija praktično nam omogućuje da kliknuvši mišem na
link u jednom dokumentu dodjemo do nekog drugog dokumenta, i tako redom, bez obzira na
kom se, od više miliona kompjutera povezanih u svetsku kompjutersku mrežu, taj dokument
nalazi. Ulaskom u prvu WEB prezentaciju mi smo se nasli u cyberspace-u medju više desetina
miliona stranica teksta, slika, i drugih multimedijalnih sadržaja, bez obzira na kom se mestu na
zemaljskoj kugli oni nalaze. World Wide Web je danas najmoćniji i najfleksibilniji Internet
navigacioni sistem koji postoji.
Da bismo koristili WWW neophodno je da na svom računaru imamo instaliran softver za
čitanje WWW prezentacija. To danas nije nikakav problem jer se mnogi od ovih softverskih
alata dobijaju besplatno, mogu se besplatno preneti sa Interneta na naš računar. Najpoznatiji su
Microsoft Interenet Explorer, Opera, Mozilla Firefox ali postoje i mnogi drugi koji čitaju WWW
prezentacije sasvim uspešno.
Kako je broj WWW stranica ogroman, razumljiva je pojava sve većeg broja WWW
stranica koje upućuju na druge WWW stranice iz slične oblasti, odnosno pojava WWW stranica
koje u sebi sadrže alate za pretraživanje različitih baza podataka. To mogu biti baze podataka
dokumenata, elektronskih adresa, web-ova, itd. Ove WEB prezentacije kao sto su : Google,
Yahoo, itd. omogućuju zaista efikasno pretraživanje Interneta, i ne zahtevaju detaljno
upoznavanje sa principima i pravilima na osnovu kojih funkcionišu…
-5-
PHP sesija
-6-
PHP sesija
-7-
PHP sesija
HTTP ili The Hypertext Transfer Protocol je komunikacioni protokol baziran na TCP/IP
protokolu koji se koristi da virtualno dostavi sve fajlove i druge podatke, kolektivno pozvane
resurse na internetu (World Wide Web). Ovi resursi mogu biti HTML fajlovi, slike, rezultati
upita ili bilo šta drugo. Browser (čitač) funkcioniše kao HTTP klijent zato što šalje zahtev HTTP
serveru koji se zove Web server. Onda Web server šalje odgovore nazad klijentu.
Standardni tj. default port koji osluškuje HTTP server je port 80 ali se može promeniti u
bilo koji drugi port.
-8-
PHP sesija
Postoje tri bitne karakteristike HTTP protokola koje trebamo imati u vidu:
- HTTP ne može biti trajno konektovan. Nako što se pošalje zahtev klijent se
diskonektuje (isključuje) sa servera i čeka na odgovor. Server mora ponovo da
uspostavi konekciju nakon sto obradi zahtev.
- HTTP je nezavistan od tipa podataka koje prenosi. Možemo poslati bilo koju
vrstu podataka koristeći HTTP protokol dokle god klijent i server znaju kako da
manipulišu njima.
- HTTP nema stanja: to je direktan rezultat toga što ne može biti trajno konektovan.
Server i klijent su svesni jedno drugog samo u toku transakcije. Nakon toga
zaboravljaju jedan na drugoga. Iz ovog razloga ni klijent ni server ne zadržavaju
informacije izmedju različitih zahteva tokom razmene podataka.
Dakle HTTP protokol ne pamti status posetioca, što znači da Web server, kada odgovori
na HTTP zahtev čitača, ne zna da li je postojao prethodni zahtev istog posetioca. Web server
šalje datoteke (Web stranice, grafiku i slično) čitaču Weba kao odgovor na HTTP zahtev čitača.
Prethodno pregledane stranice i međudejstvo sa objektima na Web stranici (kao sto su izbor ili
unos u elementima obrasca) nemaju nikakav uticaj na sadržaj svake nove preuzete stranice.
U tome nam može pomoći programski jezik PHP i njegove aplikacije, prvenstveno
kolačići i sesije.
-9-
PHP sesija
- 10 -
PHP sesija
HTML nije programski jezik, nego jezik za označavanje teksta. Čitači Web-a ili Web
browseri su programi koji prevode HTML u Web dokumentima i prikazuju sadržaj na ekranu.
Najpopularniji web browser je Micrsoft Internet Explorer, ali se sve više koristi Firefox zbog
mnogo veće bezbednosti i udobnosti u radu. Web browseri imaju sposobnost da čitaju HTML
komande koje se zovu tagovi i interpretiraju ih na odredjeni način stvarajući sadržaj koji vidimo
dok krstarimo Internetom.
Protokol pristupa čitaču nekoj web stranici na internetu vrši se na sledeći način. Unesemo
neku internet adresu i pritisnemo enter, čitač putem interneta zahteva određenu datoteku putem
Web servera. Po prijemu zahteva server nalazi tražene datoteke, sada čitač analizira sadržaj
primljene datoteke, generisanje dodatnih zahteva za datotekama sa servera i one mogu
predstavljati slike i i razne druge animacije nakon toga. Server šalje tražene dodatne datoteke,
analiza HTML koda i prikazivanje sadržaja na ekranu čitača.
- 11 -
PHP sesija
HTML komande se pišu u vidu tzv. TAG-ova. Jedan tag je ustvari komanda koja govori
vašem browseru šta i kako da uradi tj. na koji način da prikaže sadržaj vaše stranice. HTML
tagovi su "case insensitive" tj. svejedno je da li ih pišete malim ili velikim slovima. Tagovi se
pišu unutar oznaka "<" i ">" (bez znakova navoda) npr: <html>. Ovaj tag se nalazi na početku
svakog HTML dokumenta i on govori vašem browseru da je fajl koji je upravo počeo da učitava
baš HTML dokument i da kao takvog treba i da ga prikaže. Na kraj HTML dokumenta se stavlja
završni HTML tag:</html>. Ovaj tag govori vašem browseru da je to kraj vašeg HTML
dokumenta. Većina tagova ima i početni i završni tag. Završni tag se dobija dodavanjem znaka
"/" i označava mesto na kojem prestaje dejstvo početnog taga. Postoje i tagovi kod kojih ne
morate da stavljate završni tag kao što je recimo tag <br> koji služi za prelazak u novi red.
Svaki HTML dokument se sastoji od dva dela: zaglavlja (engl. head) i tela (engl. body).
Zaglavlje se odvaja tagovima <head> i </head> a telo dokumenta tagovima: <body> i </body>.
Sve ono što napišete u zaglavlju dokumenta neće se prikazati u prozoru vašeg browsera već
obično služi samo da pruži neke informacije o vašoj stranici. Tako ćete u okviru vašeg zaglavlja
svakako staviti tagove: <title> i </title> između kojih ćete staviti naslov vaše stranice. Ali pazite,
to nije naslov koji će se pojaviti u telu vaše stranice već onaj naslov koji se pojavljuje u
naslovnoj liniji vašeg browsera. I on izgleda ovako:
S druge strane sve ono što napišete između tagova <body> i </body> predstavljaće telo
našeg dokumenta i pojaviće se kao sadržaj naše prezentacije u prozoru browsera. Dakle, svaki
HTML dokument mora da ima sledeći "kostur":
- 12 -
PHP sesija
<html>
<head>
<title>Naslov dokumenta</title>
</head>
<body>
</body>
</html>
Tagovi se mogu pisati velikim ili malim slovima ili kombinovano. Program za pregled
sadržaja HTML dokumenta (npr. lynx, Opera, Mozilla, NN, IE,...) ignoriše razliku malih i
velikih slova u nazivima tagova. Takođe se ne uzima u obzir ni postojanje višestrukih praznih
redova (za prelaz u novi red koristite tag <BR>, a ne taster Enter), blanko, tabulator,...
Osnov HTML predstavljaju tagovi i atributi. Pomoću tagova se određeni deo dokumenta
odvaja od ostatka i na njega se primenjuju pravila definisana samim tagom. Atributi se nalaze
unutar tagova i omogućavaju da se pored samog imena taga i unapred definisanog ponašanja još
bliže odredi način prikaza i ponašanja označenog dela dokumenta.
HTML je ralativno lak za upotrebu (pravljenje web prezentacija) ali nije najbolji. Pored
njega postoje mnogi drugi napredni jezici kao što su: Kaskadni Opisi Stilova-CSS, Java Script,
PHP-Serverski Skript Jezik, XHTML, XML i drugi jezici. Na narednim primerima ću vam
pokazati neke od mogućnosti PHP-a.
- 13 -
PHP sesija
PHP je alat koji omogućava da Web stranice pravimo u vreme izvršavanja. U prošlosti,
Web lokacije su se sastojale od statičnih stranca sa tekstom, grafikom i, možda, svetlucavim (ali
nepromenljivim) multimedijalnim efektima i animacijama. Danas, posetioci očekuju lokacije
koje im omogućuju da smeštaju podatke u bazu podataka i dobijaju ih upitom, kao i da formiraju
novi Web sadržaj zasnovan na zahtevima postavljenim tokom korišćenja resursa lokacije. PHP
(skraćenica od Personal Home Page alati) je hipertekstualni pretprocesor koji omogućava
generisanje sadržaja Web stranice u vreme izvršavanja. Iskaze koje izvrsava PHP procesor
možete staviti u posebnu datoteku ili ugraditi u HTML Web stranice.
Slika 3.1 pokazuje korake kojima se preuzimaju i prikazuju PHP Web stranice. Kada
čitač Weba zatraži PHP Web stranicu (datoteku s nastavkom, obično .php, povezanu sa PHP
procesorom), Web server šalje zahtev PHP procesoru. Procesor čita dokument koji čitač želi da
preuzme. Dok prolazi kroz datoteku, red po red, PHP procesor izvršava PHP iskaze obuhvaćene
oznakama za početak «?php ili <?) i završetak (?>) PHP skripta. Procesor ispisuje izlaz generisan
PHP iskazima koje izvršava, kao i sam tekst izvan početne i završne PHP oznake, na Web
stranicu (virtuelnu, u memoriji Web servera) koju Web server na kraju šalje čitaču Weba.
Pošto PHP procesor generiše HTML Web stranice nakon što čitač Weba pošalje zahtev
serveru za Web stranicu, možemo generisati stranice sa HTML-om specifičnim za čitač i stranice
koje prikazuju različit sadržaj zavisno od toga ko je posetilac ili koje je doba dana. Ukratko, PHP
omogućava da pretvorite Web lokaciju od zbirke statičnih Web stranica koje posetioci mogu da
gledaju, u aplikaciju koja se pokreće na Web serveru sa korisničkim okruženjem Web stranice.
- 14 -
PHP sesija
1) Čitač Weba šalje Web serveru HTTP zahtev za PHP Web stranicu.
3) PHP sintaksni analizator pronalazi i preuzima PHP Web stranicu (datoteku s nastavkom .php).
4) PHP sintaksni analizator izvršava PHP iskaze u PHP dokumentu i formiraWeb stranicu od
izvršenih iskaza i HTML-a koje pronađe u datoteci.
6) Web server šalje čitaču Weba stranicu koju je generisao PHP sintaksni analizator.
Umetanjem PHP iskaza koji dinamički ispisuje tekuće vreme na Web stranici pošto čitač
Weba zatraži stranicu, PHP procesor automatski ažurira vreme na stranici. Nakon prijema
zahteva za PHP Web stranicu, procesor formira stranicu sa sadržajem bez PHP iskaza (statičnu
stranicu) od datoteke Web stranice na disku i umeće tekuće vreme dobijeno ugrađenom PHP
funkcijom date()
- 15 -
PHP sesija
Dok se klijentski script jezici (kao što je JavaScript) izvršavaju u čitaču Weba, PHP je
serverski jezik, što znači da program na Web serveru (a ne čitač Weba) izvršava PHP skript
ugrađen u HTML kod Web stranice.
- Bez izmena možete izvršavati PHP kod na Web serverima koji rade pod različitim
operativnim sistemima kao sto su Linux, Mac OS, RISC OS, Unix i Windows.
- PHP iskaze ugrađujete u dokument Web stranice ili samostalno ili uporedo sa HTML,
XHTML ili XML oznakama kojima definišete stranicu za čitač Weba.
- Kada čitač Weba zatraži Web stranicu s ugrađenim PHP iskazima, server šalje zahtev
PHP procesoru. Procesor pronalazi traženu datoteku i izvršava ugrađeni PHP kod u njoj,
PHP iskaze zamenjuje izlazom (ako postoji) i prosleđuje rezultat Web serveru. Web
server, zatim, stranicu koju je vratio PHP procesor prosleđuje čitaču Weba.
Elegancija PHP-a je u tome što čitač Weba nikad ne radi sa PHP-om ugradjenim u Web
stranicu. Za razliku od JavaScripta, VB Scripta, JScripta ili drugih klijentskih script jezika, kada
pišete PHP skript, ne morate brinuti da li čitač Weba posetioca podržava PHP. Da biste napravili
Web stranicu sa PHP-om, ugradite PHP komande koje želite da izvršite u HTML Web stranice i
dajte dokumentu Web stranice nastavak (kao sto je .php) da biste je povezali s PHP procesorom.
- 16 -
PHP sesija
Pregledom kratke istorije PHP-a, vidi se kako je poreklo jezika uticalo na njegovu
trenutnu upotrebu. Godine 1994, Rasmus Lerdorf je napisao nekoliko Perl skriptova da bi
utvrdio ko je posećivao njegovu Web stranicu. Vremenom, sve više i više programera se
zanimalo za njegove skriptove, i on ih u proleće 1995. objavljuje kao paket, pod nazivom
Personal Home Page alati - otuda skraćenica PHP. Početni skup PHP alata, koji je Lerdorf
označio kao “CGI omotač napisan u PerIu", sadržao je nekoliko serverskih makroa i jednostavne
uslužne programe, kao što su brojač poseta i knjiga gostiju.
Zbog rastućeg interesovanja za njegove PerI skriptove, Lerdorf je preradio svoj program
za sintaksnu analizu i ugradio alat za sintaksnu analizu podataka sa HTML obrazaca, nazvan
Form Interpreter (FI), te dodao podršku za mSQL bazu podataka. Kombinovani paket, objavljen
sredinom 1995, nazvan je PHP/FI ili PHP2. Ubrzo nakon toga, Web dizajneri su počeli da
koriste te alate za obavljanje još složenijih zadataka. PHP-ova politika "otvorenog koda"
omogućila je grupi programera predvođenoj Zeevom Suraskim i Andijem Gutmansom da
ponovo prerade PHP procesor 1997. godine. Kod, koji su objavili postaje osnova za PHP3 (PHP
verzije 3), koji je brzo usvojen na više od 1.000.000 Web lokacija pre drugih serverskih skript
jezika kao što su Microsoftove aktivne serverske stranice (ASP) i Allaireov ColdFusion.
Verzija PHP4 dostupna je besplatno (na različitim Web lokacijama, uključujući
http://www.PHPnet), kao i otvoreni izvorni kod, što znači da možemo preuzeti izvorni kod PHP
procesora i "pogledati ispod haube". Medutim, to što je besplatan i otvorenog koda, nije glavni
razlog što se PHP danas koristi na više od 6.000.000 domena.
On je postao serverski skript jezik za mnoge Web servere zbog sledećih razloga:
• PHP radi pod Windowsom NT ili Unixom, što olakšava izradu složenih Web lokacija za
obe platforme.
• Ima jednostavnu, a ipak elegantnu objektno orijentisanu sintaksu i odličnu dokumentaciju
(dostupnu u knjigama razIičitih autora i, besplatno, na Mrezi). Osim toga, struktura PHP-
a je bliska programerima koji su koristili proceduralne ili objektno orijentisane
programske jezike. Prema tome, ako znamo C, C++, Javu, Pascal ili Visual Basic, lako
ćemo naučiti da pišemo PHP skriptove i funkcije – nećemo se osećati kao da učimo
potpuno nov programski jezik.
- 17 -
PHP sesija
• PHP je prilagodjen Web dizajneru tako što mu omogućava da obavi zadatak sa nekoliko
poziva funkcije (umetnutih u HTML Web stranice). Na drugim skript jezicima, za isti
posao neophodno je veliko znanje i glomazan kod.
• PHP je veoma brz. Za razliku od ASP-a, koji usporava Internet informacioni server (IIS)
kada odjednom analizira sintaksu mnogo složenih ASP stranica, mozete prevesti,
optimizovati, i uskladištiti PHP skriptove u memoriju - omogućujući time Web serveru
da opsluži veliki broj PHP Web stranica bez primetnog pogoršanja izvršavanja.
U ovom poglavlju obijasniću neke od osnovnih komandi u PHP–u koje ću koristiti pri
izradi mog diplomskog rada:
• <?PHP ?> - Ovim komandama mi ukazujemo PHP serveru da se u tekstu unutar njih
nalaze PHP iskazi. Ove komande možemo da shvatimo kao granice koje ceo PHP
program drže na okupu
• Setcookie – ova komanda se koristi za kreiranje kolačića
• $_COOKIE[‘ime kolačića’] – ovom komandom mi možemo pročitati sadržinu kolačića
• echo – komanda koja štampa na Web stranicu ono što se nalazi nakon te komande
• isset() – komadna koja proverava da li je data promenljiva već setovana
• session start() - funkcija koja proverava da li sesija već postoji (tj da li postoji sessionID
na korisnikovom računaru), ako ne postoji ona kreira novu sesiju.
• Fopen - funkcija koja ukazuje da dati fajl treba da se otvori
• trim – komanda koja uklanja prazan prostor (ili neki drugi simbol) od samog početka do
kraja tekstualnog fajla
• feof – proverava da li je kraj fajla na mestu gde se nalazi pokazivač
• split – komanda koja će razdvojiti string u znakovni niz iz datog izraza
• fgets – uzima liniju na koju ukazuje pokazivač
• $_POST[ime promenljive]- komanda koja preuzima promenljivu poslatu metodom POST
• $_SESSION[ime] - kreiranje sesijske promenljive
• fclose - komanda koja zatvara fajl
• @session_unset()–funkcija kojom oslobađamo sve promenljive sesije (one ostaju prazne)
- 18 -
PHP sesija
Kao što sam već rekao da bismo uopšte kreirali i podesili kolačić moramo da koristimo
php funkciju SETCOOKIE, u tu funkciju moramo da unesemo tri argumenta: ime kolačića
$name, njegovu vrednost $value i vreme trajanja tj. isteka kolačića $expire.. Taj kod izgleda
ovako:
</HTML>
<HEAD> <TITLE> Kolačići </TITLE> </HEAD>
<BODY>
<?php
setcookie (‘test’, 45, time() + (60*60*24*7));
?>
</BODY>
</HTML>
Kao što sam već pomenuo u prethodnom delu teksta da bi smo kreirali kolačić moramo
koristiti funkciju setcookie koja treba da sadrži tri atributa: ime kolačića koji sam ja u ovom
slučaju stavio da je test a pošto je string, stavljen je pod navodnicima, zatim unosimo vrednost
kolačića za koju sam ja u ovom slučaju stavio da je broj 45 (inače to može da bude i string), a
kao zadnji argument upisujemo vreme trajanja kolačića. Taj argument se unosi početnom
funkcijom time() koja predstavlja trenutak kad se kolačić kreira tj. trenutak kada se taj skript
izvršava na zahtev korisnikovog čitača i šalje na korisnikov računar. Nakon funkcije time()
unosimo koliko će taj kolačić trajati na korisnikovom računaru od trenutka nastajanja kolačića i
to vreme može biti od par sekundi pa na više. Naravno nema svrhe kreirati kolačić koji će trajati
- 19 -
PHP sesija
par sekundi jer onda gubimo smisao postojanja kolačića. Zato sam ja u datom primeru postavio
da on traje 7 dana.
Postoje dva načina postavljanja vremena pošto se vreme trajanja upisuje u sekundama:
- jedan od načina je da preračunamo koliko ukupno sekundi imamo u sedam dana i da tu
konkretnu vrednost upišemo nakon znaka plus;
- drugi u praksi primenjeniji način je da nam računar to sam proračuna. To radimo tako što
nakon znaka plus pišemo koliko sekundi sadrži jedan minut pa to množimo sa koliko minuta
sadrži jedan sat pa to dalje množimo sa koliko sati ima jedan dan i na kraju množimo sa koliko
dana ima jedan nedelja i to na kraju izgleda ovako :
Time()+(60*60*24*7)
Znak + ima ulogu da na trenutno vreme (tj.vreme izvršenja skripta) doda taj odredjeni broj
sekundi..
Ako sada pokrenem ovu stranicu, kucajući adresu gde se data stranica nalazi i njen naziv
http://localhost/Cookies.php čitač će prikazati totalno praznu stranicu jer ja inače nisam ubacio
nikakvu sadržinu u telo HTML-a ali učitavanjem ove stranice u čitač je ubačen kolačić.
Svaki čitač ima mogućnost prikaza kolačića koji su zapamćeni u njemu pa ću tako ja u operi,
čitaču koji koristim demonstrirati prikaz kolačića koji sam upravo dobio učitavanjem ove
stranice.
- 20 -
PHP sesija
Klikom na Tools a zatim Preferences dobijamo prozor na kome se nalazi dugme “Manage
Cookies…” koji nam nudi mogućnost da vidimo sve kolačiće i upravljamo njima.
Klikom na tu opciju dolazim do prozora (slika 4.2) u kome su mi prikazane sve lokacije
sa kojih sam primio kolačiće koji se nalaze u mom čitaču. Klikom na localhost dolazim do
kolačića koji je upamćen učitavanjem moje prazne stranice. Vidi se njegova lokacija na serveru,
njegovo ime “test” i njegova vrednost koja je 45. Kao što sam već pomenuo njegova vrednost ne
mora da bude broj, može biti string ili neki drugi tip podatka zavisno od njegove namene...
Sada kad sam kreirao kolačić bilo koji korisnik računara može da udje u čitač i pristupi
vrednosti tog kolačića. Većini korisnika to nije bitno ali postoji mogućnost da neki haker dodje
do tih podataka i pokuša da iskoristi te podatke ,da ukrade identitet korisnika na našem sajtu ili
napravi neku veću štetu. Zato postoje neke naprednije metode kriptovanja koje se koriste pri
izradi kolačića koje su malo sigurnije.
Sada cu obijasniti kako mogu da testiram i učitavam vrednost već postojećeg kolačića.
Prvo treba kreirati promenljivu $var1 kojoj dajemo vrednost kolačića čije je ime test (vrednost
iz prethodnog primera) zatim ćemo odštampati u čitaču vrednost te promenljive:
- 21 -
PHP sesija
</HTML>
<HEAD> <TITLE> Čitanje vrednosti kolačića </TITLE> </HEAD>
<BODY>
<?php
$var1=$_COOKIE[‘test’];
echo=$var1;
?>
</BODY>
</HTML>
Ako pokrenemo ovu stranicu u gornjem levom uglu biće odštampana vrednost kolačića
45 ( slika 4.3 )
Desilo se sledeće, server je primio zahtev za stranicom cookies_read ,počeo da čita kod i
kad je došao do $_COOKIE poslao je zahtev čitaču i rekao pošalji mi kolačić za ovaj domen jer
će mi trebati vrednost kolačića test. Zatim uzima vrednost test-a i dodeljuje ga promenljivoj
- 22 -
PHP sesija
$var1 i zatim ga štampamo pomoću komande echo. To je sve što se tiče testiranja i učitavanja
kolačića nazad na server.
Naravno ako hoćemo da se otarasimo tj. da obrišemo neki kolačić to mozemo da
izvedemo tako što ćemo njegovu vrednost da postavimo na 0 ili da postavimo da je vreme
trajanja datog kolačića isteklo.. Taj kod bi izgledao ovako:
</HTML>
<HEAD> <TITLE> Čitanje vrednosti kolačića </TITLE> </HEAD>
<BODY>
<?php
$var1=$_COOKIE[‘test’];
echo=$var1;
?>
<?php
//Ovo će obrisati kolačić
Setcookie ( ‘test’, 0, time() - (60*60*24*7));
?>
</BODY>
</HTML>
Ovo će vrednost kolačića postaviti na 0 (tj nešto bez značajno) i njegovo vreme trajanja
postaviti na neko vreme pre nego što smo uopšte kreirali kolačić (zbog znaka – koji oduzima
toliko sekundi koliko smo postavili).
Kada bi pokrenuli ovu stranicu, prvi put bismo dobili ponovo odštampanu vrednost
kolačića koja je bila 45 jer smo u strani namestili da prvo pročita i odštampa vrednost pa tek
onda da obriše kolačić. Ali svakim sledećim učitavanjem stranice dobićemo obaveštenje da nije
nadjen kolačić sa tim imenom jer smo ga ukinuli (Slika 5.4)
- 23 -
PHP sesija
- 24 -
PHP sesija
Dakle kad god čitamo podatke iz kolačića dobro je dodati sledeći kod:
</HTML>
<HEAD> <TITLE> Testiranje i brisanje kolačića </TITLE> </HEAD>
<BODY>
<?php
$var1=0;
if(isset(=$_COOKIE[‘test’])){
$var1=$_COOKIE[‘test’];}
echo=$var1;
?>
<?php
//Ovo će obrisati kolačić
setcookie ( ‘test’, 0, time() - (60*60*24*7));?>
</BODY>
</HTML>
Dakle, dobro je napisati kod gde ćemo pitati ako “if“ je kolačić podešen „isset()“.Ako je
kolačić podešen if(isset($_COOKIE[‘test’])) onda ćemo koristiti promenljivu $var1. Moramo i
promenljivu $var1 još na početku da definišemo da ima neku default vrednost inače ako kolačić
ne postoji dobili bismo grešku da $var1 nema vrednost.. Kada ovu stranicu učitamo dobićemo
odštampanu vrednost 0.
Ključna stvar je da su kolačići jako zgodni za postavljanje podataka na računar korisnika
koje možemo da iskoristimo kasnije. Ako se vrate na naš sajt za mesec dana, za godinu dana, ako
je kolačić još uvek tu možemo da pokupimo te informnacije i znamo nešto o tom korisniku ali ne
možemo baš da budemo sigurni da će kolačići biti tu, zato treba da proverimo da li su oni tu pre
nego što im dopustimo da učestvuju u našoj aplikaciji. Zato što ti podaci nisu tako pouzdani, i
kao što sam već pokazao mi možemo da vidimo sadržaj kolačića kao korisnici pa čak možemo i
promeniti taj sadržaj u kolačiću trebalo bi da se sagleda i jedna druga vrsta kolačića koja će nam
da ti dosta više opcija i malo veću sigurnost koja se zove sesije „Session”.
- 25 -
PHP sesija
Sada kad znamo kako funkcionišu kolačići, koje su njihove prednosti i mane, kada znamo
kako njihov sadržaj može biti izgubljen ili izmenjen mogli bismo probati nešto malo robusnije
posebno ako bismo radili na nekoj zahtevnijoj Web aplikaciji. Kolačići u tom slučaju možda i
nisu najbolje rešenje za nas. Mada najčešće ćemo želeti da radimo u kombinaciji sa kolačićima i
sesijama ali po nekad će nam zgodnije biti da ubacimo samo kolačić jer će on verovatno trajati
duže nego sesija, s druge strane u nekim situacijama je bolje koristiti sesije jer im možemo im
više verovati pošto su sigurnije.
Sesija je fajl koji se čuva na WEB serveru i u tom fajlu mi možemo čuvati kakve god
informacije želimo. Tako, da u njima možemo da smestimo mnogo više informacija nego u
kolačiću i to je jedna prednost ali način na koji mi proveravamo koji fajl pripada kom korisniku
je uz korišćenje kolačića. Dakle, u korisnički čitač smestimo specijalni kolačić tipa session a
onda pogledamo u taj kolačić da nađemo mesto gde se fajl nalazi na našem serveru a onda
možemo pogledati u taj fajl da bismo našli informaciju smeštenu u sesiji. Ta informacija nije
vidljiva s korisničke strane niti im je omogućeno da je prepravljaju, jedino što oni mogu da urade
je da promene ID number tj broj u kolačiću koji je referenca na fajl.. Ali taj ID number će biti
jako dug i komplikovan da bi smo sprečili da neki korisnik otme sesiju drugom korisniku.
Dakle da bi smo bili u mogućnosti da kreiramo sesiju moramo prvo da kreiramo taj fajl i
postavimo kolačić na korisnikovom računaru ili ako smo to već uradili onda ćemo trebati da
nađemo taj kolačić i da nađemo odgovarajući fajl na serveru.
To možemo uraditi funkcijom SESSION_START(). To je jako prosta funkcija koju mi
možemo da pozovemo, ali moramo biti jako obazrivi jer ta funkcija mora da se nađe na samom
početku stranice. Znači, mora da bude postavljena pre bilo kakvog koda HTML, XML ili nekog
drugog da bi funkcionisala..U suprotnom sesija nam neće biti u funkciji.
Kao što sam napomenuo, startovanje sesije ili session_start() mora da se desi pre bilo kog
koda, jer kad jednom ubacimo html, head, title onda je već kasno, onda ne možemo pokrenuti
sesiju, ne možemo komunicirati sa čitačem o njegovim kolačićima koji moramo da uradimo da
bi startovali sesiju.
- 26 -
PHP sesija
<?php
session_start();
?>
</HTML>
<HEAD> <TITLE> Startovanje sesije </TITLE> </HEAD>
<BODY>
</BODY>
</HTML>
Ta jedna komanda će reći “u redu php idi u korisnikov browser (čitač) i nađi ID number
(identifikacioni broj) za ovaj sesioni kolačić, vrati se, nađi taj fajl i otvori ga da bi smo mi mogli
da ga koristimo, i ako odeš i ne uspeš da nađeš taj ID number ili se vratiš i ne nađeš taj sesioni
fajl onda kreiraj novi i pošalji korisniku odgovarajući kolačić i uradi sve što je potrebno da bi
mogao da startuješ ovu sesiju“ . Znači session_start() će uraditi sve što je neophodno da bi ta
sesija proradila.
Kada bi pokrenuli ovu stranicu ne bi se prikazalo ništa, samo prazna stranica ali možemo
da vidimo šta se desilo ako odemo na Tools, Preferences pa zatim na “Manage Cookies…” i na
kraju na localhost i pogledamo u kolačiće kao smo radili i ranije videćemo nešto što se zove
PHPSESSID. To je ime kolačića i to ime možemo i mi sami da konfigurišemo u php.ini fajlu na
serveru a sadržaj tog kolačića je “ise7a7be22” (slika 5.1)….
- 27 -
PHP sesija
Dakle to je ID number ili polje koje će php start da koristi da bi ga uporedio sa fajlom na
našem serveru. Naravno da neko može da pokuša da promeni taj broj i da proba da se poveže na
stranicu kao drugi korisnik i da isprobava razne kombinacije dok ne nađe da je to sesija, ali ovaj
je previše dug i komplikovan string da bi neko uspeo to da uradi. Tu ima dovoljno varijacija da
bi nekom trebalo stvarno puno vremena da nađe drugi fajl na našem sistemu (serveru), drugu
sesiju, koja bi odgovorila na te probane varijacije. Naravno ako mislimo da pravimo neki veliki
industrijski sajt sa milionima posetilaca onda možemo razmišljati o drugim sigurnosnim
opcijama ali za neke neke normale svrhe sesija će nam omogućiti da možemo da referenciramo
na neki jedinstven fajl. Trenutno je taj fajl prazan ali možemo staviti u njega ili izvučemo
podatke iz njega referencirajući na njega kao što referenciramo na super globalne promenljive
GET, POST i COOKIE. Dakle kreiramo promenljivu $_SESSION i onda joj damo ime i
vrednost kao na sledećem primeru i na taj način zapamtimo podatke u sesiju. A onda možemo
da ubacimo još jedan PHP blok koji će da pročita te vrednosti nazad.
- 28 -
PHP sesija
<?php
Session_start();
?>
</HTML>
<HEAD> <TITLE> Učitavanje i štampa vrednosti sesije </TITLE>
</HEAD>
<BODY>
<?php
$_SESSION[‘name’]=”Milan”;
?>
<?php
$name = $_SESSION[‘name’];
echo $name;
?>
</BODY>
</HTML>
Kao što se vidi iz koda jedini način da on sazna za ime jeste da uspešno skoči sa “Milan”
na “$_SESSION[name]” sa “$_SESSION[name]” na promenljivu “$_name” a onda ime bude
odštampano na stranici.
Kada odštampamo stranicu dobijamo podatak koji smo zapamtili u sesiji što je u ovom
slučaju ime “Milan” (slika 5.2)
- 29 -
PHP sesija
Dakle tako smeštamo podatke u sesiju i izvlačimo po potrebi, u ovom slučaju da bi smo
ih štampali. Tu možemo smestiti puno vrednosti, npr. ovde možemo dodati još jedno ime tako
što ćemo uraditi nešto slično kao u prethodnom slučaju. U prvom php bloku možemo dodati i
prezime a onda u drugom bloku spojiti ta dva podatka i odštampati ih zajedno uz pomoć
komande echo (Slika 5.3).
<?php
Session_start();
?>
</HTML> <HEAD> <TITLE> sesija </TITLE> </HEAD>
<BODY>
<?php
$_SESSION[‘ime’]=”Milan”;
$_SESSION[‘prezime’]=”Radivojević”;
?>
<?php
$puno_ime = $_SESSION[‘ime’].””.$_SESSION[‘prezime’];
echo $puno_ime;
?>
</BODY>
</HTML>
- 30 -
PHP sesija
Kada bismo ponovo otišli da vidimo kolačiće i dalje bismo videli samo onaj ID fajl kao i
prethodno. Ne bismo našli ništa od ovih informacija jer se to čuva na našem serveru gde jedino
mi možemo da im pristupimo.
- 31 -
PHP sesija
6. Realizacija projekta
Zadatak mog diplomskog rada je da napravim internet sajt čijoj će sadržini moći da
pristupe samo korisnici sa odgovarajućim korisničkim imenom i password-om. Koristeći sesiju
treba da omogućim korisniku nesmetan prelazak sa stranice na stranicu u okviru sajta a da taj
korisnik ne mora svaki put iznova da se prijavljuje. Korisnika koji želi da poseti sajt treba
preusmeriti na difoltnu internet stranicu (na mom serveru), index.php na kojoj treba uneti
username i password. Ukoliko unesene vrednosti budu tačne trebam mu odobriti pristup i drugim
stranicama i njegov username treba biti odštampan na internet stranici. Dakle, kada se korisnik
jednom prijavi (uloguje) na moju Web lokaciju trebam mu omogućiti da se on može kretati dalje
nesmetano kroz ostatak stranica sajta a da server sve vreme bude svestan da je to taj isti korisnik,
s toga korisnik neće morati da se prijavljuje iznova na svaku stranicu lokacije.
Jedna od stvari koje moja aplikacija treba da obezbedi je da korisnik ne mora svaki put
nakon povratka na sajt da unosi svoj username i password već da mu oni budu automatski
ponuđeni u formi. A ako žele, da mogu imati opciju da se odjave sa sajta da bi neki drugi
korisnik mogao da se uloguje sa istog računara.
U slučaju da korisnik ne unese odgovarajuće korisničko ime i password, ne treba mu biti
omogućena poseta daljem sadržaju sajta već mu treba biti prikazano obaveštenje da mu nije
dozvoljen pristup datoj lokaciji.
- 32 -
PHP sesija
Da bismo počeli sa radom u PHP-u moramo da ispunimo par uslova. Prvo šta treba da
posedujemo je Web server, i to će nam poslužiti da možemo da koristimo Web fajlove koje ćemo
gledati u našem čitaču. To ću instalirati na mom računaru, ne na nekom posebnom hardveru na
nekoj drugoj lokaciji. Nema nikakvih problema da se Web server pokrene na bilo kojoj desktop
mašini i takođe da imamo čitač Web stranica koji će se nalaziti isto na našem računaru i koji će
moći da čita stranice sa tog Web servera. Takođe će nam trebati PHP server, da bi naš Web
server razumeo PHP fajlove koje ću kreirati i servirati ih čitaču. Biće nam potreban i tekst editor
da bismo mogli da kreiramo te PHP fajlove tj. da napišemo naš kod. I na kraju će nam naravno
trebati Web čitač koji će nam prikazivati stranice koje budemo kreirali. Dakle PHP nakon obrade
fajla PHP prosleđuje HTML čitaču tako da možemo koristiti bilo koji čitač koji čita HTML kod.
Ono što ću uraditi je da ću instalirati sve ove aplikacije, pokrenuti ih na lokalnoj mašini,
kreirati PHP fajlove i na kraju ih pokrenuti u mom čitaču.
Postoje dva načina instalacije ovih aplikacija. Jedno je da odemo na sajtove httpd.apache.org
i www.php.net i skinemo Apache i PHP instalacije i instaliramo ih jedan po jedan ili ćemo otići
na sajt www.wampserver.com/en/index.php i skinuti paket “sve u jednom”. Ono što ću ja
koristiti je WAMP, skraćenica od Windows, Apache , MYSQL i PHP. Ovo je danas najučestaliji
način instalacije ovih servisa, jer dobijamo gotov paket svih servisa koji nam trebaju sa već
podešenim servisima.
- 33 -
PHP sesija
Moja aplikacija se sastoji iz šest PHP skriptova i jednog tekstualnog fajla. Nazivi skriptova
su sledeći:
- Index.php
- Manage-check.php
- LoginSuccessfull.php
- AccessDenied.php
- Logout.php
- LogPage2.php
- Password.txt
Prvi skript (Web stranica) koji korisnik vidi nakon pristupanja Web lokaciji jeste script
index. U njemu se nalazi forma koja sadrži dva polja. Jedno je za unos imena korisnika a druga
je za unos password-a. Ukoliko korisnik ne unese validne podatke neće mu biti dozvoljen pristup
ostalim stranicama na mojoj lokaciji. Podaci koje on unese u formu na index stranici biće
prosleđeni skriptu Manage-check koja će unešene vrednosti uporediti sa vrednostima koje su
unesene u tekstualni fajl password. Ukoliko je korisnik uneo prave podatke biće mu automatski
prosleđena stranica LoginSeccessfull a preko linka će moći da poseti i drugu korisničku stranicu
LogPage2. U gornjem delu ovih stranica biće odštampano korisničko ime posetioca. Dakle, moja
lokacija će prepoznati dok korisnik prelazi sa jedne na drugu stranicu, da je reč o istom
korisniku.
Ukoliko kojim slučajem korisnik ne unese ispravno korisničko ime i password biće
prosleđen na stranicu AccessDenied i neće mu biti omogućen pristup ostalim stranicama.
Logout script može pokrenuti korisnik koji se nalazi na bilo kojoj od dve stranice
namenjene uspešno ulogovanim korisnicima i njegova uloga je da odjavi korisnika sa sajta (da
obriše podatke iz sesije i kolačića) tako da se sa istog računara može ulogovati drugi korisnik.
U narednim poglavljima svaki od ovih skriptova biće razmatran ponaosob.
- 34 -
PHP sesija
6.3.1 Index
Ovo je prvi script (internet stranica) kojoj se pristupa pri kucanju Web lokacije (Web adrese)
localhost/ tj. adrese servera na mom računaru. U ovom skriptu se nalazi forma čiji izgled je dat
na slici 6.2.1. (nakon što je pročita čitač).
Ono što ova forma radi jeste da prihvata username i password korisnika i prosleđuje ih
metodom POST do skripte manage-check.php i to je realizovano sledećim kodom:
- 35 -
PHP sesija
<html>
<head><title> Niste ulogovani </title></head>
<body bgcolor="#888888">
<table width="740" border="0" align="center" cellpadding="0"
cellspacing="0">
<tr><img src="crna.jpg">
<td width="3" bgcolor="000000"></td>
<td width="8" bgcolor="#dddddd"></td>
<td bgcolor="dddddd">
<form name="form" method="post" action="manage-check.php">
<fieldset>
<legend>Member Login:</legend> <dl>
<dt> <label for="myusername">Username:</label> </dt>
<dd><input name="myusername" type="text" id="myusername"
value="<?PHP if (isset($_COOKIE['username']))
{ echo $_COOKIE['username']; }
else { echo "";} ?>
"/> </dd>
<dt><label for="mypassword">Password:</label></dt>
<dd>
<input name="mypassword" type="password" id="mypassword"
value="<?PHP if (isset($_COOKIE['password']))
{ echo $_COOKIE['password']; }
else { echo "";} ?>
"/> </dd>
<dt><input type="submit" name="Submit" value="Login"/></dt>
</dl>
</fieldset>
</form>
<td width="3" bgcolor="#000000"> </td>
</tr></table>
<center><img src="crna.jpg"></center>
</body>
</html>
- 36 -
PHP sesija
Kod obeležen crnom bojom predstavlja HTML koji sam ja postavio kao osnovu stranice.
Tu sam koristeći tabelu dekorisao stranicu. Podesio boju pozadine, ubacio sliku sa tačno
definisanom veličinom koja će mi pomoći da se ova internet stranca u svakom čitaču interpretira
na isti način bez obzira da li koristimo Firefox, Operu ili bilo koji drugi čitač.
Srž ovog koda je kod forme. Taj kod je obeležen plavom bojom i njim sam napravio
formu u koju korisnik unosi tražene podatke. Ime ove forme je “form”, motoda kojom se uneseni
podaci prosleđuju je “POST” a ti podaci se prosleđuju skriptu Menage-check.php.
Kao vrednost polja za username postavio sam PHP blok u kome sam postavio uslov,
ukoliko na korisnikovom računaru postoji kolačić koji je sa moje Web lokacije i nosi ime
“username” uneti njegovu vrednost u polje, ukoliko taj kolačić ne postoji ne unositi nikakvu
vrednost u polje.
Gotovo identičan PHP blok nalazi se u delu vrednosti za polje password gde sam umesto
kolačića pod imenom “username“ postavio uslov da potraži ukoliko postoji kolačić pod imenom
password a onda ukoliko on postoji da se njegova vrednost unese u polje za “password“.
Naravno ako taj kolačić ne postoji ovaj PHP blok neće raditi ništa. Tako se korisniku pruža
mogućnost da ne mora mora svaki put da unosi svoje podatke već da su njegovu podaci već
uneseni i njegovo je samo da pritisne dugme LogIn.
Ti kolačići koji se nalaze na korisnikovom računaru mogu se obrisati tako što korisnik
pre napuštanja lokacije na stranici izabere opciju „odjavi se“.
- 37 -
PHP sesija
6.3.2 Manage-check
<?php
session_start();
if($fp=fopen("c:wamp\www\password.txt", "r"))
{ $found=false;
while(!feof($fp))
{
$line=trim(fgets($fp,1000));
$userPass=split(",",$line);
if(($userPass[0]==$_POST['myusername'])and
($userPass[1]==$_POST['mypassword']))
{
$found=true;
$_SESSION["username"]=$_POST['myusername'];
setcookie('username',$_POST['myusername'],time()+86400,'/');
setcookie('password',$_POST['mypassword'],time()+86400,'/');
header("location: LoginSuccessfull.php");
}
}
if (!$found) {
header("location: AccessDenied.php");
}
fclose($fp);
}
?>
- 38 -
PHP sesija
- 39 -
PHP sesija
6.3.3 LoginSuccessfull
Ovo je prva stranica koja se otvara korisnicima koji su se uspešno ulogovali, i njena
sadržina je sledeća:
<?php session_start();
if (!isset($_SESSION["username"])) {
header("location: index.php");
die(); } ?>
<html>
<head><title> Uspesno ulogovan </title></head>
<body bgcolor="#888888">
<table width="740" border="0" align="center" cellpadding="0"
cellspacing="0">
<tr><img src="crna.jpg">
<td width="3" bgcolor="000000"></td>
<td width="8" bgcolor="#cccccc"></td><td bgcolor="#cccccc">
Uspesno ste se ulogovali: <font size="15px" color="blue">
<?php echo $_SESSION["username"]; ?> </font>
<center><br>
<font size=10 color="000000"> Visoka tehnicka škola
strukovnih studija - Niš </font><br>
<img src="visoka_skola.jpg"> </center> <br> <br>
<p>Link do naredne stranice:
<a href="LogPage2.php">Klikni ovde</a>.</p>
<p>Izloguj se:
<a href="logout.php">Klikni ovde</a>.</p>
</td>
<td width="3" bgcolor="#000000"> </td>
</tr>
</table></body>
</html>
- 40 -
PHP sesija
Na početku ovog fajla kao i kod ostalih nalazi se session_start() funkcija i ono što će ona
uraditi je da će proveriti da li na korisnikovom računaru postoji sesioni kolačić i uporediti njegov
ID number sa sesionim na serveru i tako pokušati da nađe taj fajl ako on uopšte postoji, u slučaju
da ne postoji ili da ne postoji ni sesioni kolačić na korisnikovom računaru ova finkcija će kreirati
novu sesiju i smestiti odgovarajući sesioni kolačić u korisnikov čitač. Nakon nje dolazi izraz koji
ispituje da li je sesija sa imenom username već setovana na neku vrednost i ako nije setovana on
korisnika prosleđuje na stranicu za prijavu a datu stranicu (LiginSuccessful) zatvara. Ukoliko je
sesija setovana onda nastavlja da se izvršava sadržaj stranice.
U daljem tekstu skripta nalazi se HTML kod tj. tabela, gotovo identična kao na Index
stranici u kojoj je podešena pozadina stranice i formatira font (veličina i boja) teksta koja će biti
odštampana u php blokom. U narednom PHP bloku koji je obeležen plavom bojom ispisana je
komanda echo kojom ću odštampati sadržinu sesije pod imenom „username” tako da svaki
korisnik koji se uspešno uloguje imaće na ovoj stranici ispisan njegov username. U nastavku
HTML koda postavljena su dva hiperlinka, jedan za odlazak na stranicu LogPage2.php a drugi
za odlazak na stranicu logout.php koja služi za odjavljivanje korisnika sa sajta.
- 41 -
PHP sesija
6.3.4 AccessDenied
Ovo je stranica na koju se korisnik preusmerava ukoliko se nije uspešno prijavio na index
stranicu.
- 42 -
PHP sesija
uneo ispravno korisničko ime i password). U nastavku koda nalazi se hipertekstualna veza koja
korisnika ukoliko klikne na nju odvodi na index stranicu (stranicu za prijavu).
<html>
<head><title> Niste ulogovani </title></head>
<body bgcolor="red">
<table width="740" border="0" align="center"
cellpadding="0" cellspacing="0">
<tr><img src="crna.jpg">
<td width="3" bgcolor="000000"></td>
<td width="15" bgcolor="#dddddd"></td>
<td bgcolor="dddddd"><font size="10"><center>
<br>Niste uneli ispravan username ili password</font>
<br><img src=Nologin.gif>
</center>
<p><font size="5">Vratite se na stranicu za LogIn::
<a href="logout.php">Klikni ovde</a>.</font></p>
</td>
<td width="3" bgcolor="#000000"> </td>
</tr>
</table></body>
</html>
- 43 -
PHP sesija
6.3.5 Logout
<?php
@session_unset ();
setcookie('username', '0',time()-86400, '/');
setcookie('password', '0',time()-86400, '/');
header("Location: index.php");
?>
Ovaj skript sadrži funkciju @session_unset() koja oslobađa sve promenljive sesije, tako
da one ostaju prazne. Sledeći blok komandi postavlja kolačiće na vrednost 0 a vreme koliko će
dugo postojati na korisnikovom računaru postavlja na -86400 (jedan dan), tako brišemo taj
kolačić. I an kraju, kada se sve prethodne funkcije izvrše ovaj skript prosleđuje korisnika na
stranicu za prijavu.
- 44 -
PHP sesija
6.3.6 LogPage2
Ovo je druga Web stranica koju posetilac moje Web lokacije koji se uspešno prijavio
može da poseti. Sadržina ove stranice je gotovo identična prvoj stranici (LoginSeccessful).
Sadržaj ove stranice je sledeći:
<?php session_start();
if (!isset($_SESSION["username"])) {
header("location: index.php");
die(); } ?>
<html><head><title> Stranica B </title></head>
<body bgcolor="#g68fff">
<table width="740" border="0" align="center"
cellpadding="0" cellspacing="0">
<tr><img src="crna.jpg">
<td width="3" bgcolor="#000000"></td>
<td width="8" bgcolor="#ddeeff"></td>
<td bgcolor="#ddeeff">
Korisnicko ime: <font size="15px" color="blue">
<?php echo $_SESSION["username"]; ?> </font><center>
<br><font size=10 color="000000"> INFORMACIJE </font><center>
<br><font size="6">Visoka Tehnicka skola strukovnih studija
</font><br>
<br>Adresa: Aleksandra Medvedeva 20, 18 000 Nis, Srbija
<br>Kontakt Telefon: +381 18 588 211, 588 039, 588 040
<br>Oficialni sajt: www.vtsnis.edu.rs
<br>Email adresa: info@vtsnis.edu.rs
<p>Vratite se na pocetnu stranicu:
<a href="LoginSuccessfull.php">Klikni ovde</a>.</p>
<p>Izloguj se:
<a href="logout.php">Klikni ovde</a>.</p>
</td><td width="3" bgcolor="#000000"> </td>
</tr></center></table><body>
</html>
- 45 -
PHP sesija
Kao i ostale stranice i ova počinje funkcijom session_start() i njena uloga u ovom skriptu
je ista kao i u prethodnim. Nakon toga se nalazi isset() funkcija koja ispituje da li je vrednost
sesije pod nazivom username već setovana, ako nije ona korisnika automatski šalje na index
stranicu da bi se prijavio i završava izvršavanje tekuće stranice, a u slučaju da je ta sesija
setovana na neku vrednost izvršenje stranice se nastavlja. I ova stranica kao i ostale sadrži
HTML kod. U nastavku koda svi podaci, formatiranje pozadine stranice, zatim podešavanje font
(veličine i boje slova) kojim će biti odštampan tekst u predstojećem PHP bloku nalzi se u tabeli.
PHP blok koji je sadržan u jednoj od kolona sadrži komandu „echo” koja štampa na Web stranici
korisničko ime iz sesije pod nazivom „username”. Dakle, pronalazi Sesiju pod nazivom
“username” i štampa njen sadržaj na stranicu. Nakon PHP bloka ponovo slede HTML komade
kojima su postavljeni hiperlinkovi do stranice za Logout i stranice LoginSeccessfull. U koliko
korisnik želi da se vrati na prvu korisničku stranicu ili da se izloguje može izabrati jednu od te
dve opcije.
- 46 -
PHP sesija
6.3.7 Password
Ovo je poslednji fajl moje aplikacije. To je tekstualni fajl u kome se nalaze imena
korisnika i njegovi password-i. Da bi ovaj fajl bio upotrebljiv tj. da bi PHP mogao ispravno da
raspolaže njime, ime korisnika i password moraju biti odvojeni samo jednim zarezom i svaki
korisnik tj njegovo ime i password moraju bitu u posebnom redu. Sadržina ovog fajla izgleda
ovako:
Velickovic,prof
milan,radivojko
fliper,fliper
f,r
- 47 -
PHP sesija
7. ZAKLJUČAK
Korišćenje sesije omogućava da se približimo korak bliže korisniku koji poseti našu
intrernet lokaciju. Koristeći sesiju ja sam uspeo da interaktivno povežem više stranica koje sadrži
moja Web lokacija. Na svakoj posećenoj stranici moja aplikacija je svesna prisustva tog
određenog korisnika. Dakle problem koji postoji kod samog načina funkcionisanja HTTP
protokola (da se svaki zahtev šalje nezavisno od prethodnog i da zbog toga ne možemo imati
kontrolu nad time jeste li taj korisnik već radio nešto u prethodnom zahtevu ili ne) prevazišao
sam korišćenjem sesije.
To je samo jedna, dobra strana sesije, ali isto tako kod sesije poseduje i neke mane. To je
na primer da smo mi upravo kreirali fajl na našem serveru i taj fajl je veoma mali jer jedino što
sadrži je korisničko ime, ali vremenom taj fajl može postajati veći i veći. Mi u njega možemo da
smestimo veliku količinu podataka ako imamo veću aplikaciju i možemo da dođemo do stotine
ili par hiljada fajlova zato moramo da razmišljamo i o čišćenju tih fajlova s vremena na vreme.
Za to postoje načini koji su iz domena administracije servera koji pomažu u tome. Ako budemo
radili neki ozbiljniji industrijski sajt možemo raditi session cleanup s vremena na vreme i brisati
sesije koje nisu korišćene neki određeni period. Naravno kada to radimo mi brišemo i
korisnikove podatke ali sesija će to srediti tako što će potražiti taj fajl i reći on više ne postoji i
kreirati novu sesiju za korisnika.
- 48 -
PHP sesija
LITERATURA
[2] Kris Jamsa,Konrad King, Andy Anderson, HTML i Web dizajn kroz praktične
primere, Mikro knjiga Beograd, 2003.
[5] Video tutorial PHP with MySQL - http://www.Lynda.com zadnja poseta: 20.05.2009
[9] http://sr.wikipedia.org/wiki/Mrežni_protokol#Internet_protokol_stek
zadnja poseta: 15.06.2009
- 49 -