PHP Skripta 2013

Embed Size (px)

Citation preview

SKRIPTA IZ PREDMETA INTERNET TEHNOLOGIJEPHP

SADRAJ

3Uvod

31PHP OKRUENJE

51.1Razlika izmeu server-side i client-side skripti

72OSNOVE PHP KODA

72.1Osnovna sintaksa, promenljive i operatori

92.2Promenljive, tipovi podataka, konstante

102.3Funkcije

122.3.1Funkcije za upravljanje varijablama

132.4Domen vaenja promenljive

142.5Operatori

152.6PHP uslovne naredbe

182.7PHP petlje

192.8Nizovi

232.9Rad sa stringovima

283NAPREDNA SINTAKSA PHP KODA

283.1Date

293.2Include and Require

303.3ObjektnoOrijentisanoProgramiranje u PHP

323.4PHP napredne funkcije za rukovanje fajlovima

333.5Superglobals

343.6Register globals

353.7PHP napredne funkcije za rukovanje cookies

373.7.1Slanje header-a

383.8PHP napredne funkcije za sesijama

443.9PHP napredne funkcije za upravljanje grekama

474UVOD U FORME

474.1O formama uopteno

484.2Metode slanja i prihvatanja podataka

514.3Provera metode pristupa dokumentu / skripti

524.4Forme i srpski znakovi

524.5Prikaz i obrada unutar jednog dokumenta

544.6Elementi za unos podataka

544.7Text box polje

544.8Text area

564.9Hidden polje

564.10Checkbox

584.11Upload fajla

595Dinamiki linkovi

Uvod

Server - side skripting je web server tehnologija koja omoguava da se korisniki zahtevi obrauju pomou skripti koje se izvravaju na serverskoj strani kako bi se generisale dinamike stranice. Najee se koristi da bi se interaktivne web stranice povezale sa bazama podataka, radi identifikacije korisnika, auriranja sadraja, stvaranja raznih diskusionih grupa i jo zbog mnogo toga. Razlika izmeu skriptovanja na serverskoj i korisnikoj strani je u tome to se kod korisnike strane skripte izvravaju u web browser-u korisnika, najee pomou JavaScript-a.

Najzastupljenije tehnike serverske strane:

Common Gateway Interface

Active Server Pages

Java Servlet i Java Server Pages

PHP

PHP je open source jezik koji se koristi za razvoj server-side aplikacija, kao i dinamikog Web sadraja. PHP dozvoljava interakciju sa velikim brojem relacionih baza podataka kao to su MySQL, Oracle, IBM D2, Microsoft SQL Server, PostgreSQL i SQLite. PHP radi na veini operativnih sistema dananjice, kao to su UNIX, Linux, Windows i Mac OS i moe da interaguje sa veinom Web servera.

Personal Home Page Tools je predstavio PHP 1995. godine, a dve godine kasnije su razvoj nastavila dva Izraelska programera. Od 1999. godine se zasniva na Zend engine-u. PHP je prvo bio akronim za Personal Home Page Tools, da bi kasnije promenio naziv u Hypertext Preprocessor.

PHP je stekao popularnost zbog svoje jednostavnosti i sintakse nasleene iz programskog jezika C. Tokom vremena jezik se proirivao i sticao mogunosti za objektno orijentisano programiranje, naroito od verzije 5.0. Nalikuje jeziku C++ u smislu da dozvoljava i isto-proceduralno programiranje ali omoguava i korienje klasa i drugih koncepata objektno orijentisanog programiranja (nasleivanje, apstraktne metode, interfejsi itd.).

Danas, PHP je instaliran na vie od 20 miliona sajtova i preko million web servera. Poslednja realizovana stabilna verzija je 5.5.0 iz juna 2013.god.

PHP OKRUENJE

Neke od osnovnih odrednica PHP a su:

PHP je akronim za Hypertext Preprocessor

server side skriptni programski jezik

skripte se izvravaju na serveru

podrava rad sa razliitim bazama podatama (MySQL, Informix, Oracle, Sybase, Solid, PostgreSQL, Generic ODBC, itd.)

open source softver (OSS)

radi na razliitim platformama (Windows, Linux, Unix i td.)

kompatibilan je sa skoro svim serverima koji se danas koriste (Apache, IIS, itd. )

lak je za uenje i efikasno funkcionie na strani servera.

Za PHP fajlove, bitne su sledee injenice:

mogu da sadre tekst, HTML tagove i skripte

vraaju se klijentskom browser u kao HTML tekst (plain HTML)

imaju ekstenziju: .php, .php3 ili .phtml

Najpopularnija arhitektura u okviru koje se PHP koristi je WAMP (Windows/Apache/MySQL/PERL/PHP). Windows je operativni sistem gde se instaliraju ostali elementi pomenute arhitekture. Apache je open source Web server, tako da se i na lokalnoj maini uz pomo Apache - a, moe simulirati klijent/server okruenje. MySQL je open source server baze podataka koji podrava SQL (Structured Query Language) i idealan je kako za manje, tako i za vee baze podataka. Ako se PHP koristi u kombinaciji sa MySQL om moe se napraviti multiplatformska aplikacija, to znai da se moe razviti u Windows okruenju, a da se potom koristi na npr. Unix mainama.

PHP je bogat funkcijama za manipulisanje mnogo razliitih tipova sadraja. Od manipulisanja grafikom (png, jpg, flash) do loado-vanja .NET modula i rada sa XML-om

Da bi se implementirala pomenuta arhitektura, neophodno je uraditi sledee:

Download Apache Web servera (i njegova instalacija na lokalnoj maini).

Download MySQL, server baze podataka i njegova instalacija na lokalnoj maini.

Download PHP - i njegova instalacija na lokalnoj maini.

Takoe treba napomenuti da je mogue gore navedene komponente skinuti u formi paketa koji sadre sve pomenute komponente. Najpoznatiji paketi tog tipa su: EasyPHP, WAMP i XAMPP. Download i korienje ovih paketa je takoe besplatno.

