Professional Documents
Culture Documents
483 PHP 7 PDF
483 PHP 7 PDF
Objektno-orijentisano
modularno programiranje
(HTML 5, CSS 3, JavaScript,
XML, JSON i MySQL)
Steve Prettyman
Learn PHP 7
Izdava:
by Steve Prettyman
ISBN: 978-1-4842-1729-0
Obalskih radnika 15, Beograd 2016
Izdanje: Prvo
ISBN: 978-86-7310-506-2
Kratak sadraj
Poglavlje 1
Uvod u PHP 7...................................... 1
Poglavlje 2
Interfejs, platforme, kontejneri i troslojno programiranje ...............39
Poglavlje 3
Modularno programiranje ...............................77
Poglavlje 4
Bezbedni korisniki interfejs .............................109
Poglavlje 5
Rukovanje izuzecima i njihovo evidentiranje . ....................153
Poglavlje 6
Objekti podataka ...................................187
Poglavlje 7
Provera identiteta .................................223
Poglavlje 8
Multifunkcionalni interfejsi .............................249
INDEKS........................................289
iii
sadraj
Poglavlje 1
Uvod u PHP 7...................................... 1
Ciljevi u ovom poglavlju/Ishodi uenja studenta................................................................................. 1
PHP 5.5+, PHP 7+ i PHP.NET..................................................................................................... 1
PHP 5.6+ i PHP 7+ ........................................................................................................... 8
Uradite ................................................................................................................................ 8
PHP, JavaScript, CSS, HTML i Apache web server ......................................................................... 8
Uradite .............................................................................................................................. 13
PHP, Apache i MySQL ................................................................................................................ 14
Uradite .............................................................................................................................. 18
Spajanje svega - PHP, Apache i MySQL ........................................................................................ 18
EasyPHP ........................................................................................................................... 18
XAMPP ............................................................................................................................. 22
Microsoft Internet Information Server.................................................................................. 24
Uradite .............................................................................................................................. 25
Testiranje okruenja ................................................................................................................... 25
Uradite .............................................................................................................................. 27
Testiranje PHP okruenja ..................................................................................................... 28
EasyPHPs Code Classroom ................................................................................................. 30
Uradite .............................................................................................................................. 30
Alternativni direktorijumi ............................................................................................................ 30
Uradite .............................................................................................................................. 33
Notepad++, editori i testeri koda ............................................................................................. 33
Notepad++ ..................................................................................................................... 34
Ostali editori ...................................................................................................................... 34
Uradite .............................................................................................................................. 35
Termini poglavlja ........................................................................................................................ 35
Pitanja i projekti poglavlja............................................................................................................ 35
vi sadraj
Poglavlje 2
Interfejs, platforme, kontejneri i troslojno programiranje ...............39
Ciljevi u ovom poglavlju/Ishodi uenja studenta .............................................................................. 39
PHP platforme i kontejneri .......................................................................................................... 39
PHP aplikacije za PC ............................................................................................................ 40
PHP aplikacije za pametne telefone ....................................................................................... 40
PHP za Facebook i druge drutvene aplikacije ........................................................................ 40
Uradite .............................................................................................................................. 41
PHP, AJAX i CSS web aplikacije ......................................................................................... 47
Uradite............................................................................................................................... 52
PHP, AJAX i CSS web aplikacije za pametne telefone ........................................................... 52
Uradite............................................................................................................................... 54
PHP, HTML, JavaScript, CSS i dinamike web stranice........................................................... 54
Uradite............................................................................................................................... 57
PHP troslojna arhitektura ........................................................................................................... 57
Uradite .............................................................................................................................. 58
Sloj interfejsa ..................................................................................................................... 59
Uradite .............................................................................................................................. 60
Sloj poslovnih pravila ........................................................................................................... 61
Uradite .............................................................................................................................. 62
Sloj podataka ..................................................................................................................... 63
Uradite .............................................................................................................................. 64
Spajanje svega ................................................................................................................... 64
Istraivanje sluaja ............................................................................................................. 65
Sloj interfejsa...................................................................................................................... 65
Sloj poslovnih pravila............................................................................................................ 67
Sloj podataka...................................................................................................................... 67
Uradite .............................................................................................................................. 69
MVC i Dependency injection......................................................................................................... 70
Termini poglavlja ........................................................................................................................ 70
Pitanja i projekti poglavlja............................................................................................................ 71
Poglavlje 3
Modularno programiranje ...............................77
Ciljevi u ovom poglavlju/Ishodi uenja studenta .............................................................................. 77
PHP biblioteke, ekstenzije, klase i objekti ...................................................................................... 77
PHP ekstenzije .......................................................................................................................... 78
Klase i objekti ..................................................................................................................... 79
Kreiranje PHP klase ................................................................................................................... 79
Uradite .............................................................................................................................. 84
Metod Return............................................................................................................................ 84
Uradite .............................................................................................................................. 86
Metodi Set ............................................................................................................................... 87
Uradite .............................................................................................................................. 93
Metodi Get ............................................................................................................................... 93
Uradite .............................................................................................................................. 96
Metod constructor .................................................................................................................... 96
Uradite ............................................................................................................................ 101
sadraj vii
Poglavlje 4
Bezbedni korisniki interfejs .............................109
Ciljevi u ovom poglavlju/Ishodi uenja studenta ............................................................................ 109
Bezbedna korisnika interakcija ................................................................................................. 110
Validacija HTML5 formulara ...................................................................................................... 110
Uradite ............................................................................................................................ 113
JavaScript validacija ................................................................................................................ 114
Uradite ............................................................................................................................ 120
PHP filtriranje ......................................................................................................................... 120
Uradite ............................................................................................................................ 123
Bezbednost dodatnog HTML unosa ............................................................................................ 123
HTML5 padajue liste i radio-dugmad.................................................................................. 124
Uradite ............................................................................................................................ 128
Validacija unosa pomou XML fajla ...................................................................................... 128
Uradite............................................................................................................................. 135
Dependency injection ............................................................................................................... 135
Uradite............................................................................................................................. 147
Termini poglavlja ...................................................................................................................... 147
Pitanja i projekti poglavlja ......................................................................................................... 148
Poglavlje 5
Rukovanje izuzecima i njihovo evidentiranje . ....................153
Ciljevi u ovom poglavlju/Ishodi uenja studenta ............................................................................ 153
Rukovanje izuzecima ................................................................................................................. 153
Uradite ............................................................................................................................ 160
Izuzeci i rukovanje grekama nasuprot if/else uslova .................................................................... 160
Uradite ............................................................................................................................ 167
Evidentiranje izuzetaka ............................................................................................................. 167
Uradite ............................................................................................................................ 173
itanje evidencije i tekstualnih fajlova ......................................................................................... 174
Uradite ............................................................................................................................ 182
Termini poglavlja ...................................................................................................................... 182
Pitanja i projekti poglavlja.......................................................................................................... 183
Poglavlje 6
Objekti podataka ...................................187
Ciljevi u ovom poglavlju/Ishodi uenja studenta ............................................................................ 187
Klasa podataka ........................................................................................................................ 187
JSON podaci ........................................................................................................................... 197
MySQL podaci ......................................................................................................................... 197
Uradite ............................................................................................................................ 199
Rezervna kopija i oporavak ........................................................................................................ 199
JSON rezervna kopija i oporavak ............................................................................................... 211
MySQL rezervna kopija i oporavak ............................................................................................. 211
viii sadraj
Poglavlje 7
Provera identiteta .................................223
Ciljevi u ovom poglavlju/Ishodi uenja studenta ............................................................................ 223
Verifikacija i sesije .................................................................................................................... 223
JSON podaci ........................................................................................................................... 232
MySQL podaci ......................................................................................................................... 232
Uradite ............................................................................................................................ 233
Registracija ............................................................................................................................ 233
JSON podaci ........................................................................................................................... 236
MySQL podaci ......................................................................................................................... 237
Prijavljivanje ............................................................................................................................ 237
JSON podaci ........................................................................................................................... 242
MySQL podaci ......................................................................................................................... 242
Promena lozinke ...................................................................................................................... 243
JSON podaci ........................................................................................................................... 246
MySQL podaci ......................................................................................................................... 246
Uradite ............................................................................................................................ 246
Termini poglavlja ...................................................................................................................... 246
Pitanja i projekti poglavlja.......................................................................................................... 247
Poglavlje 8
Multifunkcionalni interfejsi .............................249
Ciljevi u ovom poglavlju/Ishodi uenja studenta ............................................................................ 249
Kompletna aplikacija ................................................................................................................. 249
Rukovanje podacima pomou JavaScripta ................................................................................... 249
Uradite ............................................................................................................................ 263
Auriranje, brisanje i ubacivanje u sloj interfejsa .......................................................................... 263
Uradite ............................................................................................................................ 270
Auriranje, brisanje i ubacivanje u sloj poslovnih pravila ................................................................ 270
Uradite ............................................................................................................................ 276
Finalna dorada ......................................................................................................................... 276
Uradite ............................................................................................................................ 284
Logiki dizajn za program ABC Canine Shelter Reservation System................................................ 285
Ogranienja ..................................................................................................................... 285
Termini poglavlja ...................................................................................................................... 287
Pitanja i projekti poglavlja.......................................................................................................... 287
INDEKS........................................289
Uvod u PHP 7
Knjiga Nauite PHP 7: objektno-orijentisano modularno programiranje, uz korienje HTML-a 5,
CSS-a 3, JavaScripta, XML-a, JSON-a i MySQL-a je namenjena za poetni nivo programiranja.
Namena ove knjige nije da se obuhvate napredne tehnike u aktuelnim verzijama PHP programskog
jezika. Oekuje se neko poznavanje osnovnih koncepata programiranja, ali nisu potrebni iskustvo u
programiranju, ni zavrena obuka.
Svi primeri koda u ovoj knjizi su kompatibilni sa verzijom PHP 7. Veina primera je kompatibilna
sa verzijom PHP 5.6. Najnoviji (u vreme izdavanja ove knjige) metodi (funkcije) koje su dostupni
u PHP-u su upotrebljeni da bi itaocu obezbedili aktuelne tehnike programiranja. U primerima su
upotrebljeni osnovni metodi koji su dostupni u PHP programskom jeziku. PHP ukljuuje mnoge
dodatne metode za izvravanje slinih zadataka. italac moe (i trebalo bi) da istrai dodatne naine
poboljanja bezbednosti, performanse i druge tehnike. Ova knjiga treba da podstakne korisnike da
uvek razmotre upotrebu najbezbednijih i najefikasnijih metoda razvoja programa. Kod u ovoj knjizi
obezbeuje neke primere upotrebe tih tehnika. Korisnik treba da zapamti da ni jedan program nije
apsolutno siguran. Programer moe samo da se potrudi da kreira to bezbedniji program. Potreban
je tim programera, mrenih administratora, administratora bezbednosti i drugih strunjaka koji e
zajednikim snagama osigurati najbezbednije okruenje.
Drugaiji pristup
Na tritu postoji mnotvo knjiga o PHP-u. ta je ono to izdvaja ovu knjigu od ostalih?
U ovoj knjizi upotrebljen je koncept uenje kroz vebu, koji pokazuje itaocu kako da
kreira aplikacije korienjem uslovnih iskaza, petlji, nizova i metoda. Predstavljeno je
vie od 70 PHP metoda (funkcija) - prikazani su u primerima kodiranja.
Ve u prvim primerima itaocu su predstavljene tehnike objektno-orijentisanog
programiranja. U mnogim drugim knjigama je u poslednjim poglavljima samo kratko
opisano to programiranje (ako uopte i opisano).
Objektno-orijentisani set metodi su upotrebljeni za verifikovanje i filtriranje unosa
korisnika. U mnogim drugim knjigama je jednostavno prikazan set metod za prihvatanje i
uvanje podataka.
Glavna namena ove knjige je da se podstakne italac da kreira sve programe to je
mogue bezbednije i efikasnije. Predstavljene su i najnovije tehnike enkripcije lozinke
(password_hash).
ix
x uvod
Metodi try i catch su predstavljeni za pronalaenje izuzetaka i nekih greaka. Najnovije verzije
PHP-a su kreirane za rukovanje izuzecima i grekama korienjem ovog pristupa. U mnogim
drugim knjigama za iskljuivanje programa upotrebljeni su die ili neke druge tehnike.
Predstavljen je vieslojni dizajn programa u prvim poglavljima. To omoguava itaocu da
otkrije koja logika i kodiranje bi trebalo da budu postavljeni u odreeni sloj. U mnogim
knjigama o PHP-u nije obraena ova tema.
Veina primera upotrebljena je za kreiranje jedne glavne aplikacije (ABC Canine Shelter
Reservation System). U knjizi se ova aplikacija gradi od poetka, u etapama, pri emu je
prikazano itaocu kako bi kreiranje aplikacije trebalo da se rastavi na etape. Samo kada je
zavrena i testirana jedna etapa, moe da se zapone sledea. Ovaj pristup se primenjuje
zajedno sa vieslojnim dizajnom. Postoje i dodatne vebe programiranja i projekti koji e
poboljati razumevanje razvoja programa.
Predstavljeno je kreiranje evidencije korisnika, promena i greaka. To omoguava itaocu
da bolje razume kako se omoguava kreiranje rezervnih kopija i njihovo vraanje da bi
aplikacija pravilno funkcionisala kada se desi problem u vezi bezbednosti ili izuzetak.
Predstavljanje objekata podataka i sloja podataka demonstrira itaocu vanost kreiranja aplikacije
koja obezbeuje mogunost menjanja tehnika za uvanje podataka i lokacija za uvanje podataka,
bez potrebe da se prepisuje aplikacija. Predstavljeni su XML, JSON i MySQL primeri.
U knjizi je predstavljen prirodan odnos izmeu PHP-a, HTML-a 5, CSS-a 3 i JavaScripta.
Ovaj odnos je jedna od glavnih prednosti PHP-a.
U knjizi su obezbeeni web linkovi koji ukazuju korisniku na dodatne izvore koji e mu
pomoi da razume materijal ili da detaljnije istrai temu. Na web sajtu knjige obezbeene
su aurirane lokacije.
Svi primeri koda, slike i linkovi su dostupni za preuzimanje na adresi apress.com, sa prateom
lokacijom.
Moete da preuzmete primere koda sa web sajta. Kopiranje koda iz knjige moe da izazove pro-
bleme, zbog zahteva formatiranja za publikovanje.
Web sajt knjige se nalazi na adresi www.littleoceanwaves.com/securephp/
Pregled poglavlja
Poglavlje 1: Uvod u PHP 7
Nakon zavretka ovog poglavlja, student e moi da:
razume razliku izmeu LAMP-a, WAMP-a i MAMP-a
uspeno instalira verziju LAMP-a, WAMP-a ili MAMP-a
potrai na Internetu reenje problema
objasni razliku izmeu programskog jezika i jezika za pisanje skriptova
kreira jednostavan PHP program bez greke
Poglavlje 7: Autentifikacija
Nakon zavretka ovog poglavlja, student e moi da:
definie sesije i objasni kako se one koriste za autentifikaciju
kreira PHP program koji autentifikuje prijavu korisnika
kreira PHP program koji registruje korisnike
kreira PHP program koji e omoguiti korisnicima da promene lozinku
kreira PHP program koji evidentira neispravne pokuaje prijave
UvoD U PHP 7
PHP je popularan jezik za pisanje skriptova osnovne namene, koji je posebno pogodan za razvoj
web aplikacija. Brz, fleksibilan i pragmatian, PHP pokree sve - od bloga do najpopularnijih web
sajtova na svetu. www.php.net
Ciljevi.u.ovom.poglavlju/Ishodi.uenja.studenta
Nakon zavretka ovog poglavlja, student e moi da:
razume razliku izmeu LAMP-a, WAMP-a i MAMP-a
uspeno instalira verziju LAMP-a, WAMP-a ili MAMP-a
potrai na Internetu reenje problema
objasni razliku izmeu programskog jezika i jezika za pisanje skriptova
kreira jednostavan PHP program bez greke
1
2 POGLAVLJE 1 Uvod u PHP 7
Na poetnoj stranici web sajta www.php.net nalaze se informacije o svakom najnovijem izdanju
jezika. Takoe su obezbeene informacije o buduim izdanjima, buduim planovima za odreena
izdanja i planiranim datumima za izdavanje. Pored toga, ovde ete pronai i druge sline informacije
o PHP-u, ukljuujui linkove i informacije za PHP savete.
Kao to je pomenuto, ovaj web sajt prua mogunost korisnicima da pomognu u buduem razvoju
jezika. Korisnici mogu da se ukljue u testiranje beta verzija i da izvetavaju o grekama u progra-
mima. Posetioci takoe mogu da pregledaju dokumentaciju u vezi sa razvojem moguih buduih
verzija. To je dobar nain otkrivanja buduih poboljanja ili bezbednosnih ispravki pre objave za
publikovanje.
Jedna od najvanijih stranica PHP web sajta je stranica za dokumentaciju. Ona omoguava korisni-
cima da potrae opise i funkcije samog jezika. Takoe moete da preuzmete kompletnu dokumenta-
ciju. Meutim, poto je ovo ivi sajt, u kojem je mogua pojava greke, najbolje je da najaktuelnije
informacije preuzmete direktnim pristupom sa web sajta.
Moete da upotrebite uputstvo isto kao da to biste upotrebili i knjigu, tako to ete kliknuti na link
na poetku stranice. Ograniena koliina informacija koja je obezbeena u svakom odeljku uputstva
moda e podstai poetnika da odustane od programiranja i usmeri svoje interesovanje na neto
lake, kao to je umreavanje. Uputstvo prua odlian vodi za iskusne programere, poto je sintaksa
jezika slina drugim jezicima, kao to su JavaScript, Perl i Java.
Na bilo kojoj stranici web sajta korisnik moe da unese termin, izraz ili, ak, naziv funkcije da bi
pronaao vie informacija. Kada je informacija uneta u polje za pretragu, web stranica e ispod polja
prikazati korisniku jednu ili vie opcija, od kojih moe jednu da izabere.
PHP 5.5+, PHP 7+ i PHP.NET 7
Kada je korisnik izabrao opciju (kao to je eho koji je prikazan na slici 1-7), rezultati pretrage obez-
beuju korisniku osnovni opis traene stavke, unose ili ispise za funkciju (parametre) i primer koda.
Primer koda obezbeuje objanjenje upotrebe unutar samog koda pomou komentara (na slici 1-8
predstavljeni su karakterima // i zlatnom bojom). Komentari nisu izvrni kod. Izvrni kod je oznaen
bojom za isticanje nizova (crvenom), promenljivih (plavom), kljunih rei (zelenom) i PHP poetnih
i zavrnih tagova (plavom). Kodiranje u boji pomae da kod bude itkiji. Takoe je lake pronai
greke u sintaksi kada kreirate programe. Mnogi PHP editori obezbeuju sline kolorne eme.
Uradite
1. Otvorite stranicu www.php.net. Potraite informaciju o funkcijama print i printf. Po emu
su ove funkcije sline? Po emu se razlikuju?
2. Kako spajate tim i pomaete u kreiranju sledee verzije PHP-a? Nagovetaj: Otvorite
odeljak Get Involved na web sajtu www.php.net, selektujte Guide for Contributors, a
zatim potraite link Join the team. Naravno, web sajt se menja, pa moda treba da
pronaete drugu putanju za ovu informaciju.
3. Kako moe web sajt www.php.net da bude koristan za poetnike u PHP programiranju?
4. Koji jezik je upotrebljen za kreiranje PHP-a? Nagovetaj: Odgovor se nalazi na web sajtu
www.php.net.
5. Otvorite stranicu www.php.net. U verziji PHP 7 potraite listu poboljanja i promena, koje
treba, potom, da izlistate. Koja poboljanja i promene utiu na poetniki nivo
programiranja?
nice). Ovaj kod se, zatim, izvrava (pokree) unutar kompatibilnog operativnog sistema i hardvera.
Jezici za pisanje skriptova ne koriste prevodilac. Kada se prvi put pristupi kodu, on je interpretiran
liniju po liniju, dok se program izvrava.
Moda se pitate da li e to izazvati da kod bude sporiji od prevedenog koda. Nee. Kada je kod jed-
nom izvren, prevedeni kod ostaje u memoriji raunara ili servera za sledea izvrenja. Ako progra-
mer promeni kod, nova verzija e zameniti prethodnu u memoriji.
JavaScript je takoe jezik za pisanje skriptova. Kao to, verovatno, i pretpostavljate, JavaScript kod
moe da se vidi unutar web pretraivaa pregledanjem izvora, kao to je prikazano na slici 1-9.
Izvorni kod prikazan na slici 1-9 je sa sajta www.yahoo.com, a prikazuje kombinaciju nekoliko jezika,
ukljuujui HTML, CSS i JavaScript. JavaScript kod (prikazan crnom bojom) se nalazi izmeu
tagova skripta (<script type=text/JavaScript> i </script>). On e pokuati da kreira kolai na
vaoj maini ako pretraiva omoguava upotrebu kolaia.
10 POGLAVLJE 1 Uvod u PHP 7
Meutim, kada pogledamo izvorni kod web sajta www.php.net (na slici 1-10), ne moemo da vidimo
kod PHP skripta. Postoje neki linkovi ka nekim PHP fajlovima, ali nije prikazan PHP kod. Zato?
JavaScript kod se nalazi na raunaru korisnika. On je interpretiran i izvren unutar pretraivaa. PHP
kod se nalazi na web serveru. Njega je interpretirao i izvrio web server, a ne pretraiva. Rezultati
izvrenja PHP koda su vraeni u pretraiva, a ne u sam kod.
<?php
Print "Hello";
?>
Napomena
Moda ste primetili druge formate za upotrebu PHP-a (kao to su: <%, <%=, %> ili <script language=php>);
u verziji PHP 7 ovi stilovi vie nisu validni. Oni su ranije iskljueni, ali su i dalje upotrebljivi.
Moda ste pogodili da e ovaj kod prikazati Hello. Iako je to tano, pitanje je koji procesi se deavaju
za kreiranje ovog rezultata.
Ako je ovaj kod postavljen u fajl (kao to je hello.php) na web serveru, upotrebite web pretraiva da
zatraite taj fajl, tako to ete uneti njegov naziv i lokaciju u polje za URL (adresu), kao to je http://
servera.com/hello.php. Uneta adresa daje instrukcije pretraivau da poalje HTTP Get zahtev web
serveru (server.com) za vraanje web stranice (hello.php).
PHP, JavaScript, CSS, HTML i Apache web server 11
Web server koji prima zahtev odredie da PHP kod prvo treba da bude interpretiran i izvren. On
odreuje ovaj proces, jednostavno traei ekstenziju fajla (.php) za traeni fajl. Sav PHP kod unutar
fajla je nakon toga poslat PHP procesoru za interpretaciju i izvrenje. Rezultati izvrenja koda su
vraeni web serveru, koji ih alje (i sve ostale HTML i/ili JavaScript kodove) nazad u pretraiva.
U ovom primeru Hello e biti vraen i prikazan u pretraivau. Ako pogledate izvorni kod, vide-
ete samo re Hello. Neete videti HTML ili PHP. Zato? Zato to nismo poslali HTML nazad u
pretraiva.
Moda se pitate da li moete da upotrebite ovaj proces da biste poslali nazad aktuelni HTML (i/
ili JavaScript) kod za kreiranje dinamike web stranice. Moete. PHP funkcija print e vratiti svaki
HTML (ili JavaScript) kod koji je postavljen izmeu navodnika (). Pretraiva e prevesti kod koji
je web server vratio.
Funkcija print - Funkcija print nije funkcija. To je konstrukcija jezika. Funkcije zahtevaju
da nizovi budu ukljueni izmeu navodnika kada se prosleuju. Konstrukcije jezika ne zah-
tevaju navodnike oko nizova. Ipak je preporuljiva njihova upotreba. Funkcija print e pro-
slediti pretraivau ta god je njoj prosleeno. Pokuae da konvertuje sve stavke koje nisu
niz u format niza (tekst), poto su sve stavke prikazane unutar web stranice u tekstualnom
formatu.
Za vie informacija posetite stranicu
http://php.net/manual/en/function.print.php.
Za detaljniji opis komande print posetite besplatni The New Boston (thenewboston.com)
video na adresi
https://www.thenewboston.com/videos.php?cat=11&video=16996.
12 POGLAVLJE 1 Uvod u PHP 7
Napomena
Sve linkove koji su obezbeeni u ovoj knjizi moete da pronaete na adresi http://www.littleoceanwaves.com/
securephp.
<?php
Print "<h1>Hello</h1>";
?>
Ako promenimo kod na prethodno prikazanu listu, pretraiva e prikazati Hello kao HTML zaglav-
lje (h1). Mana upotrebe funkcije print je to program nee imati kontrolu nad lokacijom prikaza
iskaza na web stranici. Iskaz e, u stvari, biti prikazan kao prva linija koda, ak ispred svih ostalih
postojeih HTML tagova. To je moda u redu ako samo vraate iskaz korisniku, kao to je Your
process has been completed. Meutim, to moda nije prihvatljivo ako je cilj da formatirate ispis na
odreenu lokaciju na stranici. Postoje druge tehnike i funkcije koje moemo izabrati i eliminisati ovaj
problem. Meutim, one nisu predmet razmatranja u ovoj knjizi.
Sada, kada znamo da moramo da prevedemo i izvrimo PHP kod pomou web servera, koji server bi
trebalo da upotrebimo?
Apache web server koji se najee koristi za hostovanje i rukovanje zahteva PHP web stranica. Kao
i drugi web serveri, Apache takoe moe da prihvati i vrati zahteve za druge vrste fajlova, ukljuujui
HTML, JavaScript, PERL, slike i RSS dokumente. On, kao to je reeno, odreuje koji procesi treba
da se izvre iz HTTP zahteva, tako to prvo pogleda ekstenziju fajla traenih fajlova.
Apache je, kao i PHP, proizvod otvorenog koda. Svim promenama na Apache serveru rukovodi
Apache Software Foundation. ASP odrava web sajt apache.org pomou kojeg je korisnicima i pro-
gramerima omogueno da otkriju projekte koji su trenutno u razvoju i da preuzmu najnovije verzije
Apache servera. Meutim, kao to je ve reeno, preuzimanje posebnih verzija PHP-a, Apachea i
MySQL-a moe izazvati probleme, zbog nekompatibilnih verzija. Mnogo je jednostavnije da preuz-
mete kompletne WAMP, LAMP ili MAMP verzije ako niste sasvim sigurni u ono to radite.
PHP, JavaScript, CSS, HTML i Apache web server 13
Apache Software Foundation takoe podstie korisnike svojih proizvoda da auriraju proizvode i
ukljue se u razvoj buduih proizvoda. Korisnici mogu da se prikljue diskusiji i e-mail grupama,
da testiraju nova izdanja i da, ak, pomognu u reavanju problema ili dodavanju novih funkcija u
proizvode.
Uradite
1. Koja je razlika izmeu izvravanja PHP koda i Java koda?
2. Koja je razlika izmeu jezika za pisanje skriptova i programskog jezika? Koja vrsta jezika
je PHP?
3. Kako Apache web server rukuje zahtevima za PHP web stranicu?
4. Zato moemo da vidimo JavaScript kod unutar web pretraivaa, ali ne moemo da
vidimo PHP kod?
5. Otvorite stranicu www.apache.org. Nabrojte neke od naina na koje moete da se ukljuite
u razvoj Apache projekata, ak i ako imate ogranieno iskustvo.
14 POGLAVLJE 1 Uvod u PHP 7
Slika 1-15 Zahtevanje PHP web stranice koja vraa informaciju iz MySQL baze podataka
SQL - Structured Query Language je specijalni jezik koji se koristi za auriranje, ubaciva-
nje ili brisanje podataka iz DBMS-a (Database Management System). DBMS je aplikacija
koja stupa u interakciju sa programskim jezikom i bazom podataka da bi aurirala, ubacila
ili izbrisala podatke. DBMS koristi SQL za prevoenje potrebnih promena u podacima unu-
tar baze podataka. Za vie informacija o SQL-u pogledajte stranicu http://en.wikipedia.org/
wiki/SQL, a za vie informacija o DBMS-u stranicu http://en.wikipedia.org/wiki/Database.
Apache server e prvo otkriti da PHP kod mora da bude preveden. PHP kod e tada biti poslat u PHP
procesor, koji ga prevodi (liniju po liniju). Dok se kod prevodi, procesor e otkriti da SQL iskazi
moraju da budu izvreni uporeivanjem sa bazom podataka. SQL iskazi se, zatim, prenose do odgo-
varajueg Database Management Systema (DBMS-a) na obradu. DBMS e vratiti rezultate izvrenja
SQL iskaza u PHP procesor. PHP procesor e upotrebiti te rezultate za formatiranje ispisa koji e
biti prosleen Apache serveru. Apache server e, zatim, kombinovati rezultate koje je vratio PHP
procesor sa bilo kojim drugim HTML (i/ili JavaScript) kodom koji se nalaze na originalnoj traenoj
stranici i vratiti ceo ispis u pretraiva na maini korisnika. Pretraiva e tada prevesti HTML i
JavaScript i prikazati rezultate traene stranice.
Da li ste sve razumeli?
Pogledajte primer iz stvarnog sveta, koji je prikazan na slici 1-16.
Zbog nekog veoma udnog razloga, odluili smo da potraimo green cats (zelene make) na
Internetu. Kada smo uneli niz u omiljeni pretraiva (u ovom primeru to je Google), a zatim kliknuli
na dugme Search, informacija je prosleena Google serveru. Gde?
PHP, Apache i MySQL 15
Ko zna mogue je da je prosleena bilo gde na naoj planeti. Meutim, povoljna okolnost u vezi
Interneta je injenica da nas ne interesuje kom serveru su prosleene informacije, dok god brzo dobi-
jamo rezultate.
U redu, moram rei da sam iznenaen da postoji 104 miliona moguih linkova ka zelenim ma-
kama. Moda bi trebalo da filtriramo rezultate. Meutim, poenta je da Google vraa web stranicu sa
listom linkova i njihovih opisa (plus reklame).
Da li Google vraa statinu stranicu koja je ve postojala?
Ne vraa. Serveri su kreirali dinamiku stranicu iz upita korisnika. Google algoritmi (softver) pre-
traili su ogromne Google baze podataka. Upit je prvo poslat na Google web server iz pretraivaa
korisnika. Web server alje, zatim, upit u Google baze podataka (koristei Google Query, jezik slian
SQL-u) da bi vratio informacije o zelenim makama. Softver na web serveru prevodi rezultate,
dodaje HTML i JavaScript (takoe i neki Google Script Language) kod za formatiranje web stranice
sa rezultatima i vraa informaciju korisniku.
Statine nasuprot dinamikih web stranica Statina web stranica se ne menja u odnosu
na upit ili unos korisnika. Nju je kreirao web programer, a nalazi se na web serveru. Kada
korisnik trai stranicu pomou pretraivaa, njena kopija je poslata u pretraiva za prika-
zivanje. Dinamika stranica se ne nalazi na web serveru. Kreirana je pomou unosa kori-
snika. Program koji se nalazi na web serveru e kreirati i formatirati stranicu. Stranica koju
kreira program se tada preuzima u pretraiva korisnika. Njena kopija se, obino, ne nalazi
na web serveru. Za vie informacija o statinim web stranicama pogledajte stranicu http://
en.wikipedia.org/wiki/Static_web_page, a za vie informacija o dinamikim web stranicama
stranicu http://en.wikipedia.org/wiki/Dynamic_web_page.
Da li se svaka stranica preuzima u web pretraiva korisnika?
Preuzima se samo prva stranica. Linkovi stranice na dnu prve stranice rezultata vraaju rezultate na
web server, traei sledei set informacija (za dinamiko kreiranje druge stranice ili drugu traenu
16 POGLAVLJE 1 Uvod u PHP 7
stranicu). Proces koji smo opisali u vezi obrade PHP fajlova na Internetu je uobiajeni proces za
kreiranje dinamikih stranica.
Moda ste primetili neto interesantno o URL adresi stranice sa rezultatima koja je prikazana. Adresa
je sada https://www.google.com/?gws_rd=ssl#q=Green+Cats, a ne www.google.com. Google algori-
tmi koriste GET HTTP Request kada alju upite pretrage na svoje servere.
HTTP - Hypertext Transfer Protocol je protokol (standard) za prenos poruka (teksta i
web stranica) izmeu raunara (raunara i servera) na Internetu. To je protokol zahteva-
odgovora. Na primer, korisnik zahteva web stranicu pomou web pretraivaa. Web server
odgovara na zahtev i vraa stranicu u pretraiva. Pretraiva menja zahtev u HTTP Get
Request (kao to je GET /pages/mypage.html HTTP/1.1), koji je poslat web serveru. Web
server odgovara informacijom koja je zatraena i statusnim kodom (kao to je HTTP/1.1
200 OK). Za vie informacija o HTTP-u pogledajte stranicu http://en.wikipedia.org/wiki/
Hypertext_Transfer_Protocol#Request_methods.
Ako korisnik unese Fred u tekstualno polje koje je prikazano u pretraivau, stranica rezultata (kreirana
prevoenjem i izvravanjem fajla searchprocess.php na web serveru i slanjem rezultata nazad u pretrai-
va) prikazae URL liniju http://127.0.0.1/projects/searchprocess.php?customername=Fred.
Naziv tekstualnog polja (customername) i vrednost uneta u tekstualno polje (Fred) su vidljivi u URL
liniji. U stvari, customername je sada parametar, a Fred je vrednost koju sadri parametar. Ovo je
rezultat upotrebe GET procesa.
Kada kliknete na dugme Google Search ili dugme Search u naem jednostavnom primeru, traena
informacija e biti poslata pomou GET HTTP procesa. Sve informacije (i promenljive) koje su
potrebne za primanje programa su poslate u aktuelnu URL liniju da bi ih primio program na web
serveru koji e obraditi poetni zahtev.
PHP, Apache i MySQL 17
Zato Google pretraiva alje informaciju pomou GET-a, umesto pomou POST-a (koji bi sakrio
informacije)?
Glavni razlog je elja da se utedi memorija servera. Samo pomislite na milione zahteva koje Google ima
za odreenu informaciju. Ako bi se svi ovi zahtevi nalazili u memoriji, serveri bi ubrzo pali. Osim toga,
poto korisnik vri javnu pretragu za informaciju, nema razloga da se informacija sakrije. U narednim
poglavljima opisaemo kako se itaju GET i POST parametri unutar PHP programa.
Meutim, vratimo se za sada naem razmatranju o Apacheu, PHP-u i DBMS-u.
PHP moe da pristupi informacijama iz mnogih vrsta DBMS sistema, ukljuujui Oracle i SQL Ser-
ver. Meutim, najpopularnija kombinacija (kao to smo ve pomenuli) je par PHP sa MySQL-om.
Verujem da sada i znate zbog ega - oni su otvorenog koda i besplatni. MySQL je, takoe, jedan od
DBMS sistema koji su najjednostavniji za upotrebu.
Korisnik moe da otvori zvanini web sajt MySQL-a (www.mysql.com) da bi preuzeo najnovije
verzije. Osim toga, kao to, verovatno, i nagaate, moete da se prikljuite zajednici i pomognete u
razvoju novih verzija MySQL-a i slinih proizvoda. Dokumentacija aktuelne i nekoliko prethodnih
verzija je dostupna za preuzimanje. Dokumentacija je prilino intenzivna i nije namenjena za neisku-
sne korisnike i poetnike. Ako ste moda umorni od itanja, nije preporuljivo da preuzmete novu
verziju MySQL-a posebno, dok ne budete imali malo vie iskustva. Za sada, drite se paketa WAMP,
LAMP i MAMP.
18 POGLAVLJE 1 Uvod u PHP 7
Uradite
1. Zato PHP procesor alje SQL u DBMS, umesto da ga Apache web server alje direktno u
DBMS?
2. ta Apache server moe da uradi sa informacijom koju je primio od DBMS-a pre nego to
je poalje nazad u pretraiva korisnika?
3. Otvorite www.mysql.com. Koja je najnovija verzija MySQL-a? Koje verzije Apache
servera i PHP-a su kompatibilne?
4. Zato pretraivai prosleuju informacije korienjem GET HTTP upita, umesto POST
HTTP upita? Kada koristite POST upit?
EasyPHP
Moete da preuzmete verziju programera EasyPHP-a sa sledeeg linka. Nije potrebno da preuzmete host
verziju ako ne planirate da hostujete ive web stranice direktno sa vaeg raunara na Internet.
http://www.easyphp.org/easyphp-devserver.php
Verzija programera EasyPHP-a je WAMP (Windows, Apache, MySQL, PHP) paket koji se koristi
u Microsoft Windows okruenju. Postoje dodatni alati koji vam mogu pomoi u radu. Meutim, za
sada je potrebno da instalirate samo osnovnu instalaciju. Nakon instalacije, fajlovi e biti locirani u
direktorijumu programskih fajlova pod direktorijumom EasyPHP.
Upozorenje
Obratite panju na koju dugmad klikete na web sajtu u toku preuzimanja. Ako ne proitate ono to preuzimat e pre
nego to kliknete na dugme, moete sluajno da preuzmete dodatne stavke koje vas ne interesuju.
Nakon preuzimanja instalera klikom na strelicu za preuzimanje na web sajtu, pratite uputstva koje
vam softver prikazuje. Za sada, ostavite sva standardna podeavanja. Nadamo se da e sve biti pra-
vilno instalirano. Za svaki sluaj, proitajte sledei odeljak pod naslovom Uobiajeni problemi
instalacije.
Konflikti porta
Ako ve imate servis koji koristi port 80, standardni port za HTML saobraaj izmeu PC-ja i spo-
ljanjeg sveta, primiete poruku o greci od Apache servera kada pokuate da ga pokrenete. Ovaj
problem moete da reite na nekoliko naina.
Wikipedia za port ima sledeu definiciju:
U raunarskom umreavanju port je softver specifian za aplikaciju ili proces koji slui
kao krajnja taka za komunikaciju u glavnom operativnom sistemu raunara. Namena por-
tova je da jedinstveno identifikuju razliite aplikacije ili procese koji su pokrenuti na jed-
nom raunaru, ime im se omoguava da dele jednu fiziku konekciju na mrei komutacije
paketa, kao to je Internet. U kontekstu Internet Protocola port je povezan sa IP adresom
glavnog raunara i sa vrstom protokola koji se koristi za komunikaciju.
Za vie informacija o portovima pogledajte stranicu
http://en.wikipedia.org/wiki/Port_(computer_networking).
20 POGLAVLJE 1 Uvod u PHP 7
A. Ako vam ne smeta da iskljuite druge servise koji koriste port dok programirate, moete da pratite
sledea opisana uputstva. Kada zavrite upotrebu Apachea i PHP-a, moete ponovo da ukljuite ser-
vise ili samo da restartujete raunar i servisi e ponovo biti ukljueni.
1. Otvorite Microsoft Windows 7/8/10 Task Manager (pritisnite istovremeno tastere
Ctrl+Alt+Delete).
2. Selektujte karticu Services.
3. Potraite bilo koji od sledeih servisa na Windowsu 7/8/10. Ako pronaete jedan pokrenut servis,
kliknite na njega desnim tasterom mia i iskljuite ga. Zatim, pokuajte da restartujete Apache.
Ako ne funkcionie, ukljuite ponovo servis koji ste iskljuili i pokuajte da iskljuite drugi
(nazivi su moda malo drugaiji, u zavisnosti od verzije Windowsa).
SQL Server Reporter, Web Deployment Agent, BranchCache, Sync Share Service, WAS (IIS Admi-
nistrator) i W3SVC
B. Ako je potrebno da drugi servisi budu pokrenuti ili nemate privilegije administratora za iskljuiva-
nje servisa na portu 80, moete da promenite lokaciju standardnog porta za Apache.
Otvorite sistemsku paletu (donji desni ugao ekrana). Potraite EasyPHP ikonicu, tako to ete skrolo-
vati iznad ikonica. Bie prikazan opis svake ikonice. Ako ne vidite ikonicu, kliknite na strelicu nagore
u sistemskoj paleti da biste prikazali sve ikonice. Kliknite desnim tasterom mia na ikonicu EasyPHP.
Selektujte opciju Configuration, pa Apache. Otvorie se konfiguracioni fajl Apachea (httpd.conf) u
Notepadu (ili drugom standardnom editoru teksta). Prvo snimite kopiju ovog fajla. Zahvaljujui tome,
moi ete da ispravite bilo koje greke koje se dese. Zatim, potraite liniju Listen 127.0.0.1:80 unutar
fajla. Promenite primer 80 na 8080 ili na 81, i to samo u toj jednoj liniji. Na taj nain Apache server e
moi da slua jedan od portova koji se ne koriste u veini sluajeva. Ponovo snimite fajl (obavezno
snimite originalni fajl na originalnu lokaciju).
NAPOMENA
Kada koristite Notepad ili bilo koji drugi editor za tekst, obavezno upotrebite opciju Save As, a zatim selektujte All Files
za vrstu fajla. Osim toga, obavezno ukljuite .conf ekstenziju fajla. Ako ne promenite vrstu fajla na All Files, fajl e biti
snimljen kao httpd.conf.txt. Ako se to desi, server nee videti fajl. Moete jednostavno da reite ovaj problem, tako
to ete ponovo otvoriti fajl i snimiti ga na pravilan nain.
Zatim, moete da restartujete Apache, tako to ete se vratiti u sistemsku paletu i potraiti ikonicu
EasyPHP. Dvostruko kliknite na ikonicu; bie prikazan okvir sa porukom u kojem je prikazan sta-
tus Apachea i MySQL-a. Verovatno ete videti crvenu boju za Apache status. Kliknite na dugme
Apache. Za nekoliko trenutaka boja bi trebalo da se promeni u zelenu, to znai da je server pokrenut.
Uradite isto za MySQL.
Nedostajui fajlovi
Ako primite poruku o greci koja se odnosi na nedostajue fajlove, to znai da su fajlovi nekako ote-
eni pre instalacije. Vratite se na web sajt EasyPHP i ponovo preuzmite fajlove. Ako na neki nain
pokvarite Apache konfiguracioni fajl, vratite se nazad i ponovo reinstalirajte proizvod.
Ostale greke
Greke koje ovde nisu opisane kopirajte i pejstujte u pretraiva. Potraite odgovore koji obezbeuje
i preporuku za ispravljanje greaka. Postoje mnogi besplatni izvori na Internetu. Nemojte da plaate
vlasniku web sajta (ili nekom drugom korisniku) za otklanjanje problema.
Konfiguracije
Treba da odredite kada elite da se Apache pokrene. Apache moe da bude podeen da se pokree
kada ukljuite PC i kada je potreban aplikaciji ili moe da se pokree runo. Da biste promenili
podeavanja, kliknite desnim tasterom mia na EasyPHP ikonicu u sistemskoj paleti (donji desni
ugao ekrana), pa selektujte Configuration i opciju EasyPHP. Ako ne vidite ikonicu, kliknite na stre-
licu nagore u sistemskoj paleti. Trebalo bi da bude prikazan mali ekran koji e vam omoguiti da
potvrdite (ili iskljuite) dve opcije - Start on Session Startup i Launch Servers When the Application
Starts.
Postoje mnoge opcione biblioteke kojima moete da uspostavite ili raskinete vezu sa PHP-om, po
potrebi. U mnogim sluajevima biblioteke su ve uitane i treba samo da budu povezane. Moete
da ih dodate ako otvorite PHP konfiguracioni fajl (php.ini) i uklonite karakter komentara (;) na
poetku linije. PHP konfiguracioni fajl moe lako da se pronae ako kliknete desnim tasterom mia
na EasyPHP ikonicu u sistemskoj paleti, pa selektujete Configuration i PHP. Nije vano da li ete
sada izvrite neke promene. Preporuljivo je da promene izvravate samo kada je potrebno. Druge
biblioteke mogu da se dodaju pomou Curla i drugih metoda, koji su opisani u narednim poglavljima
ove knjige.
Za detaljnije objanjenje php.ini fajla pogledajte besplatni The New Boston (thenewboston.com)
video na adresi https://www.thenewboston.com/videos.php?cat=11&video=16993.
22 POGLAVLJE 1 Uvod u PHP 7
XAMPP
Iako je slian EasyPHP-u, XAMPP je popularniji, zato to ima besplatne verzije za Windows, Linux
i OS X sisteme. Takoe ukljuuje puno dodataka, meu kojima su i neki najpopularniji sistemi za
upravljanje sadrajima - Drupal, Joomla i WordPress. Najnovijim verzijama moete da pristupite
direktno na zvaninom XAMPP web sajtu ili na mnogim drugim lokacijama za preuzimanje.
https://www.apachefriends.org/
Upozorenje
Obratite panju na koju dugmad klikete na web sajtu. Ako ne proitate ta preuzimate pre nego to kliknete na
dugme, moda ete preuzeti i neke dodatne stavke za koje niste zainteresovani.
U toku prvog pokuaja instaliranja upotrebite standardna podeavanja koja preporuuju programeri u
instalacionom softveru. Na taj nain ete smanjiti mogunost nastanka problema ili glavobolje. Ako
dobijete poruku o greci, radi pomoi proitajte sledei odeljak pod naslovom Uobiajeni problemi
instalacije.
NAPOMENA
Kada koristite Notepad ili bilo koji drugi editor za tekst, obavezno upotrebite opciju Save As, pa selektujte All Files
za vrstu fajla. Osim toga, obavezno ukljuite .conf ekstenziju fajla. Ako ne promenite vrstu fajla na All Files, fajl e biti
snimljen kao httpd.conf.txt. Ako se to desi, server nee videti fajl. Moete jednostavno da reite ovaj problem ako
ponovo otvorite fajl i snimite ga na pravilan nain.
Zatim, moete da restartujete Apache, tako to ete kliknuti na dugme Start pored stavke Apache
u XAMPP konzoli. Ako dobijete status za Apache zelene boje, takoe ete eleti da pokrenete i
MySQL klikom na dugme Start pored stavke MySQL.
Nedostajui fajlovi
Ako primite poruku o greci koja se odnosi na nedostajue fajlove, znai da su fajlovi nekako ote-
eni pre instalacije. Vratite se na web sajt XAMPP i ponovo ih preuzmite. Ako na neki nain pokva-
rite Apache konfiguracioni fajl, moraete da ponovo preuzmete fajlove.
Ostale greke
Greke koje ovde nisu opisane kopirajte i pejstujte u pretraiva. Potraite odgovor koji obezbeuje
i preporuku za ispravljanje greaka. Postoje mnogi besplatni izvori na Internetu. Nemojte da plaate
vlasniku web sajta (ili nekom drugom) za otklanjanje problema.
Konfiguracije
Moete da promenite konfiguraciju za XAMPP, tako to ete otvoriti Control Panel (dvostruko kli-
knite na XAMPP u sistemskoj paleti u donjem desnom uglu ekrana). Zatim, kliknite na dugme Con-
fig u gornjem desnom uglu ekrana (ne na dugmad Config koja se nalaze desno od aplikacije). Moete
da potvrdite (ili iskljuite) one aplikacije koje ne elite da se automatski pokrenu sledeeg puta kada
se pokrene Control Panel. Treba da potvrdite Apache i MySQL, zbog lekcija u ovoj knjizi. Naravno,
uvek moete da ih pokrenete iz Control Panela kada je to potrebno.
Postoje mnoge opcione biblioteke kojima moete da uspostavite ili raskinete vezu sa PHP-om, po
potrebi. U mnogim sluajevima biblioteke su ve uitane i treba samo da budu povezane. Moete da
ih dodate, tako to ete otvoriti PHP konfiguracioni fajl (php.ini) i ukloniti karakter komentara (;) na
poetku linije. PHP konfiguracioni fajl moe lako da se pronae ako dvostruko kliknete miem na
XAMPP ikonicu u sistemskoj paleti. Zatim, selektujte Configuration desno od opcije Apache. Bie
prikazana lista; selektujte php.ini. Nije vano da li ete sada izvriti neke promene. Preporuljivo je
da promene izvravate samo kada je potrebno. Druge biblioteke mogu da se dodaju pomou Curla i
drugih metoda, koji su opisani u narednim poglavljima ove knjige.
Uradite
1. Primili ste sledeu greku u toku instaliranja ili kada ste pokuali da pokrenete XAMMP ili
EasyPHP. Upotrebite pretraiva da biste odgovorili na pitanja kako moe da se pronae
reenje za problem i ta moe da izazove ovu greku?
Internal Server Error
The server encountered an internal error or misconfiguration and was
unable to complete your request.
Please contact the server administrator, you@example.com and inform
them of the time the error occurred, and anything you might have
done that may have caused the error.
More information about this error may be available in the server
error log.
4. Ako ve niste to uradili, sada instalirajte EasyPHP ili XAMPP na svoj lini raunar. Da li
ste imali nekih problema prilikom instalacije? Ako ste ih imali, kako ste ih reili?
Testiranje okruenja
Sada imate zelena svetla, zar ne? Sve funkcionie pravilno?
Da biste bili sigurni, najbolje je da izvrite test okruenja.
Ako treba da promenite port zbog konflikta, moda e biti potrebno da unesete broj porta,
kao to je
http://127.0.0.1:8080/home/.
Trebalo bi da vidite ekran slian onom koji je prikazan na slici 1-23.
Ako je XAMPP pravilno instaliran, trebalo bi da vidite ekran slian onome koji je prikazan na slici
1-24.
Ako sada ne vidite ovu stranicu (ili neku stranicu na kojoj je prikazan XAMPP), neto nije u redu.
Proverite da li je EasyPHP ili XAMPP pokrenut. Da li vidite zeleno svetlo ili zelenu boju za Apache
u XAMPP Control Panelu ili u EasyPHP-u? Ako ne vidite, pokuajte da kliknete na dugmad ili lin-
kove Start.
Ako Apache nee da se pokrene, da li vidite poruku o greci? Ako ne vidite, proverite fajl evidencije
greaka. Za EasyPHP kliknite desnim tasterom mia na ikonicu u sistemskoj paleti i selektujte fajl
evidencije greaka za Apache. Za XAMPP kliknite na dugme Log u Control Panelu pored stavke
Apache i selektujte Error Log.
Ako vidite zelenu boju, a stranice izgledaju kao da su zakljuane, pokuajte da zaustavite i ponovo
pokrenete Apache. Moda e biti potrebno da pokuate nekoliko puta dok ga ne probudite. Ako
nastavi da se prekida veza, proverite podeavanja raunara. Da li ste prevazili maksimum za upo-
trebu CPU-a?
Ako dobijete poruku o greci, pejstujte je u omiljeni pretraiva i vidite ta eksperti kau o tom
problemu.
Uradite
1. Ako ve niste to uradili, testirajte okruenje, koristei prethodno navedena uputstva. Da li
imate probleme? Ako imate, koji problemi su se pojavili? Kako ste ih otklonili?
28 POGLAVLJE 1 Uvod u PHP 7
Slika 1-25 Upotreba opcije Save As sa izabranom vrstom fajla All Files za snimanje PHP programa
Koristei opciju Save As u meniju File, promenite File Type na All Files ili na php. Unesite naziv
fajla myfirstprogram.php i snimite ga na jednu od narednih ispisanih lokacija.
Ako koristite EasyPHP, snimite program u
C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\data\localweb\projects
Naravno, treba da promenite naziv verzije (ili naziv programskog fajla) na odgovarajuu verziju
(lokaciju) koju koristite na svom raunaru. Ako imate verziju EasyPHP-a koja nema direktorijume
projekta localweb\, pronaite lokaciju direktorijuma www pod direktorijumom EasyPHP i kreirajte
direktorijum pod nazivom projects. Zatim, snimite fajl pod tim direktorijumom.
Ako koristite XAMPP, prvo otvorite C:\xampp\htdocs i kreirajte direktorijum pod nazivom projects.
Zatim se vratite u editor za tekst, izaberite opciju Save As (ne zaboravite da promenite vrstu fajla na All
Files ili php), dodelite naziv fajlu myfirstprogram.php i snimite ga na sledeu lokaciju.
C:\xampp\htdocs\projects
Testiranje okruenja 29
Ako ste pravilno snimili fajlove na EasyPHP ili XAMPP lokacijama, moete da pokuate da pokre-
nete program tako to ete u URL polje pretraivaa uneti
http://127.0.0.1/projects/myfirstprogram.php
Ako ste promenili port, promenite prvi deo na http://127.0.0.1:8080/ (unesite odgovarajui port
koji koristite, umesto 8080).
Trebalo bi da program prikae poruku koja je predstavljena na slici 1-26.
Uobiajeni problemi
Nita nije prikazano, error 404:
1. Uverite se da ste ukucali adresu tano onako kako je prikazana.
2. Moda je prekinuta veza sa serverom. Zaustavite server i ponovo ga pokrenite.
3. Uverite se da se fajl nalazi na odgovarajuoj lokaciji.
4. Uverite se da ste snimili fajl kao .php fajl, a ne kao .txt. Pokuajte ponovo da upotrebite
opciju Save As i promenite naziv fajla (uverite se da je vrsta fajla All Files ili php).
5. Potraite gramatike greke u aktuelnom kodu programa. Da li ste zaboravili znak taka-
zarez (;)? Ispravite greke i ponovo snimite fajl. Moda treba da zaustavite i ponovo
pokrenete server ako zbog neega ne vidi promene. Moete da pogledate fajlove evidencije i
potraite fajlove PHP evidencije da biste uoili greke koje moda postoje u kodu.
6. Otvorite fajlove Apache evidencije (sledite uputstva data u prethodnom odeljku
Uobiajeni problemi) i potraite greke - ako ne moete da ih ispravite, kopirajte ih i
pejstujte u pretraiva da biste videli koja su reenja pronali drugi korisnici.
Prikazan je kod aktuelnog programa, a ne rezultati izvrenja koda:
1. Uverite se da ste snimili fajl kao .php fajl, a ne kao .txt. Pokuajte ponovo da upotrebite
opciju Save As i promenite naziv fajla (uverite se da je vrsta fajla All Files ili php).
2. Apache server ili PHP moda nije pokrenut ili je veza prekinuta. Zaustavite Apache i
ponovo ga pokrenite.
3. Da li imate greku u <?php ili ?> linijama ili ste zaboravili da ih unesete?
4. Otvorite fajlove Apache evidencije (vidite uputstva data u prethodnom odeljku
Uobiajeni problemi) i potraite greke - ako ne moete da ih ispravite, kopirajte ih i
pejstujte u pretraiva da biste videli koja su reenja pronali drugi korisnici.
Za bilo koje druge greke kopirajte i pejstujte poruku o grekama u web pretraiva i vidite koja su
reenja pronali drugi korisnici.
30 POGLAVLJE 1 Uvod u PHP 7
Uradite
1. Ako jo niste testirali okruenje, uradite to. Da li test funkcionie? Koje ste probleme imali
i kako ste ih reili?
Alternativni direktorijumi
U stvarnom svetu je uobiajena praksa kreiranje alternativnih direktorijuma na web serverima. Alter-
nativni direktorijumi su lane lokacije fajlova, koji e prevariti korisnika vaeg web sajta i uveriti ga
da se fajl nalazi na jednoj lokaciji, a nalazi se, u stvari, na drugoj lokaciji.
Zato biste upotrebili alternativni direktorijum? Kada web sajtovi rastu, lokacije fajlova na serverima
e se moda menjati. Zbog upotrebe alternativnih direktorijuma, korisnik vaeg web sajta nee znati
da je stvarna lokacija fajla promenjena. Alternativni direktorijum omoguava da uvate fajlove na
bilo kojoj lokaciji na raunaru (serveru). Ako ga ne koristite, svi fajlovi moraju da budu sauvani na
standardnoj lokaciji. Standardne lokacije su:
EasyPHP: C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\data\localweb\
XAMPP: C:\xampp\htdocs\
Alternativni direktorijumi 31
Moda ete eleti da razmotrite kreiranje alternativnog direktorijuma, pogotovo ako elite da posta-
vite fajlove na USB disk sa fle memorijom. U ovoj knjizi pretpostavljamo da su fajlovi sauvani na
standardnim lokacijama u direktorijumu projects.
EasyPHP: C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\data\localweb\projects
XAMPP: C:\xampp\htdocs\projects
Ako se fajlovi nalaze na ovim lokacijama, moi ete da testirate programe, koristei isti URL, bez
obzira da li koristite EasyPHP ili XAMPP.
http://127.0.0.1/projects/myfirstprogram.php
Ako kreirate alterantivni direktorijum, ne zaboravite da zamenite projects alternativnim nazivom
koji koristite.
U XAMPP-u je potrebno malo vie posla. Otvorite sistemsku paletu, tako to ete dvostruko kliknuti
na ikonicu XAMPP. Zatim, kliknite na dugme Config desno od stavke Apache. Selektujte konfigura-
cioni fajl httpd-xampp iz liste. Izaberite Edit>Find iz menija u editoru teksta. Potraite niz <IfModule
alias_module>. Nemojte da promenite nita to je ve izlistano u ovom odeljku. Meutim, moete da
dodate lokacije (koristei sledei kod) za izvrne fajlove. Kada ste uneli potrebne linije, zaustavite i
ponovo pokrenite Apache da biste mu pomogli da pronae nove promene.
Alias /myfiles "C:/Temp"
<Directory "C:/Temp">
Options Indexes FollowSymLinks MultiViews ExecCGI
AllowOverride All
Require all granted
</Directory>
Za vie informacija o kreiranju alternativnih direktorijuma pogledajte stranicu
https://www.youtube.com/watch?v=XX6t3zJRXF8.
NAPOMENA
Ovo podeavanje direktorijuma omoguava itanje i pisanje u direktorijum. U narednom poglavlju emo opisati opcije
za bezbednost direktorijuma za ive sajtove.
Slika 1-30 Hello World pokrenut iz alternativnog direktorijuma pod nazivom myfiles kao index.php fajl
Ova lista omoguava da se bilo koji fajlovi u direktorijumu C:/Temp izvravaju na Apache serveru
kada korisnik unese myfiles kao naziv direktorijuma u URL liniju. Podeavanja direktorijuma koja su
izabrana ne pruaju veliku bezbednost. Meutim, ovaj primer slui samo za testiranje na test maini.
Ako se nalazite u ivom okruenju, treba da pojaate podeavanja bezbednosti pod tagom direc-
tory. Da biste izvrili fajlove unutar ovog direktorijuma, treba da unesete URL http://127.0.0.1/
myfiles u pretraiva. Ako ne ukljuite naziv fajla, Apache e pokuati da pronae index.html ili
index.php fajl. Ako ne postoji ni jedan od tih fajlova, Apache e izlistati fajlove u direktorijumu
sa aktuelnim podeavanjima. To e omoguiti lak pristup fajlovima za testiranje. Meutim, to nije
dobro u ivom okruenju. Moete da poaljete upit za fajl koji nije index fajl, tako to ete dodati
naziv fajla (http://127.0.0.1/myfiles/myfirstprogram.php). Ne zaboravite da ukljuite portov broj
ako ste morali da ga promenite (http://127.0.0.1:8080/myfiles/myfirstprogram.php). Naravno,
direktorijum mora da postoji i fajlovi moraju da se nalaze u direktorijumu pre nego to testirate URL
u pretraivau.
Uradite
1. Kreirajte alternativni direktorijum pod nazivom myfiles, koji ukazuje na postojeu lokaciju
na vaem hard drajvu ili USB drajvu sa fle memorijom. Postavite program hello world,
koji ste koristili za testiranje okruenja, u direktorijum. Pokuajte da pokrenete program iz
direktorijuma, koristei prethodne instrukcije. Da li ste uspeno izvrili ovaj zadatak? Ako
niste, kakav ste problem imali i kako ste ga reili?
Notepad++
Ostali editori
Postoje stotine drugih editora koji su dostupni. Preporuujem da izaberete onaj koji vam najvie
odgovara; www.download.com je dobar sajt na kojem moete da pronaete besplatne PHP editore.
Izaberite editor koji ima mnogo dobrih ocena od korisnika.
Kao to sam ranije pomenuo, moda ete eleti da isprobate EasyPHPs code classroom na adresi
www.codeclassroom.net
Termini poglavlja 35
Uradite
1. Izaberite editor za tekst koji ete koristiti za izvravanje kodiranja dok koristite ovu knjigu.
Preuzmite ga na raunar. Prekucajte program hello world u editor i snimite program.
Pokrenite program u pretraivau. Zato ste izabrali editor koji ste preuzeli? ta vam se
dopada, a ta vam se ne dopada u vezi tog editora?
Termini poglavlja
PHP Proceduralni jezik
Objektno-orijentisani jezik www.php.net
WAMP LAMP
MAMP Jezik za pisanje skriptova
Programski jezik JavaScript
Web pretraiva Izvorni kod
HTML CSS
Takovi skripta Web server
print funkcija Apache
Apache Software Foundation SQL
Sistem za upravljanje bazom podataka Statina stranica
Dinamika stranica GET HTTP upit
MySQL EasyPHP (verzija programera)
Port 80 httpd.conf
php.ini XAMPP
XAMPP Control Panel Alternativni direktorijumi
Otvoreni kod Notepad++
Tano/netano
1. Alternativni direktorijum omoguava da snimite fajlove web stranice u direktorijum po
vaem izboru, a ne u direktorijum www. Omoguava da URL adresa ukazuje direktno na
taj direktorijum.
2. Statina stranica je stranica koja je dodata u suilicu kada suite ve da biste spreili
statini elektricitet.
3. Klijent pretraiva alje GET HTTP zahtev serveru, a zatim server vraa odgovor u klijent
pretraiva.
4. Verzija programera EasyPHP-a moe da se kupi samo za jednu godinu.
5. Dinamika web stranica se nikada ne menja, a statina web stranica se uvek menja.
6. WAMP je skraenica za Windows, Apache, MySQL i PHP.
7. Apache je primer web servera.
8. HTML je skraenica za Hypertext Markup Language.
9. PHP je skraenica za Personal Home Page.
10. Proceduralni jezik je programski jezik koji koristi klase i objekte.
11. Dok pregledate web sajt u pretraivau, moete da vidite izvorni kod, koji moe da vam
pokae HTML, JavaScript i CSS. Meutim, PHP kod nee biti vidljiv.
12. Java je proceduralni programski jezik.
Kratak odgovor/Esej
1. Objasnite proces koji se deava kada pretraiva poalje upit za statinu web stranicu.
2. Objasnite proces koji se deava kada pretraiva poalje upit za dinamiku web stranicu.
3. Objasnite razliku izmeu proceduralnog jezika i jezika za pisanje skriptova.
4. Kako ete u program dodati kod za pristup PHP biblioteci?
5. Zato treba da upotrebite WAMP, MAMP ili LAMP, umesto da pojedinano instalirate
svaku aplikaciju?
38 POGLAVLJE 1 Uvod u PHP 7
Projekti
1. Kreirajte PHP program koji e prikazati rezime vae radne istorije i istorije obrazovanja.
2. Kreirajte PHP program koji e prikazati va glavni predmet i obuku koja je potrebna da
zavrite glavni predmet.
3. Kreirajte PHP program koji e prikazati ciljeve i/ili zadatke vaeg koleda/univerziteta.
Dugoroni projekat
1. Va nadreeni je zatraio da dizajnirate bezbednu aplikaciju koja e pratiti inventar u
skladitu preduzea ABC Computer Parts Corporation. Ova aplikacija e biti pristupana i
unutar samog skladita i van njega (korienjem Interneta i/ili pametnog telefona). Za koje
podatke su potrebna polja za praenje ovih informacija? Koje veliine i vrste podataka
(niz, ceo broj, broj sa pokretnom takom) treba da definiu ova polja? Koja druga
ogranienja unosa (bez negativnih vrednosti za broj stavke) treba da se definiu za ova
polja?
Na primer, ako je za izradu vebe potrebno polje za Social Security Number (SSN):
SSN: Veliina: Min: 9 karaktera (niz) Max: 9 karaktera (niz) Ogranienja: validan SSN
format.
Ne zaboravite da ova informacija koristi karaktere, ne cele brojeve, jer nee biti nikakvog
izraunavanja za SSN broj.