vi I PHP....................................... 9 1 Kratak kurs PHP-a............................ 11 Upotreba PHP-a.............................................12 Probna aplikacija: Bobovi auto-delovi.............................. 12 Ugradça PHP-a u HTML......................................14 Dodavaçe dinamiåkog sadræaja................................... 18 Pristup promenàivama obrasca................................... 19 Identifikatori................................................23 Promenàive koje deklariãe korisnik................................ 23 Davaçe vrednosti promenàivama................................. 23 Tipovi promenàivih...........................................24 Konstante..................................................25 Oblast vaæeça promenàive......................................26 Operatori..................................................27 Upotreba operatora: izraåunavaçe zbira cena na obrascu................ 33 Prioriteti i asocijativnost: izraåunavaçe izraza........................ 34 Funkcije koje upravàaju promenàivama............................ 35 Upravàaåke strukture..........................................37 Donoãeçe odluka u uslovnim strukturama.......................... 37 Petàe: ponavàaçe radçi.......................................42 Izlazak iz upravàaåke strukture................................... 45 Ãta sledi....................................................46 2 Snimaçe i åitaçe podataka...................... 47 Snimaçe podataka............................................47 Snimaçe i åitaçe porudæbina....................................48 Obrada datoteka.............................................48 Otvaraçe datoteke............................................49 Upisivaçe u datoteku.........................................54 Zatvaraçe datoteke...........................................55 Åitaçe datoteke..............................................55 Ostale korisne funkcije za rad s datotekama.......................... 59 Zakàuåavaçe datoteke.........................................60 Boài naåin: sistemi za upravàaçe bazama podataka.................... 61 Dodatna literatura............................................62 Ãta sledi....................................................62
vii 3 Upotreba nizova.............................. 63 Ãta je niz?..................................................63 Numeriåki indeksirani nizovi....................................64 Asocijativni nizovi............................................66 Viãedimenzionalni nizovi.......................................68 Ureœivaçe nizova............................................71 Ureœivaçe viãedimenzionalnih nizova............................. 72 Pravàeçe novog rasporeda u nizu................................. 74 Uåitavaçe nizova iz datoteka....................................76 Ostale radçe s nizovima........................................79 Dodatna literatura............................................83 Ãta sledi....................................................83 4 Znakovni nizovi i regularni izrazi.................. 85 Probna aplikacija: Smart Form Mail............................... 85 Formatiraçe znakovnih nizova................................... 87 Spajaçe i razdvajaçe znakovnih nizova............................. 92 Poreœeçe znakovnih nizova.....................................94 Podudarnost i zamena znakovnih podnizova......................... 95 Regularni izrazi..............................................98 Pronalaæeçe znakovnih podnizova regularnim izrazima................ 102 Zamena znakovnih podnizova regularnim izrazima................... 103 Deàeçe znakovnih nizova regularnim izrazima...................... 103 Poreœeçe funkcija za rad sa znakovnim nizovima i funkcija za rad sa regularnim izrazima..................................... 103 Dodatna literatura........................................... 104 Ãta sledi................................................... 104 5 Ponovna upotreba koda i pisaçe funkcija........... 105 Prednosti ponovne upotrebe koda................................ 105 Upotreba iskaza require i include................................ 106 Upotreba iskaza require u ãablonima za Web stranice.................. 108 Upotreba funkcija........................................... 115 Prednosti pisaça funkcija...................................... 117 Osnovna struktura funkcije..................................... 118 Parametri.................................................. 119 Oblast vaæeça.............................................. 121 Prenos po referenci ili po vrednosti............................... 123 Vrañaçe iz funkcije.......................................... 124 Vrañaçe vrednosti iz funkcija................................... 125 Rekurzija................................................. 127 Dodatna literatura........................................... 128 Ãta sledi................................................... 128
viii 6 Objektno orijentisani PHP...................... 129 Objektno orijentisano programiraçe.............................. 129 Pravàeçe klasa, atributa i operacija............................... 131 Instanciraçe............................................... 132 Upotreba atributa klase........................................ 133 Pozivaçe operacija klasa....................................... 135 Nasleœivaçe............................................... 135 Projektovaçe klasa........................................... 138 Pisaçe klasa................................................ 139 Ãta sledi................................................... 147 II MySQL................................... 149 7 Projektovanje baze podataka za Web............... 151 Relacione baze podataka...................................... 152 Projektovaçe baze podataka za Web.............................. 154 Arhitektura baze podataka za Web............................... 159 Dodatna literatura........................................... 160 Ãta sledi................................................... 160 8 Pravàeçe baze podataka....................... 161 Napomena o upotrebi MySQL monitora.......................... 162 Prijavàivaçe na MySQL...................................... 162 Pravàeçe baza podataka i korisnika............................... 164 Korisnici i ovlaãñeça......................................... 164 Uvod u sistem ovlaãñeça MySQL-a.............................. 164 Definisaçe korisnika za Web................................... 169 Upotreba odgovarajuñe baze podataka............................. 169 Pravàeçe tabela baze podataka.................................. 170 Identifikatori............................................... 174 Tipovi podataka u kolonama................................... 175 Dodatne informacije......................................... 180 Ãta sledi................................................... 180 9 Rad sa MySQL bazom podataka.................. 181 Ãta je SQL?................................................ 181 Unoãeçe podataka u bazu..................................... 182 Uzimaçe podataka iz baze..................................... 184 Aæuriraçe zapisa u bazi podataka................................ 193 Izmena strukture tabela........................................ 194 Brisaçe zapisa iz baze podataka.................................. 195
ix Brisaçe tabela.............................................. 195 Brisaçe åitave baze podataka................................... 196 Dodatna literatura........................................... 196 Ãta sledi................................................... 196 10 Pristup bazi podataka sa Weba pomoñu PHP-a....... 197 Arhitektura baze podataka za Web............................... 198 Osnovni koraci u zadavaçu upita bazi podataka sa Weba............... 200 Provera i filtriraçe ulaznih podataka.............................. 201 Povezivaçe................................................ 202 Izbor baze podataka.......................................... 203 Zadavaçe upita bazi podataka................................... 203 Åitaçe rezultata upita........................................ 204 Prekid veze s bazom podataka................................... 205 Unoãeçe novih informacija u bazu podataka........................ 205 Ostale korisne funkcije........................................ 209 Ostali sistemi za rad s bazama podataka............................ 209 Upotreba opãte biblioteke za rad s bazom podataka: PEAR DB.......... 210 Dodatna literatura........................................... 212 Ãta sledi................................................... 212 11 Naprednije karakteristike sistema MySQL........... 213 Detaàna objaãçeça sistema ovlaãñeça............................ 213 Zaãtita MySQL baze podataka.................................. 218 Dodatne informacije o bazama podataka........................... 220 Bræe izvrãeçe upita pomoñu indeksa.............................. 225 Saveti za optimizovaçe....................................... 225 Razliåiti tipovi tabela......................................... 226 Uåitavaçe podataka iz datoteke................................. 227 Rezervne kopije baze podataka.................................. 227 Rekonstruisaçe baze podataka.................................. 228 Dodatna literatura........................................... 228 Ãta sledi................................................... 228 III Elektronska trgovina i bezbednost................. 229 12 Upravàaçe elektronskom prodavnicom............. 231 Ãta æelite da postignete?....................................... 231 Tipovi komercijalnih Web lokacija............................... 231 Rizici i opasnosti............................................ 239 Izbor strategije.............................................. 241 Ãta sledi................................................... 241
x 13 Bezbednost u elektronskoj trgovini................ 243 Vaænost informacija.......................................... 243 Pretçe po bezbednost........................................ 244 Kompromis izmeœu upotrebàivosti, uåinka, troãkova i bezbednosti........ 250 Izrada bezbednosnog pravilnika.................................. 250 Principi provere identiteta..................................... 251 Provera identiteta............................................ 252 Osnove ãifrovaça........................................... 252 Ãifrovaçe privatnim kàuåem................................... 253 Ãifrovaçe javnim kàuåem..................................... 254 Digitalni potpisi............................................. 254 Digitalni sertifikati........................................... 255 Bezbedni Web serveri........................................ 256 Zapisnici i provera bezbednosti.................................. 257 Zaãtitne barijere............................................. 258 Pravàeçe rezervnih kopija..................................... 258 Fiziåka bezbednost........................................... 259 Ãta sledi................................................... 260 14 Provera identiteta pomoñu PHP-a i MySQL-a........ 261 Identifikovaçe korisnika...................................... 261 Upravàaçe pristupom........................................ 262 Osnovna provera identiteta..................................... 269 Osnovna provera identiteta u PHP-u............................. 269 Osnovna provera identiteta s datotekama.htaccess servera Apache........ 271 Osnovna provera identiteta na serveru IIS.......................... 274 Provera identiteta modulom mod_auth_mysql....................... 276 Namensko reãeçe za proveru identiteta........................... 279 Dodatna literatura........................................... 279 Ãta sledi................................................... 279 15 Realizovaçe bezbednih transakcija................ 281 Zaãtita transakcija............................................ 281 Upotreba protokola SSL....................................... 285 Provera ispravnosti podataka koje korisnik unosi..................... 288 Zaãtita skladiãta za podatke..................................... 289 Zaãto snimate brojeve kreditnih kartica?........................... 290 Ãifrovaçe podataka pomoñu PHP koda........................... 290 Dodatna literatura........................................... 298 Ãta sledi................................................... 298
xi IV Napredne PHP tehnike........................ 299 16 Rad sa sistemom datoteka i serverom.............. 301 Uvod u slaçe datoteka........................................ 301 Rad s direktorijumima........................................ 309 Rad sa sistemom datoteka...................................... 312 Izvrãavaçe programa......................................... 315 Saradça sa okruæeçem: funkcije getenv i putenv.................... 318 Dodatna literatura........................................... 318 Ãta sledi................................................... 318 17 Upotreba mreænih funkcija i protokola............. 319 Pregled mreænih protokola..................................... 319 Slaçe i primaçe poruka e-poãtom............................... 320 Koriãñeçe drugih Web lokacija................................. 320 Ispitivaçe mreæe............................................ 323 Upotreba protokola FTP...................................... 327 Komuniciraçe pomoñu opãte biblioteke curl...................... 335 Dodatna literatura........................................... 337 Ãta sledi................................................... 337 18 Rad s datumima i vremenima................... 339 Åitaçe tekuñeg datuma i vremena u PHP skriptu.................... 339 Konverzija izmeœu PHP-ovih i MySQL-ovih formata za datume......... 342 Proraåuni s datumima......................................... 344 Upotreba kalendarskih funkcija.................................. 345 Dodatna literatura........................................... 346 Ãta sledi................................................... 346 19 Generisaçe slika............................. 347 Podeãavaçe podrãke za rad sa slikama u PHP-u...................... 347 Formati za slike............................................. 348 JPEG..................................................... 348 PNG..................................................... 349 WBMP................................................... 349 GIF...................................................... 349 Izrada slika................................................. 350 Upotreba automatski generisanih slika u drugim stranicama............. 355 Upotreba teksta i fontova za generisaçe slika........................ 356 Crtaçe geometrijskih oblika i predstavàaçe podataka u obliku dijagrama... 363 Druge funkcije za rad sa slikama................................. 371 Dodatna literatura........................................... 371 Ãta sledi................................................... 371
xii 20 Upravàaçe sesijama u PHP-u................... 373 Ãta je upravàaçe sesijama?..................................... 373 Kako se odvija sesija.......................................... 374 Programiraçe jednostavnih sesija................................ 376 Jednostavan primer upotrebe sesije............................... 378 Podeãavaçe parametara za upravàaçe sesijama...................... 380 Upotreba sesija za identifikovaçe korisnika......................... 381 Dodatna literatura........................................... 387 Ãta sledi................................................... 387 21 Ostale korisne moguñnosti...................... 389 Upotreba magiånih navodnika.................................. 389 Izraåunavaçe vrednosti izraza zadatog u obliku teksta: eval............. 390 Prekid izvrãavaça skripta: die i exit............................... 391 Serijalizovaçe.............................................. 391 Åitaçe podataka o izvrãnom okruæeçu............................ 392 Dinamiåko uåitavaçe proãireça................................. 394 Privremene izmene radnog okruæeça skripta........................ 394 Isticaçe sintakse izvornog koda................................. 395 Ãta sledi................................................... 395 V Praktiåni projekti............................ 397 22 Upotreba PHP-a i MySQL-a u veñim projektima...... 399 Primena principa softverskog inæeçerstva na razvoj Web aplikacija........ 400 Planiraçe i voœeçe projekta Web aplikacije........................ 400 Viãekratna upotreba koda...................................... 401 Pisaçe koda koji se lakãe odræava................................ 402 Upravàaçe verzijama koda..................................... 406 Izbor razvojnog okruæeça..................................... 407 Dokumentovaçe projekata.................................... 408 Izrada prototipa............................................. 409 Razdvajaçe logike od sadræaja.................................. 410 Optimizovaçe koda.......................................... 410 Testiraçe koda............................................. 412 Dodatna literatura........................................... 413 Ãta sledi................................................... 413 23 Otklaçaçe greãaka........................... 415 Programske greãke........................................... 415 Pomoñ za ispitivaçe promenàivih................................ 423 Nivoi obaveãteça o greãkama................................... 425
xiii Podeãavaçe nivoa obaveãteça o greãkama......................... 426 Izazivaçe greãaka............................................ 428 Obrada greãaka............................................. 428 Ãta sledi................................................... 430 24 Identifikovaçe korisnika i personalizovaçe prezentacije. 431 Problem.................................................. 431 Komponente reãeça......................................... 432 Pregled reãeça.............................................. 433 Izrada baze podataka......................................... 435 Izrada osnovne verzije Web lokacije.............................. 436 Identifikovaçe korisnika...................................... 439 Unoãeçe i uåitavaçe obeleæivaåa................................ 456 Prikazivaçe preporuka........................................ 462 Zaokruæivaçe aplikacije i moguña proãireça........................ 466 Ãta sledi................................................... 466 25 Izrada korpe za kupovinu...................... 467 Problem.................................................. 467 Komponente reãeça......................................... 468 Pregled reãeça.............................................. 469 Priprema strukture baze podataka................................ 472 Izrada Web kataloga.......................................... 475 Izrada korpe za kupovinu...................................... 482 Obrada uplata.............................................. 496 Izrada administratorskog okruæeça............................... 499 Proãireça i dopune projekta.................................... 507 Upotreba postojeñeg sistema.................................... 507 Ãta sledi................................................... 507 26 Izrada sistema za upravàaçe sadræajem............. 509 Problem.................................................. 509 Zahtevi koje treba da ispunimo.................................. 510 Aæuriraçe sadræaja........................................... 510 Upotreba metapodataka....................................... 512 Formatiraçe izlaznih podataka.................................. 513 Rad sa slikama.............................................. 514 Struktura/pregled reãeça...................................... 516 Formiraçe strukture baze podataka............................... 517 Izrada aplikacije............................................. 519 Proãireçe projekta........................................... 535 Ãta sledi................................................... 536
xiv 27 Izrada aplikacije za usluge e-poãte................ 537 Problem.................................................. 537 Komponente reãeça......................................... 538 Pregled reãeça.............................................. 539 Formiraçe strukture baze podataka............................... 541 Arhitektura skripta........................................... 542 Prijavàivaçe u aplikaciju i odjavàivaçe iz çe....................... 549 Otvaraçe novog naloga....................................... 552 Åitaçe prispelih poruka....................................... 557 Slaçe poruka e-poãtom....................................... 568 Proãireça projekta........................................... 572 Ãta sledi................................................... 572 28 Izrada aplikacije za upravàaçe listama slaça......... 573 Problem.................................................. 573 Komponente reãeça......................................... 574 Pregled reãeça.............................................. 575 Formiraçe baze podataka...................................... 577 Arhitektura skripta........................................... 579 Prijavàivaçe za rad u aplikaciji.................................. 587 Programiraçe funkcija za korisnika............................... 593 Programiraçe funkcija za administratora........................... 606 Proãireça projekta........................................... 623 Ãta sledi................................................... 624 29 Izrada Web foruma........................... 625 Problem.................................................. 625 Komponente reãeça......................................... 626 Pregled reãeça.............................................. 627 Struktura baze podataka....................................... 629 Pregled stabla poruka......................................... 631 Pregledaçe pojedinaånih poruka................................ 644 Unoãeçe novih poruka....................................... 646 Proãireça................................................. 653 Upotreba postojeñeg sistema.................................... 653 Ãta sledi................................................... 654 30 Generisaçe personalizovanih dokumenata u formatu PDF 655 Problem.................................................. 655 Poreœeçe formata dokumenata.................................. 656 Komponente reãeça......................................... 660 Pregled reãeça.............................................. 663
xv Problemi sa zaglavàima........................................ 686 Proãireça projekta........................................... 686 Dodatna literatura........................................... 686 31 Povezivaçe s Web uslugama pomoñu XML-a i SOAP-a 687 Problem.................................................. 687 Ãta je to XML?............................................. 688 Ãta su to Web usluge?........................................ 692 Komponente reãeça......................................... 694 Pregled reãeça.............................................. 695 Instaliraçe koda projekta...................................... 731 Proãireça projekta........................................... 732 Dodatna literatura........................................... 732 VI Dodaci................................... 733 A Instaliraçe PHP-a i MySQL-a................... 735 Upotreba PHP-a kao CGI programa ili kao modula.................. 736 Instaliraçe Apachea, PHP-a i MySQL-a u Unixu.................... 736 Instaliraçe Apachea, PHP-a i MySQL-a u Windowsu................. 746 Instaliraçe biblioteka PEAR.................................... 755 Ostale konfiguracije.......................................... 756 B Izvori informacija na Webu..................... 757 Izvori informacija o PHP-u.................................... 757 Izvori informacija o MySQL-u i SQL-u........................... 759 Izvori informacija o Apacheu................................... 759 Izvori informacija o razvoju Web aplikacija......................... 760 Spisak termina koriãñenih u kçizi................. 761 Indeks.................................... 763