Program koji se napie u PHP-u ne zahteva prevoenje (kompajliranje), nego se interpretira pri svakom izvravanju. PHP interpreter moe raditi po CGI principu, odnosno tako to e interpreter postojati kao eksterna aplikacija koja se poziva da izvri datu skriptu svaki put kad bude zahtevana od nekog korisnika, a moe biti instaliran i kao modul veb-servisa. Druga varijanta je danas u najveoj upotrebi jer prua znatno veu brzinu izvravanja - interpreter je na taj nain uvek uitan u memoriju te se ne mora pozivati spoljanji program.

Uobiajen scenario po kom se izvravaju PHP skripte na web serveru je sledei:

klijent (korisnik Interneta koji koristi neki brauzer) zahteva PHP stranicu sa servera

server prosleuje zahtev servisu za veb (program veb-server na serveru)

veb-server prepoznaje da se trai PHP datoteka

ne alje njegov sadraj klijentu, nego ga izvrava kao program pomou PHP modula

izlazni tekst programa (standardni izlaz) se alje klijentu kao rezultat zahteva

klijent prepoznaje vrstu rezultata (HTML kod, slika, PDF sadraj, arhiva itd.)

rezultat se prikazuju klijentu na odgovarajui nain

Razlika izmeu server-side i client-side skripti

Server side skripte se izvravaju na serveru kada server primi zahtev za obradom. Nakon zahteva server izvrava kod i na osnovu njega generie HTML kod i alje ga klijentu. To znai da stranica koja se prikazuje u pretraivau klijenta ne postoji u tom obliku nigde na serveru odakle ju je klijent primio.

Glavni predstavnik client-side grupe jezika je JavaScript. Kod pisan u JavaScriptu je obino umetnut u HTML stranicu i izvrava se tek u klijentovom pretraivau.

Osnovna razlika izmeu PHP i HTML stranica je u nainu na koji web server upravlja njima. Kada web serveru stigne zahtev za HTML stranicom, web server preduzima sledee operacije:

ita zahtev

Pronalazi stranicu na serveru

alje stranicu ka browser-u

Slika 1 Obrada zahteva za HTML stranicom

Kada web server dobije zahtev za PHP stranicom, umesto slanja statike HTML stranice, server preduzima odreene akcije u skaldu sa PHP kodom:

ita zahtev

Pronalazi stranicu na serveru

Obrauje sve instrukcije koje se nalaze u PHP fajlu, in a taj nain kreira ili modifikuje stranicu

alje novu stranicu ka browser-u

Slika 2 Obrada zahteva za HTML stranicom

Server-side obrada omoguava:

Smanjuje koliinu saobraaja izmeu server i klijenta

Otklanja problem kompatibilnosti browser-a

Obezbeuje razliite tipove informacija za klijente

Poboljava sigurnost aplikacije

Moda bi bilo najbolje malo detaljnije razmotriti razlike izmeu njih na jednom trivijalnom primeru. Neka je na primer, potrebno napisati skriptu koja prikazuje tano vreme negde na stranici. Iako ovo zvui kao vrlo trivijalan i lagan primer, gotovo ga je nemogue izvesti. Zato? Prvo pitanje koje treba postaviti je 'Koje je vreme tano vreme?'. Ono na serveru ili ono na klijentovom raunaru? Ove dve skripte e retko kada prikazati isti rezultat.

Primer 1 prikaz vremena kod klijenta

var v = new Date()document.write(v.getHours())document.write(":")document.write(v.getMinutes())document.write(":")document.write(v.getSeconds())

Primer 2 prikaz serverskog vremena

OSNOVE PHP KODA

Osnovna sintaksa, promenljive i operatori

U PHP fajlu, blok koji je okruen jezikim strukturama se smatra PHP kodom i izvrava se, a ostatak van tih znakova se smatra tekstom koji jednostavno treba da se ispie na standardni izlaz, bez interpretiranja. Ako se PHP kod izvrava na serveru koji podrava skraenice, PHP blok moe poeti i sa tagom. PHP kod se moe napisati bilo gde u okviru taga HTML dokumenta. U nekim sluajevima, PHP, kod se pie u okviru taga.

Sa regularnim .html fajlovima, HTTP server (npr. Apache) samo prenosi sadraj stranice u

browser. Server ne pokuava da razume ili obrauje HTML fajl to je posao browser-a. Fajlovi sa .php ekstenzijom se skeniraju i obrauje se kod.

PHP fajl sadi standardne HTML tagove i PHP skript kod. Sledi primer dva prosta PHP koda koji na ekranu browser a ispisuju Zdravo svete!.

Primer 3

Primer outputa Zdravo svete

Primer 4

Primer outputa Zdravo svete

Kao to iz primera vidi, svaka linija PHP koda mora da se zavri takom zarez. Taka zarez se koristi da bi se jedan set instrukcija razdvojio od drugog seta. Postoje dve osnovne komande koje slue za prikazivanje teksta na browser u: echo i print. Kao to je ve reeno, PHP kod se nalazi u okviru HTML koda i izvrava se na serveru. Tek kada se PHP kod izvri na serveru, output se alje do browser - a klijenta koji izvrava HTML kod i prikazuje PHP kod koji je ve izvren na serveru,tj. prikazuje i rezultat PHP koda i rezultat HTML koda. Ako se na primer u PHP skripti koristi komanda echo
, deava se sledee:

Web server izvrava echo
kod.

Rezultat tog koda e biti
.

Zatim, Web server alje browser u klijenta izvreni kod.

Kada browser klijenta vidi
,kao rezultat PHP koda koji treba da prikae, razumee da je rezultat PHP koda ustvari HTML kod koji browser treba da izvri. Browser e izvriti HTML kod i konkretno u ovom primeru, kursor e prei u sledei red.

Pomou echo naredbe u PHP skriptama, mogu se pisati bilo koji HTML kodovi koje browser treba da izvri.

Unutar koda je mogue prebaciti se, u bilo kojem trenutku, iz HTML moda u PHP mode. Cak i unutar if, for i ostalih kontrolnih struktura. Ovo omoguuje rad sa template-ima u kojima se na isti nain prikazuju razliiti podaci iste strukture. Ovo je Ilustrovano jednostavnim primerom:

