dwap1

10
DWA1p1 Dinamičke web aplikacije Mario Radovan (2013) * Radni materijal za predavanja, sačinjen većinom prema knjizi L. Welling i L. Thompson: PHP and MySQL: Web Development, 2003, 2008 (u tekstu referiramo na tu knjigu sa "W&T"). Korištena je i knjiga L. Ullman: PHP and MySQL For Dynamic Web Sites. Ovaj radni materijal služi samo za nastavne potrebe na Odjelu za informatiku Sveučilišta u Rijeci i na FETu Sveučilišta u Puli. Materijal se mijenja i dopunjuje. 1. UVOD * U ovim bilješkama iznosimo osnovna znanja o razvoju interaktivnih web stranica, odnosno interaktivnih web aplikacija uz upotrebu skriptnog jezika PHP kao "nadgradnje" osnovnog jezika za izradu web stranica, HTML. Web stranicu nazivamo interaktivnom ako nudi mogućnost interaktivne komunikacije, pod čime ovdje podrazumijevamo dvosmjernu razmjenu sadržajno relevantnih poruka. Takva komunikacija odvija se između nekog sustava za obradu podataka (aplikacije) i nekog udaljenog korisnika (klijenta, "gledatelja" web-stranice), pri čemu sama web stranica ima ulogu komunikacijskog sučelja toga sustava/aplikacije. Naprimjer, interaktivna stranica može omogućavati postavljanje raznih upita, izravno slanje poruka vlasniku stranice, naručivanje robe i usluga (kod e-poslovanja) i slično. Kako to pokazuju naslovi iznad navedenih knjiga, jezik PHP se često izlaže u paru sa sustavom za upravljanje relacijskom bazom podataka MySQL. Ali u jeziku PHP mogu se raditi aplikacije i bez upotrebe relacijske baze podataka. U uvodnom prikazu toga 1

Upload: ammar-botonjic

Post on 16-Sep-2015

4 views

Category:

Documents


3 download

DESCRIPTION

dinamičke

TRANSCRIPT

Proba

DWA1p1

Dinamike web aplikacijeMario Radovan (2013)

* Radni materijal za predavanja, sainjen veinom prema knjizi L. Welling i L. Thompson: PHP and MySQL: Web Development, 2003, 2008 (u tekstu referiramo na tu knjigu sa "W&T"). Koritena je i knjiga L. Ullman: PHP and MySQL For Dynamic Web Sites. Ovaj radni materijal slui samo za nastavne potrebe na Odjelu za informatiku Sveuilita u Rijeci i na FETu Sveuilita u Puli. Materijal se mijenja i dopunjuje.

1. UVOD

* U ovim biljekama iznosimo osnovna znanja o razvoju interaktivnih web stranica, odnosno interaktivnih web aplikacija uz upotrebu skriptnog jezika PHP kao "nadgradnje" osnovnog jezika za izradu web stranica, HTML. Web stranicu nazivamo interaktivnom ako nudi mogunost interaktivne komunikacije, pod ime ovdje podrazumijevamo dvosmjernu razmjenu sadrajno relevantnih poruka. Takva komunikacija odvija se izmeu nekog sustava za obradu podataka (aplikacije) i nekog udaljenog korisnika (klijenta, "gledatelja" web-stranice), pri emu sama web stranica ima ulogu komunikacijskog suelja toga sustava/aplikacije. Naprimjer, interaktivna stranica moe omoguavati postavljanje raznih upita, izravno slanje poruka vlasniku stranice, naruivanje robe i usluga (kod e-poslovanja) i slino.Kako to pokazuju naslovi iznad navedenih knjiga, jezik PHP se esto izlae u paru sa sustavom za upravljanje relacijskom bazom podataka MySQL. Ali u jeziku PHP mogu se raditi aplikacije i bez upotrebe relacijske baze podataka. U uvodnom prikazu toga jezika koristimo standardne sekvencijalne datoteke, dok smo prikaz relacijskog sustava MySQL ostavili za kasnije (za predmet "Dinamike web aplikacije 2").