Primer 5

Untitled

Rezultat gornjeg koda je:

Marko Markovic

Za ispis sadraja varijable koriena su dva razliita naina koji su rezultirali istim krajnjim ispisom. Naime unutar se nalazi php kod koji e se izvriti ukoliko se u njemu ne nalaze neke sintaksne greke. Druga metoda ispisa je izgledala ovako : . Ova metoda se koristi kada je potrebno ispisati neku varijablu ili string. Ova linija je identina samo to je umesto echo naredbe korien znak = koji PHP-u govori da ispie ono to se nalazi

izmeu oznaka.

Kao to i u HTML u postoje komentari, tako se komentari mogu navoditi i u PHP bloku. Postoje dve osnovne vrste komentara u PHP u: jednolinijski (single line comment) i vielinijski (large comment block) komentari. Za jednolinijske komentare se koristi symbol //, a za vielinijski komentari se piu izmeu /* i */ simbola. Sledi primer.

Primer 6

Primer PHP komentara

Promenljive, tipovi podataka, konstante

Promenljive (varijable) se u PHP u koriste za uvanje konkretnih vrednosti kao npr. tekst stringova, brojeva ili nizova. Kada se jednom promenljiva postavi, ona se moe koristiti vie puta u PHP skripti. Sve varijable u PHP u poinju simbolom dolar simbolom $ . Pravilno postavljena (setovana) promenljiva ima sledeu sintaksu:

$ime_promenljive=vrednost;

U PHP u promenljiva ne mora da se deklarie pre nego to se postavi, to znai da ne mora da se navede tip promenljive kao u drugim programskim jezicima. U PHP u se promenljive automatski deklariu kada se koriste.

Postoje neka pravila za dodeljivanje imena promenljivima koja moraju da se potuju:

Ime promenljive mora poeti slovom ili doljnom crtom _ .

Ime promenljive moe da sadri samo alfa numeriki karakter i doljnu crtu (a Z, 0 9 i _)

Ime promenljive ne moe da sadri razmak (space). Ako ime promenljive treba da sadri dve rei, koristi se _ ( npr. moja_promenljiva) ili velika slova (npr. mojaPromenljiva).

Promenljiva se ispisuje na ekranu browser u pomou naredbe echo, tako to se jednostavno navede ime promenljive nakon echo naredbe:

echo mojaPromenljiva;

Ako se pomou jedne echo naredbe prikazuju dve promenljive, koristi se tzv. separator simbol . .

echo mojaPromenljiva1 . . mojaPromenljiva2;

U primeru koda, korien je blank prostor , da bi se odvojilo prikazivanje promenljivih, tj. da se ne bi prikazale promenljive jedna uz druguPrimer 7

Primer postavljanja promenljivih

U PHP-u ne postoje fiksni tipovi podataka. Naime, ne mora se definisati tip varijable pre njenog korienja i varijabla se moe deklarisati bilo kada unutar skripte i pridruivati joj se razliiti tipovi podataka tokom izvoenja skripte (iako ovo nije uobiajena niti previe pametna praksa). Isto tako se moe menjati tip podataka neke varijable jednog te istog sadraja.

Tipovi podataka koje podrava PHP su:

Celi brojevi (integer)

Realni brojevi (floating-point numbers )

Tekstualni podaci (String)

Logike varijable

Nizovi

Objekti

Konstante

Konstante su vrednosti koje ne menjaju svoju vrednost. Za kreiranje konstanti u PHP, koristi se funkcija define ()define("kompanija", "FON");

Na ovaj nain je formirana konstanta kompanija i dodeljena joj je odgovrajua vrednost

Funkcije

Funkcije u PHP-u se definiu sledeom sintaksom:

Primer 8

Primer 9: Funkcije sa povratnim rezultatom:

U gornjem primeru su umesto varijabli $br1 i $br2 koriene i varijable imena $broj1 i $broj2. Ovo je mogue zato to se funkciji ne daju same varijable ve njihove vrednosti koje se uvaju u lokalnim (funkcijske) varijablama koje postoje samo za vreme izvoenja funkcije. Ukoliko je potrebno funkcijom izmeniti sadraj neke varijable, ona se mora dati funkciji pomou reference (pass by reference). Ne postoji oznaka za referencu u ovom sluaju pri pozivu funkcije. Sama postavka funkcije ini da se varijabla daje funkciji pomou reference. U ovom sluaju je korieno davanje varijable pomou reference u liniji povecaj($neki_broj,10) .Primer 10 : Slanje varijabli pomou reference

Nije obavezno koristiti isto ime varijable u glavnom programu i funkciji, iako je mogue. Rezultat e u oba sluaja biti isti.

Primer 11 : Funkcije sa default vrednostima

Rezultat :

Friider je pun

__________________

Friider je prazan

Pri radu sa funkcijama koje imaju default vrednost bitno je da ta vrednost mora biti konstanta (string ili broj). Isto tako ukoliko funkcija ima vie argumenata od kojih jedan ili vie imaju default vrednosti oni moraju biti sa krajnje desne strane liste argumenata iza argumenata bez default vrednosti:

Primer 12

Funkcije za upravljanje varijablama

Php poseduje niz ugraenih funkcija za rad sa varijablama:

gettype()

Ova funkcija vraa vrednost tipa promenljive. Mogue vrednosti:

"double"

"string"

"array"

"object"

"class"

"unknown type"

settype()

Funkcija postavlja vrednost tipa podataka:

array,

double, integer,

object

string.

isset() i unset()

unset() se koristi za brisanje promenljive i oslobaanje memorijske lokacije koju ona zauzima.

isset() proverava da li je promenljivoj zadata vrednost.

is...() functions

Funkcija ispituje tip promenljive:

is_int(), is_long(), is_double(),is_real(), is_string(), is_array(), is_object()

Domen vaenja promenljive

Domen vaenja promenljive definie oblast u kojoj je promenljiva dostupna program.

Kao izlaz se dobija "m". Varijabla $position unutar funkcije je dostupna samo u okviru funkcije i ne moe joj se pristupiti van nje.

Ukoliko se koristi kljuna re global, promenljiva postaje globalno dostupna.

Ako se definie varijabla kao static u nekoj funkciji, ona se inicijalizuje prilikom prvog poziva funkcije i postavlja na definisanu vrednost. Svaki sledei poziv funkcije nee dovesti do nove inicijaliizacije.

OperatoriOperatori koji se koriste u PHP script programskom jeziku:

Aritmetiki operatori

OperatorOpisPrimerRezultat

+Sabiranjex=2x+24

-Oduzimanjex=25-x3

*Mnoenje x=4x*520

/Deljenje15/55/232.5

%Moduo5%210%810%2120

++Uveanje za 1x=5x++x=6

--Smanjenje za 1x=5x--x=4

Operatori dodele

OperatorPrimerJe isto kao i

=x=yx=y

+=x+=yx=x+y

-=x-=yx=x-y

*=x*=yx=x*y

/=x/=yx=x/y

%=x%=yx=x%y

Operatori poreenja

OperatorOpisPrimer

==Jednako kao 5==8 vraa false

!=Nije jednako kao 5!=8 vraa true

>Vee od5>8 vraafalse

=8 vaa false

PHP uslovne naredbe

Kao i u drugim programskim jezicima, u PHP u se koriste uslovne naredbe. If else uslovna naredba se koristi ako postoji neki uslov koji treba da se testira. Ako je zadati uslov taan (true), izvrava se jedan set instrukcija, a ukoliko je uslov netaan (false), izvrava se drugi set instrukcija. Sintaksa:

Primer 14

If (uslov) {Kod koji se izvrsava ukoliko je uslov true;}else {kod koji se izvrsava ukoliko je uslov false;

}

Primer 15:

Primer if else uslovne naredbe

Primer 16: Tercijarni operator

Ako treba da se izvri programski kod ukoliko su jedan ili vie uslova tani, koristi se elseif uslovna naredba.

Primer 17

Primer elseif uslovne naredbe

Ukoliko treba da se izvri jedan ili vie blokova programskog koda, koristi se switch naredba. Switch naredba se koristi zbog izbegavanja velikih blokova programskog koda if elseif else naredbi. Sintaksa:

switch (promenljiva)

{

case sluaj1:

kod koji se izvrsava ako je promenljiva = sluaj1 ;

break;

case sluaj2:

kod koji se izvrsava ako je promenljiva=sluaj2;

break;

case sluaj3:

kod koji se izvrsava ako je promenljiva=sluaj3;

break;

default:

kod koji se izvrsava ako vrednost promenljive nije jednaka ni jednom navedenom sluaju;

}

Primer 18: Primer switch naredbe

Primer switch naredbe

Kljuna re break oznaava zavretak grane. Ukoliko se izostavi izmeu dve grane naredbe, obe grane e se izvriti ukoliko je via (ona koja sledi pre) aktivirana. Naredbe e se izvravati sve dok se ne pojavi break ili zavretak switcha.

Primer 19

PHP petlje

esto se deava da je potrebno odreeni kod izvriti vie puta. Da bi se ovo postiglo, bez suvinog kucanja, koriste se petlje. U PHP u se koriste sledee petlje:

while odreeni kod se izvrava sve dok je zadati uslov true.

do ... while odreeni kod se izvrava jednom i onda se u okviru petelje ponovo izvrava sve dok je specijalni uslov true.

for kod se kroz petlju izvrava onoliko puta koliko je to korisnik odredio

foreach kod se kroz petlju izvrava za svaki element niza

While naredba e izvravati blok koda ako i dok je uslov true. Sintaksa:

while(uslov)

programski kod koji se izvrava;Primer 29:

Primer while naredbe

Do while petlja e izvriti blok programskog koda makar jednom, i onda e ponavljati petlju dok je uslov taan. Sintaksa:

do

{

kod koji se izvrsava;

}

While(uslov);

Primer 30:

Primer za do...while petlju

Primer 31: Primer za for petlju:

Primer za for petlju

Foreach petlja se koristi da bi se prikaziali elemente niza. Za svaku petlju, vrednost tekueg elementa niza se dodeljuje nekoj promenljivoj, pa se u sledeoj petlji vrednost sledeeg elementa niza dodeljuje istoj toj promenljivoj itd. Sintaksa:

foreach(niz as vrednost)

{

Kod koji se izvrsava;

}

Nizovi

Kao to je poznato, u nizovima se uvaju vrednosti elemenata koji su istog tipa i koji su slini na neki nain. Ti elementi se zovu elementi niza i svaki element ima svoj jedinstven ID (Identifier) i moe mu se lako pristupiti. Postoje tri tipa nizova:

Numeriki niz, gde elementi imaju numerike ID kljueve

Asocijativni niz (associative array), gde je svaki ID klju asociran sa vrednou, tj. postoji par klju=>vrednost (key=>value)

Multidimenzioni nizovi (multidimensional array), niz koji se sastoji od jednog ili vie nizova.

Element niza moe pripadatai bilo kom tipu podataka, bez obzira na ostale elemente.

U PHP u, numeriki nizovi se mogu kreirati na dva naina:

Automatskim dodeljivanjem ID kljueva, npr.: $niz=array(Marko,Petar,Srdjan,Djura). U ovom primeru, Identifikator (ID) elementima niza je automatski dodeljen, pa tako Marko ima ID=0, Petar ID=1 itd.

Runim dodeljivanjem ID kljueva, npr.

$niz=array();

$niz[0]=Marko;

$niz[1]=Petar;

$niz[2]=Srdjan;

$niz[3]=Djura;

Primer 32

Primer numerickih nizova

Kod asocijativnih nizova (associative arrays), svaki ID klju je asociran sa odreenom vrednou. U PHP u, asocijativni nizovi se mogu kreirati na dva naina:

Dodeljivanjem ID kljueva i vrednosti svim elementima niza odjednom, npr. $niz=array(Marko=>32,Petar=>28,Srdjan=>20, Zdravko=>56). U navedenom primeru, kljuevi su imena, a brojevi su vrednosti.

Dodeljivanjem ID kljueva i vrednosti svakom elementu niza posebno, npr.

$niz=array();

$niz[Marko]=32;

$niz[Petar]=28;

$niz[Srdjan]=20;

$niz[Zdravko]=56;

Primer 33: Primer asocijativnih nizova:

Primer asocijativnih nizova

Kod multidimenzionih nizova, svaki element moe da bude nov niz i svaki element pod niza takoe moe da bude niz itd.

Primer 34: Primer multidimenzionih nizova:

Primer multidimenzionih nizova

Nizovi su osnovni tip elementa koji se najee susree u radu sa bazama podataka. Naime, kada se izvri upit na bazu, vraeni rezultat je niz. Osnovne operacije nad nizovima su etanje kroz niz, sortiranje niza, pretraivanje niza pa lepljenje niza u string to je vec objanjeno u prethodnom poglavlju.

Primer 35: Prolaenje kroz jednodimenzionalni niz

Za prolaenje, koriena je foreach petlja koja u svakom svom ponavljanju uzima novi element iz niza. Uzima ih od manjeg indeksa prema veem. Isti ovaj uinak se moe postii na vie raznih naina, od kojih je jedan da se prvo proveri ukupan broj elemenata niza pa da se for petljom proeta kroz niz.

Za traenje vrednosti u nizu koristi se funkcija

array_search($trazeno,$niz_za_pretraziti):

Funkcija prima dva obavezna argumenta. Prvi argument je vrednost koja se trai, a drugi je niz u kojem se trai vrednost. Postoji i trei, neobavezni, argument koji moe biti true ili false. On slui ukoliko se eli uporediti i tip podataka.

Recimo

$int_broj=111 i $str_broj='111'

U sluaju da je trei argument postavljen na true ne bi rezultiralo pronalaenjem vrednosti u nizu. Element iz niza se izbacuje unset($var) funkcijom. Funkcija unset() unitava datu varijablu. Ukoliko je potrebno izbaciti samo jedan element niza funkciji se daje taj niz sa eljenim indeksom ($arr_niz[16]) i on e biti izbaen.

U primeru se element izbacuje ovim redom

unset ($arr_mailovi[$nadeni]);

Primer 36: Sortiranje niza

U prvom sluaju niz je sortiran po vrednostima niza uzlazno. Za sortiranje je koriena funkcija asort($arr_niz). Njoj se kao argument daje niz koji se sortira. Funkcija ne vraa vrednost, ve samo sortira niz, i nakon njenog izvrenja je zadati niz sortiran i takvom mu se pristupa kasnije. Sortiranje se obavlja tako da se elementi niza sortiraju uzlazno. Ono to je bitno kod ove funkcije je da se odrava odnos indeks => vrednost, tako da e nakon sortiranja vrednost koja se nalazila na

indeksu 3 i dalje biti na tom indeksu, samo e njena pozicija u samom nizu moda biti drugacija.

U drugom sluaju niz se sortira silazno (od najvee prema najmanjoj vrednosti). To se radi pomou funkcije arsort($arr_niz). Ova funkcija je identina asort() funkciji po svojim osobinama osim po redosledu elemenata nakon sortiranja.

U treem sluaju niz se sortira po kljuu. Znai da e kljuc (indeks) sa manjom vrednou biti pre u nizu poto funkcija ksort($arr_niz) sortira niz po indeksu uzlazno. Odnos indeks => vrednost je zadran nakon sortiranja.

Poslednji sluaj sortira niz po indeksu, ali silazno. Tu radnju obavlja funkcija krsort($arr_niz). Ona je identina funkciji ksort(), samo to sortira niz obrnutim redosledom.

Rad sa stringovima

Stringovi su najei tip podataka kojim se radi u PHP-u zbog prirode PHP-a kao alata za izradu HTML stranica na serveru. U PHP-u se nalaze ve gotove funkcije koje automatizuju veinu operacija koje su potrebne za manipulisanje i rad sa sadrajem string podataka.

Sadraj string tipa varijable se nalazi izmeu navodnika. Mogu se koristiti dupli i jednostruki navodnici. Postoje razlike u ispisu sadraja zavisno od tipa navodnika koji se koriste. Korienjem duplih navodnika moe se koristiti 'special characters'. To su posebni znakovi koji govore PHP-u da izvri odreene radnje pri ispisu sadraja varijable i slede iza znaka backslash ( \ ). On se ujedno koristi za preskakanje odreenog znaka unutar stringa.

Lista escape znakova:

ZnakZnaenje

\tTab razmak (HT ili 0x09 u ASCIIu)

\\Backslash

\$Dolar znak

\"Dupli navodnik

\nNovi red(LF ili 0x0A u ASCIIu)

Ovi znakovi nee imati uticaja na izgled same stranice u prozoru browsera, ve ce njihov uticaj biti vidljiv tek pri pregledu source-a dokumenta. Ovim se moe sasvim sakriti injenica da je stranica stvorena putem PHP-a i pomou njih je lake pronai greku u generisanoj stranici. U protivnom bi se sav sadraj ispisao u jedan red bez razmaka. U tom neredu bi bilo teko nai bilo ta, a kamoli greku u ispisu, ako se trai u source view-u.

Ukoliko je potrebno da se neki tekst prebaci u novi red pri gledanju stranice u prozoru browsera treba se posluiti
i slinim tagovima. Jo jedan bitna razlika izmeu duplih i jednostrukih navodnika je ta da e se pri korienju duplih navodnika sadraj varijable ispisati a pri korienju jednostrukih navodnika ispisae se ime varijable skupa sa znakom $.

Primer 21

Ispisuje:

Moje ime je Internet tehnologije

Primer 22

Moje ime je $str_ime