* Pojam dinamikih web stranica odnosi se na nain generiranja (tvorbe) web stranica. Web stranicu nazivamo dinamikom ako ona nije trajno i eksplicitno zapisana (u HTML jeziku) na serveru, nego se dinamiki generira prigodom njena pozivanja. Bitna osobina jezika PHP jest upravo to da omoguava dinamiku tvorbu web stranica. S tim u vezi spomenimo da se neke dinamiki generirane web stranice mogu privremeno pohranjivati kao HTML datoteke u radnoj memoriji sustava; naime, dinamiko generiranje web stranice (iz PHP skripta) moe predstavljati znatno procesno optereenje za sustav (web server); zato se neke (esto pozivane) web stranice koje se dinamiki generiraju, mogu uvati u radnoj memoriji sustava/servera (kao HTML datoteke), umjesto da se prigodom svakog njihovog poziva generiraju nanovo (iz PHP skripta). O tome e biti jo rijei kasnije; ovdje recimo samo to, da takve (privremeno pohranjene) web stranice svejedno smatramo dinamiki generiranima, makar se njihovo generiranje i ne izvodi ba kod svakog njihovog poziva.

* Za razumijevanje gradiva iz ove skripte (posebno primjera kodnih/programskih zapisa) potrebno je poznavati osnove jezika za izradu web-stranica HTML. Te su osnove relativno jednostavne i trebale bi biti poznate iz vjebi iz drugih predmeta. Ali oni elementi HTML jezika koji se koriste u primjerima iz ove skripte, u cijelosti su opisani i u ovom tekstu.

* Izravan praktini razlog za upoznavanje skriptnog jezika PHP i sustava za upravljanje bazom podataka MySQL je taj, to ovi alati omoguavaju uinkovitu izradu velikih (poslovnih) interaktivnih web sjedita (web sites). Web sjeditem smo ovdje nazvali sustav mrene strukture koji obuhvaa vei broj web stranica (ili omoguava njihovu dinamiku tvorbu) pri emu te stranice tvore jednu funkcijsku i organizacijsku cjelinu. Naprimjer, jedan takav sustav moe nuditi mnogo proizvoda, pri emu svaki od tih proizvoda moe biti opisan na zasebnoj dinamiki generiranoj web stranici, omoguavati slanje/primanje narudbi za te proizvode, slati (automatski) odgovore na primljene narudbe ili na eventualne dodatne upite, i slino.

* Interaktivni sustavi openito se sastoje od dvije osnovne komponente (ili podsustava), i to od komunikacijske komponente (razna suelja) i procesne komponente. Interaktivan sustav treba omoguavati izravno prihvaanje ulaznih podataka i upita (od korisnika) i davanje (prikazivanje) odgovora sustava na te ulazne podatke (upite). Da bi sustav mogao adekvatno pohraniti ulazne podatke, obraditi ih (izraunati odgovore na upite), sustav treba sadravati procesnu komponentu; ta komponenta u svom radu obino koristi neki sustav datoteka podataka, odnosno sustav baze podataka.

* Problematika razvoja interaktivnih i dinamikih web aplikacija je izrazito opsena i obuhvaa vie programskih alata (HTML, PHP, MySQL, i druge). Nadalje, razvoj opsenih web sjedita i zahtjevnih web aplikacija iziskuje specifina znanja o naelima i metodama oblikovanja opsenih/sloenih softverskih sustava kao i o planiranju rada na razvoju takvih sustava. Povrh toga, bitan dio posla kod izrade interaktivnih web sjedita/aplikacija odnosi se na rjeavanje pitanja sigurnosti i zatite podataka i komunikacije. To se pogotovo odnosi na web sjedita koja su namijenjena e-poslovanju (trgovini, financijskim transakcijama, i slinim poslovima). Knjiga W&T, prema kojoj su veinom sainjene ove biljeke, je vrlo opsena i govori o tim stvarima. Meutim, u okviru ovih predavanja nije mogue obraditi sve ove teme. Ovdje emo iznijeti prvenstveno osnove skriptnog jezika PHP; o drugim elementima vezanim uz izradu interaktivnih i dinamikih web sjedita/aplikacija biti e vie rijei u okviru predmeta "Dinamike web aplikacije 2".