U PHP-u je takoe mogue spajanje vie stringova u jedan ispis. Ponekad pri radu sa stringovima, a posebno pri obradi podataka iz formi, podaci u sebi sadre nepotrebne razmake na poetku ili kraju stringa. Pod razmacima se podrazumevaju : razmak od jednog mesta(space), tab razmak od vie space-ova (escape znak \t), znak za novi red na kraju reda (escape znak \n).

Treba obratiti panju na to da se nepotrebni prazni prostor i rezultati escape znakova ne vide u HTML pogledu dokumenta ve tek kada pogledate source dokumenta ili ukoliko se nalaze unutar tagova za prikaz preformatiranog teksta.

Ovo su neki primeri:

Primer 23: Izbacivanje nepotrebnog praznog prostora iz stringa

U ovom primeru su koriene tri funkcije za izbacivanje praznina sa poetka i kraja stringa. Prva je ltrim(string) - ltrim izbacuje praznine i escape znakove sa leve strane (poetka) stringa. Druga je rtrim(string) - rtrim izbacuje praznine i escape znakove sa desne strane (kraja) stringa. Trea je trim(string) - trim izbacuje praznine i escape znakove sa obe strane stringa. Ove funkcije mogu izbaciti praznine samo sa poetka i kraja striga dok one unutar stringa ostaju na svom mjestu.

PHP je opremljen funkcijama za pretraivanje string tipova podataka na vie naina i metoda. Najjednostavnija metoda je korienjem string funkcija, a sintaksiki malo komplikovaniji nain je korienjem Regular expresiona.

Primer 24: Pretraivanje stringa

strstr($str_zadati,$str_trazeni)

Primer 25 Pronalaenje pozicije prvog pojavljivanja znaka ili stringa u stringu i ispis ukupnog broja pojavljivanja.

Ispisivanje pozicije pronadjenog stringa ili znaka unutar zadatog stringa

Ukupan broj pojavljivanja traenog znaka ili stringa

strpos($string,$trazeni)

Funkcija vraa integer vrednost koja predstavlja poziciju prvog znaka traenog stringa unutar zadatog stringa. Ukoliko traeni string ne postoji unutar zadatog stringa funkcija vraa vrednost False.

substr_count($str_zadani,$str_trazeni)

Funkcija vraa integer vrednost koja reprezntira ukupan broj pojavljivanja traenog stringa unutar zadatog stringa. Funkcija vraa 0 ukoliko nema pojavljivanja. Ovo se interpretira kao False vrednost unutar if strukture.

Kada se koristi promenljiva tipa string, mogu se koristiti ugraene PHP funkcije (built in PHP functions) strlen() i strpos() koje izvravaju odreene operacije nad stringom Funkcija strlen() izraunava duinu stringa, tj. odreuje od koliko se karaktera dati string sastoji. Sintaksa:

Strlen(ime promenljive kojoj je dodeljen dati string ili sam string);

Primer 26 Primer strlen() funkcije:

Strpos() funkcija trai drugi string ili karakter u okviru stringa i vraa broj pozicije gde se nalazi karakter, odnosno broj pozicije odakle poinje string. Raunanje pozicija poinje od nule.

Strpos (string ili ime promenljive, karakter ili string kome se odreuje pozicija).

Primer 27: Primer strpos() funkcije:

Primer strpos funkcije

Primer 28: Rezanje i lepljenje stringa

// rezanje stringa

$arr_izrezani=explode(" ",$string);

Ovaj fragment koda ree zadati string tako da podeli zadati string na fragmente od kojih je svaki novi fragment deo originalnog stringa izmeu dva znaka data kao uslov razdvajanja u prvom argumentu funkcije. Svi novi fragmenti se uvaju u nizu u kojem indeksi odgovaraju rednom broju fragmenta.

String u vie redova

Primer za for petlju

NAPREDNA SINTAKSA PHP KODA

Date

PHP ugraena funkcija date() je korisna i esto koriena funkcija. Ova funkcija formatira timestamp (broj sekundi koji je protekao od 1. Januara 1970. godine) u razumljiv oblik prikazivanja datuma i vremena. Sintaksa:

date(format, timestamp)

Prvi parametar date funkcije format odreuje format prikazivanja datuma i vremena. Evo nekih slova koja se mogu koristiti uz format parametar:

FormatZnaenjePrimer

aam ili pmAm

AAM or PMAM

dDan u mesecu01

DDan u nedeljiSun

FIme mesecaJanuary

hSat u 12 - oasovnom formatu 04

HSat u 24 - oasovnom formatu16

gSat u 12 - asovnom formatu bez nule ispred4

GSat u 24 - asovnom formatu bez nule ispred16

iMinuti35

jDan u mesecu2

lDan u nedelji (ime)Sunday

LPrestupna godina (1 da, 0 ne)1

mMesec u godini tri slovaJul

MMesec u godini, potpun nazivJuly

NMesec u godini (redni broj)7

YGodina u standardnom formatu1999, 2008

yGodina zapisana pomou dva simbola99, 08

sSekund58

SSufiks za danth, nd, st, rd

RStardizovan format datumaThu, 15 Dec 2005 16:49:39-0600

UTimestamp1134512479

Primer 37

Primer za date() funkciju

Primer 38: Maketime

Include and Require

U PHP fajl moe da se unese sadraj nekog drugog fajla, pre nego to PHP fajl server izvri uz pomo funkcija include() ili require(). Obe navedene funkcije su skoro iste, jedino se razlikuje nain na koji tretiraju greke u kodu (code errors). Funkcija include() upozorava, ali skripta nastavlja da se izvrava, dok funkcija require() generie kljunu greku (fatal error) i izvravanje skripte se prekida. Ova tehnologija je poznata ka SSI (Server Side Includes).

Dve navedene funkcije se koriste u kreiranju funkcija, hedera (header), futera (footer) ili drugih elemenata koji se mogu koristi vie puta, na razliitim Web stranama.

Funkcija include() uzima ceo sadraj eljenog fajla i kopira ga u fajl u kome se poziva include() funkcija. Kao primer, uzeta su dva fajla, jedan se zove include.php, a drugi fajl, koji e biti ukljuen u prvi, zove se linkovi.html. Primer 39: Kod fajla linkovi.html

Linkovi

Kliknite ovde ako hocete na sajlt Googl - a
Kliknite ovde ako hocete na sajt Fon - a
Kliknite ovde ako hocete na sajt Yahoo - a

Primer 40 : Kod fajla include.php:

Primer za include()

ObjektnoOrijentisanoProgramiranje u PHPKao i veina drugih naprednih programskih jezika i PHP omoguava objektno orijentisano programiranje. Osnovni koncepti objektnog programiranja su u potpunosti podrane u PHP:

Abstrakcija

Enkapsulacija

Nasleivanje

Klasa se definie pomou kljune rei class.

Da bi se koristio objekat prvo se mora napraviti klasa (class) sa nekim funkcijama i poljima u njoj, pa se pozivati unutar koda. Varijable unutar klase su proporties tog objekata, a njene funkcije su metode istog objekata.

Primer 41 : Jednostavan objekat

Rezultat :

Tekst koji je uvan za ispis

U gornjem primeru uz osnovne tehnike kreiranje objekta i njegove instance u skripti moe se primijetiti jo jedna stvar.

echo $this->testna;

Korienjem $this-> pre imena varijable pristupa se toj varijabli i moe se koristiti za ispis ili izmenu podataka. Na isti nain se pristupa i funkcijama. Ukoliko je potrebno pri instanciranju objekta automatski izvriti neke radnje poput spajanja na bazu podataka ili bilo koju slinu operaciju koja je potrebna za dalji rad objekta treba koristiti konstruktore. Konstruktori su funkcije objekta (klase) koji se izvravaju zajedno sa stvaranjem instance objekta. Konstruktori imaju isto ime kao i sam objekat.

Primer 42 : Objekat sa konstruktorom (dodatak primeru 12)

Rezultat :

Ovo je tekst koji smo stvorili konstruktorom

Tekst koji je uvan za ispis

PHP ne poseduje destruktore. Destruktori su specijalne metode koje slue za uklanjanje objekata. Ovaj problem se moe reiti na sledei nain:

unset () uklanja objekte isto kao promenljive

PHP napredne funkcije za rukovanje fajlovima

Da bi se sadraj nekog fajla proitao/modifikovao iz PHP skripte, koristi se fopen() funkcija. Fopen() funkcija prima dva parametra. Prvi parametar je ime fajla nad kojim se operie, a drugi parametar je nain na koji se manipulie eljenim fajlom (mod).

Sintaksa:

fopen(ime_fajla,mod);

Sledea tabela prikazuje sve modove koje moe sadrati fopen() funkcija.

ModoviOpis

ritanje. Poinje od poetka fajla, tj. prvog reda (line).

r+itanje/Pisanje. Poinje od poetka fajla, tj. prvog reda (line).

wPisanje.Otvara fajl i brie ceo sadraj fajla, a ako fajl ne postoji, kreira fajl.

w+itanje/Pisanje.Otvara fajl i brie ceo sadraj fajla, a ako fajl ne postoji, kreira fajl.

aDodaje. Otvara fajl i dodaje nov sadraj na kraj fajla.

a+itanje/Dodaje. Otvara fajl i dodaje nov sadraj na kraj fajla.

xPisanje. Kreira nov fajl, vraca error, ako fajl ve postoji.

x+itanje/Pisanje. Kreira nov fajl, vraa error, ako fajl ve postoji.

Funkcija fclose() nije obavezna, ali kao dobra programerska praksa vai da se otvoreni fajl zatvori.

Funkcija feof (naziv_fajla ili promenljive kojoj je fajl dodeljen) proverava da li je dostignut kraj fajla koji se ita, tj. da li je pokaziva doao do poslednjeg reda fajla.

Funkcija fgets (naziv fajla ili promenljive kojoj je fajl dodeljen) slui za itanje fajla i to red po red.

Funkcija fgetc (naziv fajla ili promenljive kojoj je fajl dodeljen) slui za itanje fajla i to karakter po karakter.

Za potrebe sledeeg primera, kreiran je fajl sa proizvoljnim tekstom koji je nazvan proba.txt. Nakon toga, novokreirani fajl e biti otvoren iz PHP skripte i njegov sadraj e biti iitan i prikazan na ekranu i to red po red. Kod izgleda ovako:

Primer 43

Primer za fopen()

Superglobals

Sve promenljive koje spolja ulaze u PHP kod, dolaze u jednom od nekoliko specifinih nizova pod nazivom superglobals. Superglobalne promenljive su dostupne u bilo kom delu skripta, ak i unutar objekata, funkcija, nizova. Drugim reima, one se ne definiu, one su ve prisutne. Predstavljaju specifine nizove varijabli, koje dolaze spolja u PHP fajl. Obuhvataju podatke poslate sa HTML formi, podatke o kukijima, informacije o sesiji, upload-ovanim fajlovima serveru i ine ih raspoloivim na svakom mestu. Predstavljaju nain da PHP otkrije odakle odreena vrednost dolazi. Na ovaj nain se ne dozvoljava da bilo koja promenljiva submit ovana od strane korisnika, automatski ue u PHP kod. Varijable unutar PHP skripta ostaju izolovane od potencijalnih napada.

Ako na primer korisnik popuni formu, server nee dodeliti te vrednosti globalnim promenljivama $name, $password. Umesto toga, ti podaci e biti podeljeni u niz:

$_POST[name], $_POST[password] i moe im se pristupiti samo preko globalne promenljive $_POST$_GLOBALS

Asocijativni niz koji sadri reference ka svim globalnim (i superglobalnim) varijablama dostupnim u okviru lokalne skripte. Imena varijabli predstavljaju kljueve ovog niza.

$_SERVER

Sadri informacije o okruenju web servera. Predstavlja niz varijabli podeenih od strane servera ili povezanih sa izvrnim okruenjem trenutne skripte. Pre nego to se uspostavi kontrola nad skriptom, PHP postavlja niz vrednosti u vezi sa serverom, okruenjem, i zahtevima od strane kljienta. Sve one su smetene u $_SERVER superglobalnoj varijabli.