* PHP se obino naziva server-side skriptnim jezikom koji je namijenjen razvoju interaktivnih i dinamikih web aplikacija. Pojam server-side kazuje da se svi stavci (skriptovi) napisani u jeziku PHP izvode na strani servera, to jest na mrenom voru na kojem se nalazi web stranica koju je neki klijent traio (i sa kojom komunicira). Blokovi stavaka PHP jezika (skriptovi) obino se uvrtavaju u datoteke HTML stavaka. Za tako uvrtene/ugraene PHP stavke esto se kae da su ugnijeeni (embeded) u HTML kodni zapis. Tako to kau W&T, ali ponekad bi se moglo rei da su HTML stavci ugraeni u PHP datoteku (jer PHP skriptovi dominiraju).

* Kad web server primi zahtjev nekog klijenta da mu dostavi neku web stranicu koja se dinamiki generira uz upotrebu PHP skriptova, onda web server pokree PHP interpreter koji procesira (interpretira) odgovarajuu datoteku koja sadri PHP i HTML stavke. Iz danih PHP stavaka (skripata), PHP interpreter generira odgovarajue HTML stavke i postavlja ih na ona mjesta gdje su stajali PHP skriptovi. Rezultat takve interpretacije je HTML datoteka koja se predaje web serveru. Web server zatim tu dinamiki generiranu HTML datoteku prosljeuje klijentu iji preglednik (browser) onda prikazuje njen sadraj u obliku web stranice na ekranu klijenta.Ullman, str. xiii, ilustrira opisani proces na nain kako to pokazuje slika 1.1. Pritom, prvi grafiki prikaz prikazuje komunikaciju izmeu klijenta i servera kod statikih HTML datoteka (web stranica), dok drugi grafiki prikaz prikazuje kako taj proces izgleda kod dinamike tvorbe HTML datoteka (web stranica) uz pomo skripata pisanih u jeziku PHP. U potonjem sluaju, web server pokree PHP interpreter koji interpretira (izvodi) PHP skripte i time generira HTML kodni zapis; PHP interpreter predaje taj kodni zapis web serveru, koji ga onda alje klijentu.

Slika 1.1

* Dinamiki kreirana interaktivna web stranica obino omoguava klijentu da u nju upisuje razne upite i sadraje, te da dobiva odgovore od vlasnika stranice. Proces izraunavanja odgovora koje generira neka web aplikacija koja se zasniva na primjeni PHP jezika, esto ukljuuje i upotrebu sustava datoteka ili baze podataka, kako to ilustrira slika 1.2 (Ullman, str. xv). Na danoj slici, PHP skripti (prigodom svog izvoenja) koriste relacijsku bazu podataka, odnosno sustav MySQL za upravljanje relacijskom bazom podataka. Meutim, kako je to ranije reeno, umjesto relacijske baze podataka, PHP moe koristiti i standardni sustav sekvencijalnih datoteka. Takav sustav koristiti emo u uvodnom prikazu jezika PHP, dok ne upoznamo sustav MySQL i jezik SQL, u predmetu "Dinamike web aplikacije 2".

Slika 1.2

* Dakle, jezik PHP omoguava da se na web serveru generira web stranicu u trenutku kada neki klijent zatrai tu stranicu; takav nain generiranja web stranica nazivamo dinamikim generiranjem web stranica. Nadalje, jezik PHP omoguava razvoj web aplikacija koje omoguuju izravnu komunikaciju (razmjenu poruka) izmeu klijenta (korisnika) i servera (aplikacije) putem web stranica kao komunikacijskog suelja: takav nain komuniciranja nazivamo interaktivnim komuniciranjem. Zato kaemo da PHP omoguava dinamiko generiranje interaktivnih web stranica, odnosno aplikacija.

* Ugraeni PHP stavci izvravaju se svaki put ("dinamiki") kad neki klijent zatrai neku HTML datoteku koja sadri ugnijeene PHP stavke (skriptove). Pritom se ti ugnijeeni PHP stavci izvravaju (interpretiraju) na serveru na kojem je traena datoteka pohranjena, prije nego to se tako dinamiki kreirana HTML datoteka poalje klijentu. Zato kaemo da je PHP server-side skriptni jezik. Rezultat interpretacije PHP stavaka je HTML kodni zapis, tako da klijent dobiva istu HTML datoteku, bez izvornih PHP stavaka jer su ti stavci "potroeni" (interpretirani) na serveru; rezultat njihovog izvrenja postao je dio HTML datoteke koju server alje klijentu.

* Rad na razvoju jezika PHP zapoeo je Rasmus Lerdorf, 1994. godine. Prema podacima koje iznose W&T, 2002. godine PHP jezik koristio se na preko devet milijuna domena. Ullman, str. xii, kae da je poetkom 2003. godine ta brojka porasla na dvanaest milijuna domena. Tekue stanje rairenosti primjene jezika PHP moe se vidjeti na adresihttp://www.php.net/usage.php

* PHP je Open Source proizvod, tako da korisnik ima pristup izvornom kodnom zapisu toga sustava (valjda interpretera PHP stavaka). S obzirom da je PHP sustav otvoren, korisnik ima mogunost da mijenja i dorauje taj sustav prema vlastitim potrebama (ako to zna, naravno).

* Obino se kae da naziv "PHP" znai PHP Hypertext Preprocessor; dakle, "PHP predprocesor hiperteksta", pri emu bi pojam "hipertext" ovdje trebao oznaavati HTML datoteku sa ugraenim PHP stavcima. Takav naziv bio bi opravdan zato to PHP interpreter procesira HTML datoteke sa ugnijeenim PHP stavcima, interpretira te PHP stavke i iz njih generira odgovarajue HTML stavke koji nastaju kao rezultat te interpretacije. Dakle, PHP interpreter "pred-procesira" HTML datoteku sa ugnijeenim PHP stavcima, prije (zbog toga ono "pred") nego to e ta datoteka (sa rezultatima tog pred-procesiranja) biti predana web serveru, i dalje, klijentu.Meutim, takva definicija je problematina jer je cirkularna. Moglo bi se rei da je rekurzivna, ali bez "uvjeta zaustavljanja" jer se pojam "PHP" kojeg se njome definira, javlja u opisu vlastita znaenja. Dakle, objanjenje znaenja naziva PHP je problematino, ali to ne umanjuje upotrebnu vrijednost toga jezika.

* Domna (home) stranica sustava PHP nalazi se na adresihttp://www.php.netJezik/sustav PHP vezuje se (iako nekako neodreeno, W&T, str. 3) uz tvrtku Zend, zato to su ljudi koji su razvili jezik PHP ujedno osnivai tvrtke Zend. Web stranica tvrtke Zend nalazi se na adresihttp://www.zend.com

* W&T nisu pokuali objasniti/definirati koja je razlika izmeu programskih i skriptnih jezika (ako postoji bitna razlika). U skriptnim jezicima kao to je PHP, definiraju se strukture podataka i procesi obrade podataka, kao i kod "normalnih" programskih jezika. Meutim, postoje razlike u nainu/uvjetima koritenja programa i skripata, kao i u nainima njihovog izvoenja. Programi su openito samostalni elementi (opsenijeg sustava) dok se skripti ugrauju u druge softverske elemente (na primjer, u HTML datoteke) ili se pak pozivaju iz drugih elemenata i izvode kao njihovi sastavni dijelovi. Takvi su i apleti, koji se ne nazivaju skriptima, ali nisu ni samostalni programi, nego se izvode u okviru neke web-stranice i pod kontrolom web preglednika. Inae, Java apleti izvode se na klijentskom raunalu, tako da se sustav Java apleta naziva klijent-side sustavom. Moemo naelno rei da skriptni jezici imaju obino manji opseg operacija i ui (specifian) prostor primjene, te manji stupanj samostalnosti izvoenja, nego to je to sluaj kod "pravih/potpunih" programskih jezika. Meutim, u tome postoje znatne razlike izmeu razliitih programskih jezika, kao i izmeu raznih skriptnih jezika. Zato podjela na skriptne (programske) jezika i na (prave) programske jezika nije otra ni jednoznana. Naprimjer, neki smatraju da je jezik PHP blii programskom nego skriptom jeziku. Konano, skriptni jezici su obino oblikovani namjenski (za neke specifine svrhe/poslove) dok su programski jezici u naelu ope namjene (iako ne sasvim ope, jer se i programski jezici obino razvijaju sa nekom osnovnom namjenom).