U sledeoj tabeli je prikazano samo nekoliko karakteristinih varijabli iz niza smetenog u $_SERVERImeVrednost

HTTP_REFERER Ako je korisnik kliknuo na link da bi doao do trenutne stranice, ovo e sadrati URL prethodne strane na kojoj je bio ili e biti prazno ako je direktno uneo adresu

HTTP_USER_AGENT Ime korisnikovog browser -a

PATH_INFO Sve podatke unete u URL u nakon imena skripte

PHP_SELF Ime trenutne skripte, koja se izvrava

$_GET i $_POST

Opisane u delu o formama$_COOKIE

Sadri informacije iz HTTP kukija, detaljnije obraeno u delu o kukijima

$_FILES

Asocijativni niz varijabli poslatih u PHP fajl putem HTTP POST metode.

$_ENV

Sadri informacije o okruenju. Ove varijable su importovane u PHP globalni namespace iz okruenja u kojem radi PHP paser. $_SESSION

Asocijativni niz varijabli sa informacijama registrovanim u okviru sesije. Detaljnije obraeno u delu o sesijama

$_REQUEST

Sve informacije dobijene od strane korisnika. Sadri sve varijable prikupljene preko GET, PUT, COOKIE metoda.

Register globals

Register_globals predstavlja jedan od parametara koji se podeavaju u konfiguracionom fajlu php.ini. Ima dve vrednosti on i off, koje odreuju, da li je dozvoljeno registrovati varijable EGPCS (Environment, GET, POST, Cookie, Server) kao globalne. Od verzije PHP 4.2.0, po default u je nameten na off

Uvoenje register_globals nije bila loa ideja, problem je nastao zbog toga to se u veini skriptova ne proverava izvor varijable, pre nego to se ona koristi. Opasnost je u tome to PHP ne zahteva od varijabli da budu predefinisane pre korienja. Postojala je mogunost da zlonamerni korisnik pozove PHP skriptu pomou GET ili POST metode. Ukoliko se ime varijable, koja se alje, poklapa sa imenom varijable koja se u skriptu koristi za neto znaajno, moe doi do poremeaja funkcionalnosti programa, slanjem nekog lanog parametra.

Sledi primer kao ilustracija.

Neka je korisnik u adress bar uneo : http://sample.php/?access=1

Sample.php:

Oigledno da u ovom sluaju neidentifikovani posetilac moe pristupiti admninistratorskom delu.

PHP napredne funkcije za rukovanje cookies

Cookie se obino koristi za identifikaciju korisnika, zbog prirode HTTP protokola koji ne uva podatke o interakciji klijent/server. Cookie je mali fajl koji server prikai za raunar korisnika. Cookie se alje u okviru HTTP zahteva browser-a. Cookie se moe kreirati pomou JavaScript-a, ali esto se cookie-ima u potpunosti upravlja preko servera. Ovo znai da se cookie alje u Set-Cookie header polju kao deo HTTP odgovora:

HTTP/1.0 200

Content-Length: 1276

Content-Type: text/html

Date: Tue, 06 Nov 2001 04:12:49 GMT

Expires: Tue, 06 Nov 2001 04:12:59 GMT

Server: simwebs/3.1.6

Set-Cookie: animal=egg-laying-mammal

...Kada web server primi odgovor, u sledeem HTTP zahtevu ukjuuje cookie u header polju Cookie:

GET /duck/bill.php HTTP/1.0

Connection: Keep-Alive

Cookie: animal=egg-laying-mammal

Host: www.webdatabasebook.com

Referer: http://www.webdatabasebook.com/U PHP - u, mogu se i kreirati i itati vrednosti cookie fajla. Za potrebe kreiranje cookie fajlova, PHP koristi ugraenu (built in) funkciju setcookie(). Sintaksa:

setcookie(ime, vrednost, datum_isteka (u sekundama), putanja, domen)

Prva dva parametra setcookie() funkcije su obavezna, dok su ostala 3 opciona.

ParametarOpisPrimer

imeIme koje koristi cookie za skladitenje ili izvlaenje informacijausername

vrednostVrednost smetena u cookie.Internet

Datum_istekaUnix timestamp kad istie cookie, ako nije podeeno istie im se zatvori browserTime()+60*60*24*7 - iste za nedelju dana

putanjaURL putanja na sajtu koja moe da pristupi cookie u. Default znai da svaki direktorijum moe pristupiti cookie - u/testing

domenSlino putanji, samo to pristup moe biti ogranien na poddomen sajta,Da bi se ograniio pristup samo na www na sajtu example.com koristi se www.example.com. Za pristup svim domenima sajta koristi se .example.com.

sigurnostAko je podeeno na 0, cookie se alju samo preko HTTPS connection. HTTPS konekcija koristi enkripciju izmeu klijenta I servera 0 za sigurnu konekciju I 1 za nesigurnu, to je i default vrednost

Za potrebe itanja vrednosti cookie fajlova, PHP koristi globalnu promenljivu $_COOKIE[], koja kao parametar uzima ime (name) parametar funkcije setcookie().Funkcija isset() proverava da li je vrednost cookie ja podeena.

Takoe treba napomenuti da je neophodno PHP kod koji sadri setcookie() funkciju staviti pre HTML koda (poto se cookie alje, odnosno razmenjuje u okviru header-a), da bi se vrednosti mogle upisivati u cookie fajl i itati iz njega.

U sledeem primeru dat je prikaz setcookie() funkcije.. Datum isteka postavljen je na 1 as (3600 sekundi).

Primer 44

Primer za Cookie

Ako postoji potreba da se izbrie cookie pre isteka vremena, ponovo se koristi funkcija setcookie() i kao argument time() navodi se negativno vreme, npr. setcookie(ime, Internet, time()-3600) ili se pozove funkcija setcookie(ime), sa samo jednim parametrom.

U sledeem primeru se preko kukija ita vreme poslednje posete sajtu.