* Za uspostavu i rad jednog interaktivnog web-sjedita potrebno je nekoliko temeljnih elemenata (komponenti), meu koje spadaju:- Hardver, kao domain/raunalo koji sadri elemente za mrenu komunikaciju;- Operacijski sustav (na danom hardveru/domainu);- Web server (na danom hardveru i operativnom sustavu);- Sustav za upravljanje bazom podataka;- Programski ili skriptni jezik (koji omoguava komunikaciju sa danim web serverom i sustavom baze podataka).U okviru ovog prikaza, baviti emo se sa zadnje dvije od navedenih komponenata, i to najprije sa skriptnim jezikom PHP, a kasnije i sa sustavom za upravljanje bazom podataka MySQL.

* Iako se sustavom MySQL bavimo kasnije, iznesimo nekoliko osnovnih podataka o tom sustavu. MySQL je jedan sustav za upravljanje relacijskom bazom podataka (Relational Database Management System - RDBMS). U relacijskoj bazi podataka, podaci se pohranjuju u tablice koje se oblikuju, ureuju i meusobno povezuju prema odreenim naelima i na odreene naine. Meu sustavima baza podataka danas prevladavaju sustavi relacijskog tipa, ali postoje i drukiji tipovi baza podataka (mreni, hijerarhijski, logiki/deduktivni). DBMS (Database Management System) openito definira i izvodi sve funkcije (operacije) vezane uz tvorbu, koritenje i odravanje baze podataka. DBMS se esto naziva i serverom (opsluiteljem) baze podataka jer prua usluge vezane uz bazu podataka korisnicima (klijentima).RDBMS MySQL je "multi-user multi-threaded" server jer moe istodobno (paralelno, simultano) opsluivati vei broj klijenata koji koriste istu bazu podataka, ili pak razliite baze podataka (relacijskog tipa).

* RDBMS MySQL sadri jezik SQL (Structured Query Language - strukturirani (ureeni) upitni jezik). Pomou tog jezika korisnik komunicira (radi) sa RDBMSon, a time i sa relacijskom bazom podataka.Sustav MySQL je "javno dostupan" od 1994. godine, kau W&T. Sustav MySQL je dostupan "under an Open Source license", ali postoje i "commercial licenses", kau W&T, str. 3. Te informacije nisu naroito potpune jer ne kazuju to tono znae te dvije "licences" (dozvole za koritenje) niti gdje je sustav MySQL "dostupan".

* Jezik/sustav PHP radi na svim poznatijim operacijskim sustavima (Windows, Unix, Linux, i drugi) i sa svim "potpuno funkcionalnim" web serverima. Isto vrijedi i za sustav MySQL, kau W&T, str. 4; ali ne kau to se (otprilike) misli pod "potpuno funkcionalnim" web serverima. ... Ako se misli da su to oni serveri koji podravaju PHP, MySQL (i sline alate/sustave) onda je ta definicija cirkularna ili trivijalna. (Jer ona bi znaila samo to, da PHP i MySQL rade sa svim onim web serverima koji podravaju PHP i MySQL.)

* Glavnim konkurentima jezika PHP smatraju se sustavi/jezici Perl, Microsoftov Active Server Pages (ASP) i Java Server Pages (JSP). Neki autori, kao to je Tanenbaum (Computer Networks, 2003), dre da su jezici/sustavi ASP, PHP i JSP u biti ekvivalentni, i da izbor izmeu njih zavisi prvenstveno od osobnih sklonosti i preferencija. W&T pak istiu brojne prednosti sustava/jezika PHP u odnosu na njegove konkurente. Pogledajmo neke od tih prednosti, uz napomenu da takvi vrijednosni sudovi mogu biti materijalno/injenino opravdani (zasnovani na objektivnim mjerenjima) ali mogu biti i subjektivni ili pak namjerno pristrani (iz osobnih interesa).- Efikasnost - Prema podacima sa domae stranice tvrtke Zend Technologies (http://www.zend.com) sustav PHP je efikasniji u radu od svojih konkurenata.- Povezivanje - Sustav PHP moe se povezivati sa mnogim sustavima za upravljanje bazama podataka. Pored sustava MySQL, vezuje se i sa sustavima Oracle, PostgreSQL, i sa mnogim drugim sustavima.- Biblioteka funkcija - Sustav PHP ima bogatu biblioteku funkcija/operacija (built-in functions) koje omoguavaju jednostavno definiranje raznih procesa/zadataka vezanih uz dinamiku izradu i koritenje interaktivnih web-stranica.- Dostupnost - Sustav PHP moe se dobiti besplatno; nove verzije toga sustava moe se preuzeti (kopirati) na adresi (ili sa adrese) http://www.php.net.- Standardnost jezika - Po svom obliku (sintaksi), jezik PHP je slian poznatim (i iroko koritenim) programskim jezicima kao to su Perl, C++, i Java, to olakava njegovo uenje (barem onima koji poznaju neki od navedenih jezika).- Otvorenost sustava - Sustav PHP je sustav otvorenog izvornog koda (Open Source) to znai da korisnik ima pristup izvornom (neprevedenom, itljivom) kodnom zapisu sustava, te da ga moe mijenjati i dograivati (uz uvjet da posjeduje dovoljno znanja da to moe uiniti na svrhovit nain).

* Dakle, to neka bi bile glavne prednosti sustava PHP u odnosu na njegove konkurente. Meutim, W&T ne kau da li i konkurentski sustavi/jezici imaju neke od navedenih osobina (u manjoj ili veoj mjeri) ili pak neke druge dobre osobine koje PHP moda nema (ili ih ima u manjoj mjeri). PHP je oito njihov izbor i oni ga favoriziraju u svojim vrednovanjima; nadajmo se da to ine na temelju valjanih razloga i nepristranih prosudbi. Inae, da bi se moglo meritorno usporeivati jezike (sustave) trebalo bi imati dobar uvid u mnoge jezike i sustave, kao i due iskustvo u radu sa svakim od njih. Veina ljudi to nema jer su dananji jezici i sustavi vrlo opseni, tako da nije jednostavno upoznati i isprobati mnoge, pa odabrati najboljeg. Zato promidba i druge okolnosti znatno utjeu na izbor sustava. Povrh toga, status najboljeg jezika i sustava zavisi od konkretne primjene, kao i od osobnih sklonosti pojedinih korisnika (programera).

* Sustavi baza podataka, koje se moe smatrati konkurentima sustavu MySQL, jesu PostgreSQL, Oracle, Microsoft SQL Server, i brojni drugi sustavi relacijskih baza podataka. Pritom W&T istiu slijedee dobre osobine sustava MySQL:- Brzina - Sustav MySQL je brz; prema ispitivanjima/mjerenjima (benchmarks) iji su rezultati iznijeti na domaoj web-stranici toga sustava (mysql.com), sustav MySQL uglavnom nadmauje konkurentske sustave u brzini izvoenja operacija.- Dostupnost - Sustav MySQL moe se dobiti besplatno "uz Open Source doputenje za upotrebu" (kau W&T, str. 6), ili pak po povoljnoj cijeni za komercijalnu upotrebu. Pritom, W&T ne kau to se tono podrazumijeva pod "under an Open Source license". Obino se softver moe dobiti besplatno za vlastitu upotrebu ili za upotrebu u obrazovne svrhe, dok se komercijalnom smatra ona upotreba kod koje korisnik izravno prodaje svoje usluge ili proizvode u okviru kojih se koristi i odreeni softverski alat.- Otvorenost sustava - Kao i sustav PHP, sustav MySQL je Open Source sustav, tako da korisnik moe mijenjati i dopunjavati izvorni kodni zapis toga sustava (ali kako je to ve reeno, pod uvjetom da zna to initi na svrsishodan nain).---(end/1)-----

1