You are on page 1of 84

SVEUILITE U DUBROVNIKU

ODJEL ZA ELEKTROTEHNIKU I RAUNARSTVO


STUDIJ POSLOVNO RAUNARSTVO






Zlatko Bara


DIPLOMSKI RAD

KORITENJE MRENIH SERVISA ZA RAZMJENU
METEOROLOKIH PODATAKA











Dubrovnik, prosinac 2010.
SVEUILITE U DUBROVNIKU
ODJEL ZA ELEKTROTEHNIKU I RAUNARSTVO
STUDIJ POSLOVNO RAUNARSTVO








DIPLOMSKI RAD
KORITENJE MRENIH SERVISA ZA RAZMJENU
METEOROLOKIH PODATAKA






Mentor: Diplomant:
Dr.sc. Mario Milievi Zlatko Bara
Komentor:
Mr. sc. Krunoslav ubrini





Dubrovnik, prosinac 2010.
Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara I


Sadraj
1 Uvod ............................................................................................................................. 1
2 Teorijske postavke ....................................................................................................... 2
2.1 Mreni servisi.......................................................................................................... 2
2.2 XML ........................................................................................................................ 2
2.3 REST ....................................................................................................................... 3
2.4 Meteoroloki podaci ............................................................................................... 6
3 Struktura aplikacije ...................................................................................................... 8
3.1 Baza podataka ......................................................................................................... 8
3.2 Opis aplikacije ...................................................................................................... 10
3.2.1 Posluiteljski dio aplikacije ........................................................................... 10
3.2.2 Prijava korisnika i dodjeljivanje prava .......................................................... 12
3.2.3 Servisi ............................................................................................................ 34
3.2.4 Nain rada servisa .......................................................................................... 38
4 Opis aplikacije za razmjenu meteorolokih podataka ................................................ 45
4.1 Ulazni dio .............................................................................................................. 45
4.2 Korisniki dio ....................................................................................................... 47
4.3 Administracija ....................................................................................................... 47
4.4 Prognoze ............................................................................................................... 48
4.4.1 Ureivanje ..................................................................................................... 48
4.4.2 Brisanje .......................................................................................................... 50
4.5 Upozorenja ............................................................................................................ 50
4.5.1 Ureivanje ..................................................................................................... 51
4.5.2 Brisanje .......................................................................................................... 53
4.6 Postaje ................................................................................................................... 53
4.6.1 Podaci o postaji .............................................................................................. 53
4.6.2 Brisanje .......................................................................................................... 54
4.7 Pregledi (klijentski dio)......................................................................................... 54
5 Klijentski dio .............................................................................................................. 58
Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara II

5.1 Rukovanje XML formatom u aplikaciji ................................................................ 58
5.2 Primjer klijenta - pregled prognoza ...................................................................... 61
5.3 Primjer klijenta - pregled upozorenja ................................................................... 63
5.3.1 Prikazivanje opisa .......................................................................................... 64
5.3.2 Rukovanje XML datotekama......................................................................... 65
5.4 Primjer klijenta - slanje podataka s postaje ........................................................... 68
5.4.1 Programski kod za slanje podataka ............................................................... 70
6 Zakljuak .................................................................................................................... 72
7 Literatura .................................................................................................................... 73
8 Prilozi ......................................................................................................................... 74
8.1 Popis slika ............................................................................................................. 74
8.2 Popis ispisa ........................................................................................................... 75
9 Saetak ....................................................................................................................... 77
10 Kljune rijei .............................................................................................................. 78
11 Summary .................................................................................................................... 79
12 Keywords ................................................................................................................... 80

Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 1

1 Uvod
Web aplikacija je aplikacija koja se izvodi na mrenom posluitelju koji se obino nalazi
na Internetu. Mreni servis je aplikacija ili njen dio koji se takoer izvodi na posluitelju i
prua odreene usluge korisniku. Npr. moe se raditi o pruanju servisa za dohvat rezultata
pretrage ili o servisu koji korisniku prua informacije o aktualnom stanju na cestama.
Primjene su neograniene.
U ovom dokumentu je opisan mreni servis koji korisniku prua informacije o vremenu,
konkretnije korisniku se prua servis koji nudi vremensku prognozu i upozorenja o
nevremenu. Ciljani korisnici ovakvih servisa su ponajvie internetski portali i razne druge
informativne stranice. Njima je omoguen jednostavan pristup pouzdanim vremenskim
prognozama. Takoer su dostupne informacije o upozorenjima za vremenske neprilike to
moe biti korisno raznim stranicama koje se bave pomorstvom ili poljoprivredom. S
obzirom na jednostavnost pristupa servisu ciljani korisnici su i tvrtke koje se bave
razvojem programa za mobilne ureaje jer mogu jednostavno implementirati pristup
servisu u aplikaciju koja prikazuje prognozu i potencijalne opasnosti korisnicima te
aplikacije, ponajvie avanturistima i moreplovcima.
Korisniku se takoer nudi i jedan servis ija je namjena primanje podataka, a on se koristi
za slanje podataka s meteorolokih postaja i njihovu pohranu na posluitelj. S obzirom na
otvorenost protokola kojim komunicira postaja preko serijskog porta ovaj servis je
zanimljiv programeru koji eli izraditi program koji oitava podatke sa postaje i alje ih na
internet.
Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja e se izvoditi na
posluitelju i korisniku pruati navedene usluge.
U drugom poglavlju opisane su teorijske postavke rada: mreni servisi, detalji XML
formata i REST arhitekture te nain pripreme, prikupljanja i koritenja meteorolokih
podataka. U treem poglavlju opisana je arhitektura posluiteljskog dijela aplikacije, dok je
u etvrtom poglavlju detaljno analiziran programski kod posluiteljskog dijela aplikacije
kao i primjena aplikacije. U petom poglavlju su opisani primjeri klijenata koji koriste
realizirani web servis.
Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 2

2 Teorijske postavke
2.1 Mreni servisi
Mreni servisi omoguavaju korisniku razmjenu podataka i izvravanje odreenih zahtjeva
na posluitelju. Korisnik posluitelju alje upit, a posluitelj zatim izvri potrebne radnje i
vraa korisniku rezultate tog upita. Rezultati su obino formatirani u XML formatu.
Najee se za komunikaciju koristi HTTP protokol.
W3C konzorcij [1] definira mreni servis kao : Programski sustav dizajniran tako da
podrava meusobnu stroj-stroj interakciju preko mree. Mreni servis moe imati suelje
opisano u formatu koji je mogue strojno obraivati, konkretno WDSL [2] formatu. Drugi
sustavi komuniciraju s mrenim servisom putem SOAP [3] poruka, najee koristei
HTTP protokol i XML format datoteka, uz eventualno koritenje i drugih standarda
vezanih uz Internet. Osim komunikacije putem SOAPa mogue je komunicirati i
primjenom REST [4] principa koji je jednostavniji za koritenje. Ne posjeduje opisne
datoteke pa korisnik mora imati informaciju kakve usluge servis nudi kako bi ih mogao
koristiti.
U nastavku e biti opisani protokoli i formati datoteka koje koriste mreni servisi.
2.2 XML
XML [6] je kratica koja oznaava EXtensible Markup Language, odnosno jezik za opis
podataka. Ideja koja stoji iza XMLa je stvaranje jednostavnog opisnog jezika koji bi bio
itljiv i ljudima i strojevima, za razliku od npr. binarnih datoteka koje su teko itljive
ljudima i tekstualnih datoteka kojima manjka opis podataka. Oznake koje se koriste u
XML jeziku su dosta sline onima koje koristi HTML jezik. Razlika je u tome to HTML
ima strogo definirane oznake (tagove) koji se smiju koristiti, dok je kod XMLa to puno
fleksibilnije, odnosno ostavljeno na volju korisniku.
XML je naao brojne primjene, tako se koristi za odvajanje podataka od prezentacije (npr.
HTML je prezentacijski jezik), razmjenu podataka (npr. kod mrenih servisa), spremanje
Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 3

podataka (npr. program moe svoje postavke uvati u XML datoteci koja pomalo
zamjenjuje standardnu .ini datoteku), itd.
XML je zamiljen tako da podatke uva u tekstualnom obliku, ali da ih uokviruje
oznakama koje govore o kakvom se podatku radi. Na taj nain je XML jednostavno itljiv
ovjeku (tekst), a raunalo jednostavno nalazi potrebne podatke koristei oznake (tagove).
Raunalo to radi putem programa koji pretrauje datoteku i izdvaja i grupira podatke
ovisno o oznakama koje ih okruuju (parsera).
Zahtjevi koje je W3C postavio pred XML poetkom devedesetih godina i koji su
karakteristike XML jezika [6] :
1. XML mora biti izravno primjenjiv preko Interneta.
2. XML mora podravati irok spektar primjena.
3. XML mora biti kompatibilan sa SGML-om [7].
4. Mora biti lako pisati programe koji procesiraju (parsiraju) XML dokumente.
5. Broj opcionalnih "feature-a" u XML-u mora biti apsolutno minimalan, u idealnom
sluaju jednak nuli.
6. XML dokumenti moraju biti itljivi ljudima, te u razumnoj mjeri jednostavni.
7. Standard mora biti specificiran to prije.
8. Dizajn XML-a mora biti formalan i precizan.
9. Kreiranje XML dokumenata mora biti jednostavno.
10. Saetost kod oznaavanja dokumenta XML-om je od minimalnog znaaja.
2.3 REST
REST je kratica od Representational State Transfer i oznaava nain komunikacije izmeu
klijenta i posluitelja pri koritenju mrenih resursa pomou HTTP protokola. Klijent alje
zahtjev prema posluitelju, posluitelj prima zahtjev i u skladu s traenim resursom
formira odgovor i vraa ga klijentu. Resurs moe biti bilo to, recimo tekstualni podaci,
slika ili neki jednostavni odgovor u obliku broja. Klijent u bilo kojem trenutku izmeu
zahtjeva moe biti u stanju "odmora", odnosno omoguava interakciju s korisnikom, ali pri
tom ne kreira promet prema posluitelju. Klijent poinje slanje zahtjeva prema posluitelju
Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 4

kad je spreman za prebacivanje u novo stanje. Dok god se jedan ili vie zahtjeva izvrava
smatra se da je klijent u stanju prijelaza [5].
REST arhitektura koristi mogunosti HTTP protokola i pritom omoguava da proxy
posluitelji i pristupnici (engl. gateway) takoer procesiraju isti HTTP promet koji prolazi
kroz njih.
REST koristi pristup slian CRUD pristupu kod SQL jezika u relacijskim bazama
podataka, i za svaku jednostavnu operaciju (dohvat resursa, stvaranje resursa, brisanje
resursa i auriranje resursa) koristi po jednu metodu HTTP protokola. Za dohvat resursa se
koristi GET, za brisanje DELETE, a za stvaranje i auriranje POST i PUT metode.
Problem kod praktine primjere REST pristupa je to mrena infrastruktura i programski
jezici jo uvijek najee dozvoljavaju koritenje samo GET i POST metoda koje su
uobiajene pri koritenju web preglednika za dohvat web stranica. Koritenje drugih
metoda (PUT i DELETE) se najee zabranjuje. Zbog toga se u praksi koriste dvije vrste
REST sustava. Sustavi koji koriste sve etiri metode prema navedenom principu nazivaju
se RESTful sustavi, a sustavi koji se baziraju na koritenju samo dvije metode (GET i
POST) u skladu s navedenim arhitekturnim pristupom nazivaju se REST sustavi. Oni
koriste hibridni pristup kod kojeg se za dohvat resursa koristi GET metoda, a sve ostale
operacije nad resursima obavljaju se koritenjem POST metode.
REST ima neka temeljna ogranienja, odnosno naputke po kojima treba dizajnirati
aplikacije koje koriste REST arhitekturu, dok su detalji dizajna ostavljeni programeru. Ta
ogranienja su :
Klijentsko-posluiteljski odnos: Klijent i posluitelj su odvojeni odreenim
sueljem. To znai da npr. klijenta ne zanima nain skladitenja podataka na
posluitelju nego je pristup njima uniformiran, tako da je portabilnost koda klijenta
poveana. Posluitelj s druge strane ne zanima korisnikovo suelje ili stanje
pojedinog korisnika tako da posluitelj moe biti jednostavan i skalabilan.
Posluitelji se takoer mogu mijenjati i programirati po elji dok god je suelje
kojem klijent pristupa isto. Tako je mogue npr. u potpunosti promijeniti posluitelj
iz PHP baziranog u ASP bazirani dok god je nain pristupa klijenta isti.
Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 5

Bez stanja (engl. stateless): Posluitelj ne sprema kontekst konekcije izmeu
zahtjeva klijenta. Svaki zahtjev od korisnika zahtjeva sve informacije potrebne da
bi posluitelj razumio zahtjev, tako da posluitelj ne mora pamtiti podatke izmeu
pojedinih zahtjeva. Tako klijent moe pristupati resursu jednostavno preko URLa.
Ovo olakava nadzor posluitelja i ini ga pouzdanijim.
Pohrana podataka (engl. cache) : Klijentu je omogueno da privremeno sprema
odgovore posluitelja. Ovo u nekim sluajevima olakava rad i smanjuje broj
potrebnih zahtjeva prema posluitelju.
Slojeviti sustav : S obzirom da klijent ne zna da li je spojen direktno na posluitelj
ili na neki od njegovih posrednika, ovo moe posluiti za poboljanje performansi,
npr. putem load balancera koji ujednauju promet, omoguavaju skalabilnost i
rastereuju pojedini posluitelj. Korist moe biti i sa strane sigurnosti jer je mogue
implementirati razne vatrozidove (engl. firewall) i ostale kontrolore prometa.
Code on demand : Ovo je opcionalna mogunost, posluitelj moe korisniku poslati
podatke koji e mu omoguiti proirenje ili poboljanje mogunosti. Dobar primjer
za ovo je koritenje REST pristupa iz okruenja skriptnog jezika JavaScript.
Uniformirano suelje : Suelje izmeu posluitelja i klijenta mora potovati
odreene smjernice kako bi sustav servis bio RESTful, odnosno REST
kompatibilan. Od gore navedenih pet stavki samo je Code on demand opcionalna,
sve ostale moraju biti potovane kako bi servis bio REST kompatibilan. Potovanje
navedenih smjernica omoguava bilo kakvom distribuiranom hipermedijskom
sustavu da ima atribute koji su poeljni : uinkovitost, skalabilnost, jednostavnost,
izmjenjivost, vidljivost, prenosivost i pouzdanost.
Neki od kljunih ciljeva kojima tei primjena REST arhitekture :
Skalabilnost interakcije komponenti;
Generalnost suelja;
Neovisno plasiranje komponenti;
Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 6

Meukomponente ija namjena je smanjenje latencije, pojaanje sigurnosti i
enkapsulacija postojeih sustava [5].
Prilikom koritenja REST arhitekture kroz HTTP za dohvat podataka najee se
primjenjuju GET zahtjevi, dok su druge vrste zahtjeva rezervirane za auriranje resursa.
2.4 Meteoroloki podaci
Meteorologija je znanost o Zemljinoj atmosferi i promjenama u njoj. Spada u skupinu
geofizikih znanosti i bavi se prouavanjem promjena vremena na Zemlji. Jedna od grana
meteorologije, sinoptika meteorologija analizira podatke o aktualnim i proteklim
vremenskim prilikama na odreenom podruju kako bi ih upotrijebila za prognoziranje
buduih. Prouavaju se razni parametri atmosfere, a najbitniji su temperatura, vjetar, tlak i
oborine.
Podatke o vremenskim prilikama skupljaju meteoroloke postaje i zatim ih alju na
posluitelje gdje se podaci iz razliitih izvora prikupljaju i analiziraju. Za analizu se koriste
fizikalni modeli koji se s vremenom usavravaju kako bi bili to precizniji. Te modele
obrauju u pravilu vrlo jaka raunala. Bitno je spomenuti da je obrada tih podataka vrlo
zahtjevna i nekad je bila rezervirana za velike institute i organizacije koje mogu uloiti
puno novca u raunalne resurse potrebne za obradu podataka. Napretkom raunalne
tehnologije i padom cijene ti resursi postaju dostupni i manjim organizacijama, pa i
amaterskim skupinama koje meteorologija interesira. Fizikalni modeli su dostupni,
potrebno je ubaciti to vie podataka u njih i prepustiti da raunalo koristei model
izrauna kretanja vremenskih prilika. Ovo je primjenjivo na manjim podrujima, velike i
detaljne analize se i dalje rade na superraunalima.
U Hrvatskoj ve vie od sedam godina djeluje udruga Crometeo koja okuplja ljude koje
zanima meteorologija. Radi se o ljudima raznih struka kojima je zajednika poveznica
zanimanje za vremenske prilike i neprilike. Udruga se bavi prouavanjem i prognoziranjem
vremena, dokumentiranjem i fotodokumentiranjem raznih vremenskih pojava (posebno
onih ekstremnih), kao i postavljanjem meteorolokih postaja diljem Hrvatske. Trenutno
postoji preko 70 postaja diljem Hrvatske, a sve zajedno su ukljuene u projekt koji
objedinjuje sve podatke na stranici http://pljusak.com. [8]
Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 7

Osim prikupljanja podatka rade se i analize podataka i davanje prognoza. Udruga ima
svoje serversko raunalo koje na jakim Intelovim Xeon procesorima izraunava model za
podruje Hrvatske. Prognoze se objavljuju na serveru http://crometeo.hr [9], a takoer i u
mnogim lokalnim medijima, npr. Dubrovaki vjesnik [10] objavljuje prognozu lana
Crometeo udruge.
Podatke s postaja zasad prikuplja softver koji dolazi uz postaju, a koji ima odreenih
prednosti i nedostataka. Glavni nedostatak je to meteoroloka postaja treba uz sebe imati
vezano raunalo da bi se podaci prikupljali. S obzirom na postojanje dokumentiranih
protokola kojim program komunicira sa stanicom ovdje ima dosta mjesta za poboljanja,
npr. izradom vrlo jednostavnih programa koji nemaju dio za analitiku i statistike nego im
je namjena samo komunikacija na relaciji postaja-internet. Za takvu primjenu bi bio
idealan servis kao to je onaj opisan u ovom radu. Takoer bi servis mogli koristiti i razni
ureaji koji nisu sami po sebi postaja nego npr. data logger koji podatke sprema odreeno
vrijeme i nakon toga ih prosljeuje na mreni posluitelj kako bi bili dostupni za analizu.
Sa dananjim jednostavnim i jeftinim usmjerivaima koje pokree Linux operacijski
sustav, a koji imaju USB i serijski port mogue je napraviti ureaj koji prati odreene
parametre, poput temperature, vlage i vjetra te ih prosljeuje na posluitelj. Za sve te
namjene mreni servis baziran na REST protokolu je puno pogodniji od raznih sloenih
klijent-posluitelj rjeenja.
to se vremenskih prognoza tie, i ti podaci su potrebni raznim internetskim portalima ili
drugim web stranicama koje ele imati pristup do podataka vremenske prognoze, a nemaju
vlastiti tim koji ju pie. Oni mogu jednostavno putem mrenog servisa preuzeti podatke i
preko modula koji sami izrade ukomponirati ih u web stranicu na nain koji im odgovara,
bez da im servis namee pravila prezentacije podataka.
Danas se podaci veinom prezentiraju preko ve unaprijed napravljenih vizualnih modula
koji se ugrauju u stranicu, a koji esto nisu ba pogodni jer se ne mogu uklopiti u izgled
stranice, bez obzira na (ograniene) mogunosti prilagoavanja. Sa mrenim servisom koji
alje iste tekstualne podatke tog problema nema, a vizualna prezentacija je ostavljena na
volju dizajneru stranice.
Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 8

3 Struktura aplikacije
Posluiteljski dio aplikacije je u cijelosti izraen u PHP programskom jeziku. Koriten je
tekst editor s podrkom za osvjetljavanje sintakse, a za testiranje je koriten Wamp
posluitelj instaliran na lokalnom raunalu. Nakon to je aplikacija izraena prebaena je
na web posluitelj i dodatno testirana. Nakon toga je klijentski dio prebaen na drugi
posluitelj radi testiranja funkcionalnosti mrenog servisa.U ovom poglavlju opisana je
sama struktura aplikacije, s primjerima programskom koda i detaljnijim objanjenjem
naina rada same aplikacije.
3.1 Baza podataka
Kako bi aplikacija mogla pohranjivati i itati podatke potrebno je koristiti bazu podataka.
U ovom sluaju izbor je pao na mySQL bazu podataka koja je besplatno dostupna za
koritenje. Dolazi kao dio Wamp posluitelj paketa koji je koriten za testiranje aplikacije.
Unutar baze podataka definirane su etiri tablice, to su :
t_korisnik
t_postaja
t_prognoza
t_upozorenja
Na slici 3.1 vidljive su navedene tablice koje se koriste u aplikaciji. Budui da se tablice
koriste za spremanje podataka koji meusobno nisu vezani, tablice su izraene svaka za
sebe i nisu ni na koji nain ovisne jedna o drugoj.
Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 9

t_korisnik
PK userid
uIme
uPrezime
uUser
uPassword
uOdobren
uPostaja
uHash

t_prognoza
PK podatakid
datum
doba
regija
tekst
tmin
tmax
vbrz
vsmj
obtip
obkol

t_upozorenja
PK podatakid
upDatum
zupanija
opis
stupanj
autor
zadnja_izmjena

Slika 3.1Tablice unutar baze podataka
Polja u koritenim tablicama su slijedea:
t_korisnik, slui za pohranu podataka o registriranim korisnicima :
userid - identifikacijski broj korisnika, ova vrijednost se dodjeljuje automatski
uIme - ime korisnika
uPrezime - prezime korisnika
uUser - korisniko ime za prijavu na sustav
uPassword - korisnika lozinka, saeta kao md5 string
uOdobren - status korisnika, moe biti 'da' ili 'ne'
uPostaja - ime korisnikove meteoroloke postaje
uHash - lozinka za korisnikovu meteoroloku postaju
t_postaja, slui za pohranu podataka koje postaja alje prema servisu :
podatakid - autoinkrementalna vrijednost, automatski se dodjeljuje
imePostaje - ime postaje koje se prikazuje u pregledima
datum - datum podatka
vrijeme - vrijeme podatka
temperatura - vrijednost temperature
vjetar - brzina vjetra
smjer - smjer vjetra
Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 10

vlaga - relativna vlaga
kisa - koliina oborina
t_prognoza, slui za spremanje podataka o prognozama, podaci su dostupni putem
mrenog servisa :
podatakid - autoinkrementalna vrijednost, automatski se dodjeljulje
datum - datum prognoze
doba - doba dana prognoze, moe biti 'jutro', 'popodne' ili 'noc'
regija - klimatska regija za koju prognoza vrijedi
tekst - tekst prognoze
tmin - minimalna oekivana temperatura
tmax - maksimalna oekivana temperatura
vbrz - oekivana brzina vjetra
vsmj - oekivani smjer vjetra
obtip - oekivani tip oborina
obkol - oekivana koliina oborina
t_upozorenja, slui za spremanje podataka o upozorenjima, podaci su dostupni putem
mrenog servisa :
podatakid - autoinkrementalna vrijednost, automatski se dodjeljuje
upDatum - datum za koji upozorenje vrijedi
zupanija - zupanija za koju upozorenje vrijedi
opis - opis opasnosti
stupanj - stupanj opasnosti
autor - autor upozorenja
zadnja_izmjena - vrijeme zadnje izmjene podataka
3.2 Opis aplikacije
3.2.1 Posluiteljski dio aplikacije
Na slici 3.2 prikazana je logika struktura posluiteljskog dijela aplikacije.
Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 11

Poetna
stranica
Unos
korisnika
Unos OK
Odobrenj e
Odobri
prij ava
Config
Spaj anj e na
bazu
Odj ava
Glavni
izbornik
Upozorenj a
+ Auri ranj e
+ Auri ranj e upozorenj a
+ Bri sanj e
+ Bri sanj e upozorenj a
+ Obrada upozorenj a
+ Pregl ed upozorenj a
+ Unos
+ Unos upozorenj a
+ Upozorenj e
Prognoze
+ Bri sanj e
+ Bri sanj e prognoza
+ Izmj ena
+ Izmj ena prognoze
+ Obrada prognoza
+ Pregl ed prognoza
+ Prognoza
+ Unos
+ Upi s prognoza
Postaj e
+ Bri sanj e
+ Bri sanj e postaj e
+ Izmj ena
+ Izmj ena postaj e
+ Obrada postaj a
+ Postaj a
+ Pregl ed postaj a
+ Upi s
+ Upi s postaj e
Servisi
+ Krei ranj e XMLa
+ Postaj e
+ Prognoza po datumu
+ Prognoze
+ Suel j e servi sa
+ Upozorenj a
+ Upozorenj a po datumu
+ Upozorenj a po godi nama
redi rect
use
use
use
use
use
use
use
use
use

Slika 3.2 Logika struktura posluiteljskog dijela aplikacije
Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 12

Aplikacija evidentira tri skupine podataka: podatke o meteorolokim postajama,
prognozama i upozorenjima. U administratorskom dijelu aplikacije korisniku je
omogueno auriranje (unos, izmjena i brisanje) te pregled tih podataka. Da bi mogao
administrirati podatke, korisnik se mora prijaviti u aplikaciju i dobiti odgovarajue ovlasti.
3.2.2 Prijava korisnika i dodjeljivanje prava
S obzirom da se mogunosti registriranog i odobrenog korisnika razlikuju od mogunosti
neregistriranog i/ili neodobrenog korisnika bilo je potrebno ugraditi mehanizam koji e
prepoznavati o kakvom se tipu korisnika radi i prema tome mu omoguiti pristup
odreenim dijelovima aplikacije.
Proces prijave je mogu za svakog korisnika, tu se uzimaju osnovni podaci i upisuju u
bazu, a pritom se status odobren postavlja u ne. Ovaj dio obavlja programski modul
unos_korisnika.php, koji se sastoji od jedne forme za unos, a pri slanju forme (submit)
poziva samog sebe i provjerava je li se pozvao sa submit opcijom ili je pozvan bez nje.
Ukoliko je pozvan s njom slijedi provjera parametara proslijeenih kroz $_POST polje.
if (isset($_POST['submit']))
{
if (!$_POST['username'] | !$_POST['pass'] | !$_POST['pass2'] ) {
die('Nisu popunjena sva polja!');
}

$korprovjera = $_POST['username'];

$zahtjev = mysql_query("SELECT uUser FROM t_korisnik WHERE uUser =
'$korprovjera'") or die(mysql_error());
$provjera = mysql_num_rows($zahtjev);
if ($provjera != 0) {
die('Korisniko ime '.$_POST['username'].' ve postoji.');
}
if ($_POST['pass'] != $_POST['pass2']) {
die('Lozinke nisu dobro unesene. ');
}

Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 13

$_POST['pass'] = md5($_POST['pass']);

$unos = "INSERT INTO t_korisnik (uUser,uPassword,uIme,uPrezime)
VALUES ('".$_POST['username']."', '".$_POST['pass']."',
'".$_POST['ime']."', '".$_POST['prezime']."')";
$podatak = mysql_query($unos);

header("Location:
poruka_ok.php?tip=registracijaok&sljedeca=glavni_meni.php");
}
Ispis 3.1 Osnova modula unos_korisnika.php
Iz priloenog koda u ispisu 3.1 vidljiva je cijela procedura provjere pojedinih parametara.
Prvo se provjerava jesu li unesena sva tri kljuna polja, a to su korisniko ime, lozinka i
ponovljena lozinka. Zatim se s korisnikim imenom ide prema bazi i provjerava se je li taj
korisnik ve registriran, ukoliko jest prekida se unos jer ne mogu postojati dva ista
korisnika imena. Slijedi provjera je li lozinka dvaput isto unesena, ako jest formira se
hash lozinke preko md5 algoritma, kako se lozinka ne bi spremala u bazu u obinom
tekstualnom formatu.
Ukoliko su svi podaci ispravno uneseni radi se unos sloga u bazu preko insert SQL
naredbe. Svi potrebni podaci se kao i u prethodnom dijelu modula vade iz $_POST polja
koji sadri sve vrijednosti poslane putem forme.
Nakon to se unos obavi aplikacija se preusmjerava na modul za ispis poruke da je akcija
uspjeno obavljena, to je poruka_ok.php, koji kao parametre prihvaa tip obavijesti i
putanju do sljedeeg PHP modula na koji e pokazivati poveznica "Nastavi".
Unosom u bazu korisnik jo nije dobio nikakva prava pristupa aplikaciji, da bi ih dobio
administrator mu mora odobriti pristup, i to tako to polje "odobren" koje je inicijalno
postavljeno na "ne" mijenja u "da". Ovu radnju administrator radi preko modula
sistem_odobrenje.php i njegovog pomonog modula sistem_odobri.php. Prvi modul
sadrava vizualni dio stranice odobrenja, dok drugi odrauje transakciju prema bazi ovisno
o parametrima koji mu se poalju.
Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 14

Modul sistem_odobrenje.php dohvaa iz baze sve korisnike i njihov status odobrenja i to
ispisuje u obliku tablice. Pritom ovisno o statusu odobrenja formira link prema modulu
sistem_odobri.php s parametrom "da" ili "ne". Primjerice ako se korisnika treba odobriti
link e glasiti : http://.../sistem_odobri.php?korisnik=pero&status=da
Zatim modul sisem_odobri.php ovisno o primljenim parametrima odrauje transakciju
prema bazi i odobrava, odnosno onemoguava korisnika.
Na ispisu 3.2 vidljiv je glavni dio modula za odobrenje korisnika. Prvo se provjerava je li
modul primio oba potrebna parametra (korisnik i status). Ukoliko su ispravno proslijeeni
formira se UPDATE SQL zahtjev prema bazi koji aurira status korisnika. Tijek aplikacije
se zatim preusmjerava nazad na modul pozivatelj, a to je sistem_odobrenje.php.
<?php
if (!isset($_GET['korisnik']) || !isset($_GET['status']))
header("Location: poruka_notok.php?tip=nijelogiran");

$pKorisnik = $_GET['korisnik'];
$pStatus = $_GET['status'];
$podaci = mysql_query("update t_korisnik set uOdobren='$pStatus' where
uUser='$pKorisnik'")or die(mysql_error());
$rezultat=mysql_query($podaci);
header("Location: sistem_odobrenje.php");
?>
Ispis 3.2 Modul sistem_odobri.php
Sada kad je korisnik unesen u bazu i dodijeljeno mu je odobrenje korisnik se moe prijaviti
u aplikaciju. To radi putem modula koji se inicijalno pojavljuje, a to je
sistem_prijava.php. Ovaj modul je na neki nain glavni meni za neregistriranog
korisnika.
Ovaj modul prvo provjerava je li korisnik prijavljen, a to se vidi po postavljenim
kolaiima (engl. cookie) u web pregledniku.
Ispis 3.3 prikazuje osnovnu provjeru je li korisnik prijavljen. Ovo se u ostalom dijelu
aplikacije radi putem posebnog modula, no o tome e kasnije biti rijei. Prvo se provjerava
jeli postavljen kolai dpKorisnik, preko polja $_COOKIE preko kojeg PHP pristupa
Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 15

kolaiima u web pregledniku. Ukoliko je sve u redu dohvaa se vrijednost toga i dpHash
kolaia koji predstavlja hashirani oblik korisnikove lozinke. Zatim se putem mysql_query
zahtjeva pristupa bazi i pokuava se dohvatiti slog korisnika po imenu, s time da se kao
uvjet postavlja i da je korisnik aktivan (uOdobren='da'). Ukoliko se u dohvaenom slogu
pronae korisnik koji se trai provjerava se je li mu lozinka u redu i ako jest prosljeuje ga
se na glavni_meni.php koji predstavlja glavni meni za registrirane korisnike.
if(isset($_COOKIE['dpKorisnik']))
{
$username = $_COOKIE['dpKorisnik'];
$pass = $_COOKIE['dpHash'];
$check = mysql_query("SELECT * FROM t_korisnik WHERE
uOdobren='da' and uUser = '".$username."'")or die(mysql_error());
while($info = mysql_fetch_array( $check ))
{
if ($pass == $info['uPassword'])
header("Location: glavni_meni.php");
}
}
Ispis 3.3 Detalj modula sistem_prijava.php
Ukoliko je ovaj dio uspjeno odraen korisnik se nalazi u modulu glavni_meni.php, no
ukoliko nije (dakle korisnik nije prijavljen), provjeriti e se je li se modul pozvao putem
submita iz forme, to bi znailo da je korisnik upisao lozinku i ime i da treba provjeriti je li
aktivan.
Prethodni dio aplikacije je provjerio je li korisnik ve prijavljen, dok ispis 3.4 provjerava
da li se korisnik upravo prijavljuje.





Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 16

if (isset($_POST['submit'])) {
if(!$_POST['username'] || !$_POST['pass'])
header("Location: poruka_notok.php?tip=nepopunjeno");
$check = mysql_query("SELECT * FROM t_korisnik WHERE uUser =
'".$_POST['username']."'")or die(mysql_error());
$check2 = mysql_num_rows($check);
if ($check2 == 0)
header("Location: poruka_notok.php?tip=nepostojeci");
while($info = mysql_fetch_array( $check )) {
$_POST['pass'] = stripslashes($_POST['pass']);
$info['uPassword'] = stripslashes($info['uPassword']);
$_POST['pass'] = md5($_POST['pass']);
if ($_POST['pass'] != $info['uPassword'])
header("Location: poruka_notok.php?tip=loginkriv");
else {
if ($info['uOdobren']!="da")
header("Location: poruka_notok.php?tip=neaktivan");
else {
$_POST['username'] = stripslashes($_POST['username']);
$hour = time() + 3600;
setcookie(dpKorisnik, $_POST['username'], $hour);
setcookie(dpHash, $_POST['pass'], $hour);
header("Location: glavni_meni.php");
}
}
}
}
else {
?>
<html>
<head>
<title>Prijava na sustav</title>
Ispis 3.4 Prijava korisnika
Prvi dio ispisanog koda provjerava je li se modul pozvao kroz submit, ako jest provjerava
jesu li popunjena potrebna polja (korisniko ime i lozinka) i ukoliko jesu alje zahtjev
Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 17

prema bazi za dohvaanje podataka o korisniku. Zatim se provjerava lozinka i ukoliko je
sve u redu slijedi postavljanje kolaia.
Dohvaa se trenutno vrijeme, dodaje mu se 3600 sekundi (1 sat), i postavlja se kolai
dpKorisnik koji sadri korisniko ime, a trajanje mu se postavlja na sat vremena od
trenutnog vremena. Isto se radi i s dpHash. Time e korisnik biti prijavljen sljedeih sat
vremena, pa ukoliko se zaboravi odjaviti njegova prijava e svejedno istei u razumnom
roku.
Dio koda na kraju ispisa koji poinje s else smjernicom se izvrava ukoliko modul nije
pozvan preko submit zahtjeva i on ispisuje normalnu formu za prijavu na sustav. Kljuni
dijelovi su sama forma, dva polja za unos i tipka za prijavu, prikazani ispisom 3.5.
<form align="center" action="sistem_prijava.php" method="post">
<input type="text" name="username" id="PlitkiTextBox" maxlength="50">
<input type="password" name="pass" id="PlitkiTextBox" maxlength="16">
<input type="submit" name="submit" id="PlitkaTipka" value="Prijava">

</form>
Ispis 3.5 Detalji pojedinih elemenata forme
Nakon to je izvrena prijava korisnika on moe koristiti dio aplikacije za registrirane
korisnike. Kako bi se tijekom rada aplikacije znalo da je korisnik registriran i kako bi se
izbjeglo zaobilaenje koritenja povlatenih dijelova aplikacije upisivanjem kompletne
adrese u adresno polje preglednika ugraen je dodatni mehanizam koji se poziva na
poetku svakog modula i provjerava je li korisnik prijavljen u sustav i samo u sluaju da
jest mu dozvoljava nastavak, u protivnom ga vraa na formu za prijavu u sustav.
Navedena funkcionalnost je radi jednostavnosti koritenja napravljena u obliku jednog
modula koji se onda kasnije koristi preko include direktive. Taj modul je
sistem_spojen.php prikazan ispisom 3.6.



Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 18

if(isset($_COOKIE['dpKorisnik']))
{

$korisnik_cookie=$_COOKIE['dpKorisnik'];
$pass_cookie=$_COOKIE['dpHash'];
$pass_cookie = stripslashes($pass_cookie);
$korisnik_cookie = stripslashes($korisnik_cookie);

$zahtjev = mysql_query("SELECT * FROM t_korisnik WHERE uOdobren='da'
and uUser = '".$korisnik_cookie."'")or die(mysql_error());
$brred = mysql_num_rows($zahtjev);
if ($brred == 0)
header("Location: poruka_notok.php?tip=nepostojeci");

while($info = mysql_fetch_array( $zahtjev ))
{
$spKorisnik=$info['uUser'];
$spIme=$info['uIme'];
$spPrezime=$info['uPrezime'];
$spPostaja=$info['uPostaja'];
$spHash=$info['uHash'];
$info['uPassword'] = stripslashes($info['uPassword']);
if ($pass_cookie != $info['uPassword'])
header("Location: poruka_notok.php?tip=loginkriv");
}
$spojen_var="true";
}
else
{
$spojen_var="false";
header("Location: poruka_notok.php?tip=nijelogiran");
die('');
}
Ispis 3.6 Modul sistem_spojen.php
Njegov nain funkcioniranja je dosta jednostavan, dohvaaju se dva kolaia (dpKorisnik i
dpHash), zatim se radi zahtjev prema bazi i provjerava se jesu li podaci ispravni. Ukoliko
Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 19

se tijekom provjere doe do toga da na bilo koji nain podaci govore da korisniku treba
uskratiti pristup putem zaglavlja (header) se tijek aplikacije preusmjerava na poruku o
greci i zatim na formu za prijavu u sustav.
Ukoliko je sve prolo dobro i dokazano je da je korisnik prijavljen na sustav varijabla
spojen_var se postavlja na true, inae se postavlja na false. Ovo je samo pomoni
mehanizam koji moe nekom modulu rei rezultat izvravanja modula, ali kljuni dio je
usmjeravanje korisnika putem zaglavlja i nedoputanje nastavka rada ukoliko nije
prijavljen u sustav.
Jo je jedna akcija preostala to se tie ovog dijela aplikacije, a to je odjava. Ona se radi
kroz modul sistem_odjava.php.
U ispisu 3.7 je kompletan modul sistem_odjava.php koji je dosta jednostavan, uzima se
trenutno vrijeme, stavlja se na 100 sekundi u prolost i zatim se kolaii dpKorisnik i
dpHash auriraju s tim vremenom. Time je kolaiu rok vaenja ve istekao i web
preglednik e ga automatski obrisati ili smatrati neispravnim.
<?php
$past = time() - 100;
setcookie(dpKorisnik, gone, $past);
setcookie(dpHash, gone, $past);
header("Location: sistem_prijava.php");
?>
Ispis 3.7 Modul sistem_odjava.php
3.2.2.1 Unos i brisanje podataka
Nakon to se korisnik uspjeno prijavio u sustav omoguen mu je unos i brisanje podataka,
ta radnja je podijeljena na tri osnovna dijela, to su upozorenja, prognoze i postaje.
Radi pojednostavljenja procesa dio koda za spajanje na bazu je izdvojen u dva zasebna
modula. Uobiajeno je da se podaci za spajanje izdvoje u zasebnu config.php ili slinu
datoteku radi fleksibilnosti i jednostavnosti izmjene prilikom promjene baze ili
premjetanja na drugi posluitelj. U ovom sluaju tu funkciju ima datoteka
Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 20

sistem_config.php, koja sadri inicijalizaciju etiri varijable potrebne za interakciju s
bazom.
<?php
$host = "localhost";
$user = "diplomac";
$pass = "_lozinka_";
$database = "my_diplomski";
?>
Ispis 3.8 Datoteka sistem_config.php
Ispis 3.8 prikazuje inicijalizaciju varijabli. Za spajanje na mySQL bazu potrebna su etiri
podatka, to su ime posluitelja na kojoj je baza, u ovom sluaju su baza i ova datoteka na
istom posluitelju pa je kao posluitelj dovoljno staviti localhost. Zatim je potrebno ime
korisnika koji ima dozvolu za interakciju s bazom i njegova lozinka. etvrti potrebni
parametar je ime baze. Na ovaj nain se jednostavnom include direktivom moe kod iz
ovog modula ukljuiti i u bilo koji drugi i tako inicijalizirati podatke potrebne za spajanje
na bazu.
Samo spajanje je isto proces koji je uvijek isti pa ga je logino izdvojiti u zaseban moduli
pozivati preko include direktive. U ovom sluaju spajanje na bazu je definirano u modulu
sistem_spajanje.php.
Ispis 3.9 prikazuje sadraj vrlo jednostavnog modula za spajanje na bazu, koji putem
naredbi mysql_connect i mysql_select_db kreira link na bazu i spaja se. Bitno je prije
poziva ovog modula pozvati mogul sistem_config.php kako bi se uitale varijable koje se
koriste u ovom modulu.
<?php
$linkID = mysql_connect($host, $user, $pass) or die("Could not connect
to host.");
mysql_select_db($database, $linkID) or die("Could not find database.");
?>
Ispis 3.9 Sadraj modula sistem_spajanje.php
Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 21

3.2.2.2 Obrada upozorenja
Na slici 3.3 prikazana je logika struktura posluiteljskog dijela aplikacije koji slui za
obradu upozorenja. Aplikacija omoguuje unos, izmjenu, brisanje i pregled upozorenja.
Obrada
upozorenj a
Unos
upozorenj a
Pregled
upozorenj a
Brisanj e
upozorenj a
Brisanj e
Auriranj e
upozorenj a
Auriranj e
Unos
Upozorenj e

Slika 3.3 Obrada upozorenja
Unos i brisanje upozorenja su realizirani preko nekoliko modula, oni su redom :
unos_upozorenja.php - forma za odabir datuma za unos upozorenja
upis_upozorenja.php - modul za interakciju s bazom to se upozorenja tie
forma_upozorenja.php - forma za unos upozorenja
brisanje_upozorenja.php - forma za odabir datuma za brisanje upozorenja
brisi_upozorenja.php - modul za interakciju s bazom za brisanje upozorenja
Prilikom unosa ili auriranja upozorenja prvo se odabire datum za koji se unose odnosno
auriraju upozorenja. Takoer je mogue unijeti novi datum, a za pomo korisniku
ponuen je i odabir trenutnog. Taj dio odrauje modul unos_upozorenja.php. Dio
njegovog koda slijedi.
Na ispisu 3.10 je prikazan dio modula unos_upozorenja.php koji je identian u veini
modula koji ine aplikaciju. U njemu se uitavaju konfiguracijske varijable, spaja na bazu i
Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 22

poziva modul za provjeru je li korisnik prijavljen na sustav. Ako je sve u redu nastavlja se
prema ispisu HTML dijela stranice.
<?php

include 'sistem_config.php';
include 'sistem_spajanje.php';

include 'sistem_spojen.php';
if($spojen_var=="false")
header("Location: poruka_notok.php?tip=nijelogiran");

//ako je spojen ide dalje
?>
<html>
<head>

Ispis 3.10 Dio modula unos_upozorenja.php
HTML dio stranice na odreenim mjestima ponovno koristi PHP, npr. kako bi napunio
polje za izbor datuma vrijednostima iz baze. Osnovne provjere se obavljaju putem
JavaScript programskog jezika.
function nowStr() {
var sad=new Date();
document.GlavnaForma.godina.value=sad.getFullYear();
document.GlavnaForma.mjesec.value=sad.getMonth()+1;
document.GlavnaForma.dan.value=sad.getDate();
return false;
}
Ispis 3.11 Primjer JavaScript funkcije
Na ispisu 3.11 je primjer jedne od nekoliko JavaScript funkcija napravljenih za odreene
radnje unutar forme. Konkretno ova funkcija puni polja za unos trenutnim datumom kad se
klikne na tipku "Trenutni". JavaScript se takoer koristi za jednostavne provjere je li
unesen ispravan datum, jesu li popunjena odreena polja i slino.

Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 23

<select name="datumiPostojeci" onChange="comboIzmjena()" width="10"
id="datumiPostojeci">
<option>0000-00-00</option>
<?php
if (isset($_GET['datum']))
$odDatum=$_GET['datum'];
else
$odDatum="";
$datumi = mysql_query("SELECT distinct upDatum FROM t_upozorenja")or
die(mysql_error());
while($info = mysql_fetch_array( $datumi ))
{
if ($info['upDatum']==$odDatum)
echo "<option SELECTED>".$info['upDatum']."</option>";
else
echo "<option>".$info['upDatum']."</option>";
}
?>
</select>
Ispis 3.12 Detalj modula unos_upozorenja.php
Ispis 3.12 prikazuje kako se padajua lista puni datumima iz baze. Unutar HTML koda u
dijelu gdje je potrebno navesti vrijednosti pojedinih linija kontrolu preuzima ubaena PHP
skripta koja generira zahtjev prema bazi i zatim dohvaene vrijednosti formatira u ispravne
HTML tagove i tako puni padajuu listu.
Kad se izabere datum klikom na tipku "Uredi" se otvara forma za unos upozorenja, koja je
sadrana u modulu forma_upozorenja.php. Ova forma se radi veeg broja polja
uglavnom dinamiki generira tako to su dijelovi imena polja navedeni u PHP varijablama
tipa polje (array) i zatim se izvrte preko for petlje.
Imena upanija koja se ispisuju na formi definirana su u programu. For petlja e proi kroz
sve elemente polja i ispisati retke tablice koristei vrijednosti definirane u poljima. Tako je
sam fiksni dio HTML koda dosta reduciran i pojednostavljen.
Ispis 3.13 prikazuje kako se podaci o upozorenjima dohvaaju iz baze. U ovom dijelu
modula se jo uvijek ne pune u polja na formi. Bitno je navesti da se traeni datum alje s
Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 24

prethodnog modula kroz skrivenu varijablu datumSkriveni koja je definirana kao skriveni
tekst, tako da se na formi ne prikazuje, ali svejedno postoji u obliku varijable koja se
prosljeuje kad se pozove submit.
$podaci = mysql_query("SELECT * FROM t_upozorenja where
upDatum='".$_POST['datumSkriveni']."'")or die(mysql_error());
while($info = mysql_fetch_array( $podaci ))
{
for ($i=1;$i<22;$i++)
{
if ($info['zupanija']==$arZupanijeEn[$i])
{
$arOpisi[$i]=$info['opis'];
$arStupnjevi[$i]=$info['stupanj'];
break;
}
}
}
Ispis 3.13 Punjenje polja s podacima
Na ispisu 3.14 je izlistan cijeli dio za generiranje redaka u tablici. Tu se ispisuje ime
upanije, kreira polje sa stupnjem upozorenja, fokus se stavlja na trenutno odabranu
vrijednost i zatim se ispisuju polja s opisima upozorenja. Na ovaj nain je vei dio tablice
generiran dinamiki preko PHP skripte. Imena polja sa stupnjem upozorenja su tipa zup_01
do zup_21, a s opisima zup_01_opis do zup_21_opis. Ovako je postignuto da se
jednostavnim etanjem s for petljom mogu pokupiti sve vrijednosti bez da se svaka uzima
posebno.
for ($j=1;$j<=21;$j++)
{
$imeZup="zup_".sprintf("%02d",$j);

echo "<tr>\n<td width=\"30%\" bgcolor=".$bgcolor.">\n";
echo $arZupanije[$j] . " : ";
echo "</td>\n<td width=\"70%\" bgcolor=".$bgcolor.">\n";
echo "<select name=" . "\"" . $imeZup . "\"" . " id=". "\"" .$imeZup.
"\"" . " selected=2/>";
Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 25

for ($i=0;$i<=4;$i++)
{
if ($arStupnjevi[$j]==$i)
echo "<option SELECTED>" . $lista[$i] . "</option>\n";
else
echo "<option>" . $lista[$i] . "</option>\n";
}
echo "</select>&nbsp;\n<input type=\"text\" size=\"40\" name=" . "\""
. $imeZup . "_opis\"" . " id=". "\"" .$imeZup. "_opis\"" . "
value=\"".$arOpisi[$j]."\"/></td>\n</tr>\n";
if ($bgcolor=="\"#DDDDDD\"")
$bgcolor="\"#BBBBBB\"";
else
$bgcolor="\"#DDDDDD\"";
}

?>
Ispis 3.14 Detalj modula forma_upozorenja.php
Klikom na "Spremi" se poziva modul upis_upozorenja.php koji nema svoj vizualni dio
nego odrauje posao prijenosa podataka iz forme u bazu podataka. Podatke prima od forme
za unos preko $_POST polja i upisuje u bazu.
Na ispisu 3.15 je detalj modula upis_upozorenja.php koji prikazuje kako se podaci iz
$_POST polja preuzimaju i zatim prosljeuju funkciji za upis u bazu. Radi lakeg
rukovanja podacima definirana su dva polja koja olakavaju transformaciju podataka iz
forme u format namijenjen bazi podataka. Primjer za ovo je stupanj upozorenja koji se na
formi prikazuje kao boja, dok se u bazi vodi kao cjelobrojni podatak. Preko indeksa polja s
definiranim bojama se lako znakovni niz pretvori u odgovarajuu cjelobrojnu vrijednost.
$lista = array (
"Bijelo" =>0,
"Zeleno" =>1,
"uto" =>2,
"Naranasto" =>3,
"Crveno" =>4
);
Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 26


$zupanije = array (
1 => "Zagrebacka",
2 => "Krapinsko-zagorska",
3 => "Sisacko-moslavacka",
4 => "Karlovacka",
...
);

for ($i=1;$i<22;$i++)
{
$zup="zup_".sprintf("%02d",$i);

$out=$lista[$_POST[$zup]];
$zup_string=$zupanije[$i];
$opis_string=$_POST[$zup."_opis"];

ubaciBaza($zup_string,$out,$dat_cijeli,$korisnik_ime,$vrijeme,$op
is_string);
}
Ispis 3.15 Sakupljanje podataka iz forme
Na ispisu 3.16 je kompletna funkcija za upis podataka o upozorenjima. Vidljiv je i dio gdje
se navode moduli za uitavanje konfiguracijskih podataka i spajanje na bazu. Zatim se u
bazi provjerava postoji li ve slog za datum koji se upisuje. Ako postoji izvrava se
UPDATE zahtjev prema bazi, ako ne postoji radi se INSERT u bazu. Tako je jednom
funkcijom rijeen i novi upis i auriranje podataka.
function ubaciBaza($zupanija,$stupanj,$datum,$korisnik,$vrijeme,$opis)
{

include 'sistem_config.php';
include 'sistem_spajanje.php';

$podatak = mysql_query("select distinct upDatum from t_upozorenja
where upDatum='".$datum."' and zupanija='".$zupanija."'")or
die(mysql_error());
Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 27

$dodano=mysql_fetch_assoc($podatak);

if ($datum==$dodano['upDatum'])
{
$novi = mysql_query("update t_upozorenja set opis='".$opis.
"',
stupanj='".$stupanj."',zadnja_izmjena='".$korisnik.":".$vrijeme."' where
upDatum='".$datum."' and zupanija='".$zupanija."'")or die(mysql_error());
}
else
{
$novi = mysql_query("insert into t_upozorenja
(upDatum,zupanija,stupanj,autor,zadnja_izmjena,opis)
values
('".$datum."','".$zupanija."','".$stupanj."','".$korisnik."','".$korisnik
.":".$vrijeme."','".$opis."')")or die(mysql_error());
}

$dodano=mysql_query($novi);
}
Ispis 3.16 Funkcija za upis podataka
Osim unosa i izmjene korisnik upozorenja moe i brisati. Ovu funkciju obavljaju dva
modula, to su brisanje_upozorenja.php i brisi_upozorenja.php. Slino kao kod unosa
jedan modul je za odabir datuma, a drugi nema vizualni dio nego je namijenjen interakciji
prema bazi. Nain dohvata raspoloivih datuma je isti kao i kod odabira datuma za
ureenje.
Na ispisu 3.17 je prikazan nain na koji se korisnika pita je li siguran da eli brisati
podatak. Ako jest vrijednost padajue liste se preslikava u skrivenu varijablu
datumSkriveni koju e sljedei modul primiti preko $_POST polja. Ukoliko korisnik klikne
cancel nee se dogoditi nita, odnosno podatak nee biti obrisan.



Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 28

function provjera()
{
if (confirm("Jeste li sigurni da elite obrisati podatak?"))
{
var selNum = GlavnaForma.datumiPostojeci.selectedIndex;
var selText = GlavnaForma.datumiPostojeci.options[selNum].text;

GlavnaForma.datumSkriveni.value=selText;
return(true);
}
else
return(false);
}
Ispis 3.17 Detalj modula brisanje_upozorenja.php
Na ispisu 3.18 je prikazan gotovo cijeli modul za brisanje. Preko forme na prethodnom
modulu se preko submita prosljeuje datum koji je potrebno obrisati, ovaj modul ga
prihvaa i prosljeuje bazi DELETE SQL naredbu. Nakon toga korisnika preusmjerava na
obavijest da je brisanje uspjeno odraeno.
$dat_cijeli=$_POST['datumSkriveni'];

$linkID = mysql_connect($host, $user, $pass) or die("Could not connect to
host.");
mysql_select_db($database, $linkID) or die("Could not find database.");

$podatak = mysql_query("delete from t_upozorenja where
upDatum='".$dat_cijeli."'")or die(mysql_error());
$obrisano=mysql_query($podatak);

header("Location: poruka_ok.php?tip=obrisano");
Ispis 3.18 Brisanje prognoza

Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 29

3.2.2.3 Obrada prognoze
Na slici 3.4 prikazana je logika struktura posluiteljskog dijela aplikacije koji slui za
obradu prognoza. Aplikacija omoguuje unos, izmjenu, brisanje i pregled prognoza.
Obrada
prognoza
Upis prognoza
Pregled
prognoza
Brisanj e
prognoza
Brisanj e
Izmj ena
prognoze
Izmj ena
Unos
Prognoza

Slika 3.4 Logika struktura dijela aplikacije za obradu prognoza
Unos prognoza je izgledom dosta slian unosu upozorenja i sastoji se od slinih modula.
Zbog toga e biti opisan ukratko kako se ne bi ponavljale iste stvari. Moduli od kojih se
ovaj dio aplikacije sastoji su :
brisanje_prognoza.php - modul za odabir datuma za brisanje
brisi_prognoze.php - modul za interakciju s bazom kod brisanja
forma_prognoze.php - modul s formom za unos prognoza
pregled_prognoza.php - modul za pregled prognoza na posluitelju
unos_prognoza.php - modul za odabir datuma za obradu prognoza
upis_prognoza.php - modul za interakciju s bazom kod upisa
Slino kao kod upozorenja modul unos_prognoza.php nudi listu postojeih datuma i
omoguava odabir pojedinog od njih kao i unos novog. Razlika je to se prognoze unose za
Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 30

tri razdoblja dana pa su sukladno tome ovdje tri tipke za unos, svaka za pojedino doba
dana. Da bi modul koji poziva unos znao o kojem dobu dana se radi napravljena je
JavaScript funkcija koja vrijednost izabrane tipke sprema u skrivenu varijablu.
Na ispisu 3.19 je vidljivo kako se kroz JavaScript funkciju postavlja vrijednost skrivenog
polja koje e se svejedno poslati modulu kojeg poziva klik na bilo koju od tri submit tipke.
function datNovi(tip)
{
if (tip=='jutro')
GlavnaForma.dobaSkriveno.value="jutro";
if (tip=='popodne')
GlavnaForma.dobaSkriveno.value="popodne";
if (tip=='noc')
GlavnaForma.dobaSkriveno.value="noc";
}
Ispis 3.19 Detalj modula unos_prognoza.php
Datumi se u padajuu listu pune na isti nain kao kod unosa upozorenja. Takoer funkcije
za provjeru ispravnosti datuma su iste kao i ona za punjenje trenutnog datuma. Kad se
klikne na tipku za neko doba dana otvara se forma za unos prognoze,
forma_prognoze.php.
Na ispisu 3.20 su prikazane dvije funkcije ija je namjena prikazivanje uputa (hint)
korisniku kako bi znao detaljnije o vrijednosti koja se upisuje u odgovarajue polje. Upute
se prikazuju kad se miem pree preko odgovarajueg podatka u zaglavlju tablice. Na
kraju ispisa je primjer (za jedno polje) kako funkciju pozvati kad se miem pree preko
zaglavlja.
function misVan()
{
document.GlavnaForma.hint.value="";
}

function misUnutra(tipka)
{
if (tipka==8)
Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 31

document.GlavnaForma.hint.value="Podruje za koje prognoza vrijedi";
if (tipka==1)
document.GlavnaForma.hint.value="Tekst prognoze";
if (tipka==2)
document.GlavnaForma.hint.value="Minimalna oekivana temperatura u
C";
if (tipka==3)
document.GlavnaForma.hint.value="Maksimalna oekivana temperatura u
C";
if (tipka==4)
document.GlavnaForma.hint.value="Oekivana brzina vjetra u km/h";
if (tipka==5)
document.GlavnaForma.hint.value="Oekivani smjer vjetra";
if (tipka==6)
document.GlavnaForma.hint.value="Tip oborina";
if (tipka==7)
document.GlavnaForma.hint.value="Koliina oborina - kia u cm po
metru kvadratnom, snijeg u centimetrima";
}
...
<td bgcolor="#AAAAAA" onMouseOver="misUnutra(8)"
onMouseOut="misVan()">Podruje</td>
Ispis 3.20 Detalj modula forma_prognoze.php
Ova forma se veim dijelom generira dinamiki uz koritenje polja definiranih u PHP
skripti u kombinaciji s podacima koji se dohvaaju iz baze.
Klikom na tipku "Spremi" poziva se modul upis_prognoza.php koji putem $_POST polja
prima podatke od forme, transformira ih i u interakciji s bazom provjerava treba li
napraviti INSERT ili UPDATE i tako obnavlja polja. Ukoliko je neko od polja bilo
popunjeno, ali se aurira kako prazno modul e obrisati taj slog iz baze kako ne bi dolazilo
do nepotrebnog dranja sloga u bazi ukoliko on ne sadri nikakvu korisnu informaciju.
Brisanje prognoza se radi na isti nain koji je opisan kod brisanja upozorenja. Prvo modul
brisanje_prognoze.php nudi listu datuma, odabirom datuma i odreenog doba dana se
poziva modul brisi_prognoze.php koji u interakciji s bazom brie odgovarajui slog.
Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 32

Ukoliko se odabere opcija "Sve" onda se kod brisanja kao uvjet ne uzima doba dana nego
samo datum tako da se briu sva tri doba dana za konkretni datum.
Na ispisu 3.21 je vidljiv nain provjere brie li se samo jedno doba dana ili sva tri, i prema
tome odgovarajui zahtjev prema bazi.
if ($tip_cijeli=="sve")
$podatak = mysql_query("delete from t_prognoza where
datum='".$dat_cijeli."'")or die(mysql_error());
else
$podatak = mysql_query("delete from t_prognoza where
datum='".$dat_cijeli."' and doba='".$tip_cijeli."'")or
die(mysql_error());
Ispis 3.21 Detalj modula brisi_prognoze.php
3.2.2.4 Obrada meteorolokih postaja
Na slici 3.5 prikazana je logika struktura posluiteljskog dijela aplikacije koji slui za
obradu meteorolokih postaja. Aplikacija omoguuje unos, brisanje i pregled podataka.
Unos podataka vri se od strane udaljenog raunala meteoroloke postaje koji dostavlja
podatke.
Obrada
postaj a
Meteoroloka
postaj a
Pregled
postaj a
Brisanj e
postaj e
Brisanj e
Upis postaj e
Postaj a
HTTP

Slika 3.5 Logika struktura dijela aplikacije za evidenciju meteorolokih postaja
Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 33

Aplikacija sadri i dio za unos podataka o postajama. Ovaj dio se razlikuje od dijelova za
unos prognoza i upozorenja po tome to se podaci koje postaja alje ne unose runo nego
ih radi program koji se vrti na odreenom raunalu i alje ih putem GET zahtjeva prema
servisu. Meutim neke informacije o postajama je potrebno unijeti kako bi servis dobro
radio, pa za to slui dio aplikacije iji opis slijedi. Taj dio ine sljedei moduli :
brisanje_postaja.php - brie podatke koje je postaja poslala
brisi_postaja.php - interakcija prema bazi kod brisanja
pregled_postaja.php - pregled podataka koje je postaja poslala, na posluitelju
unos_postaja.php - unos osnovnih podataka o postajama
Modul unos_postaja.php slui kako bi se postaji pojedinog korisnika pridruilo ime i
neka vrsta identifikacijske lozinke koju postaja mora poslati kako bi uspjeno upisala slog
u bazu. Za ime korisnika se automatski uzima ime trenutno prijavljenog korisnika i
dohvaa se njegov slog iz baze kako bi se provjerilo je li njegova postaja ve ima ime i
lozinku. Ukoliko ima ti e se podaci prikazati u kuicama za unos i mogue ih je
promijeniti. Ukoliko nema podaci e biti prazni i mogue ih je upisati.
Vaan podatak je lozinka postaje koja se mora slati prema servisu kako bi upis bio
uspjean. Preporueno je da se odabere neka lozinka koju nije jednostavno pogoditi kako
bi se osigurala autentinost podataka. Ovdje kao pomo korisniku postoji funkcija koja
generira sluajnu lozinku od 20 slova i brojeva.
Funkcija prikazana na ispisu 3.22 je napisana u JavaScriptu i iz niza koji sadri sva velika i
mala slova i brojeve uzima sluajne pozicije 20 puta i tako formira lozinku.
<script language="JavaScript">
function Generiraj() {
var skup =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
var izlaz = "";
var slucajna;

for(var i = 0; i < 20; i ++)
{
slucajna=Math.floor(Math.random()*60)
Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 34

izlaz=izlaz+skup[slucajna];
}
document.Glavna.hash.value=izlaz;
}
</script>
Ispis 3.22 JavaScript funkcija za generiranje lozinke
Poto postaje alju podatke prema servisu koji ih upisuje u bazu nekad je te podatke
potrebno i obrisati. Zato je napravljen modul koji omoguava brisanje i to po dva kriterija,
jedan je datum, a drugi je ime postaje. Modul brisanje_postaja.php u padajuim listama
daje imena postaja i datume za koje postoje podaci, izborom odreenog podatka i klikom
na odgovarajuu tipku podaci se prosljeuju modulu brisi_postaja.php koji zatim radi
interakciju prema bazi i brie podatak.
3.2.3 Servisi
U dosad opisanoj funkcionalnosti aplikacije navedeni su detalji o posluiteljskom dijelu i
upisu podatka koje servis stavlja na raspolaganje korisniku. No da bi se podaci iz baze
preslikali u XML datoteke koje servisi nude potrebno je bilo napraviti nekoliko modula
koji e obnaati tu funkcionalnost. To su sljedei moduli :
xml_pos_podaci.php - generira XML datoteku s podacima od postaja
xml_pro_datumi.php - generira XML datoteku s datumima prognoza
xml_pro_podaci.php - generira XML datoteku s podacima prognoza
xml_upo_godine.php - generira XML datoteku s godinama za upozorenja
xml_upo_datumi.php - generira XML datoteku s datumima za upozorenja
xml_upo_podaci.php - generira XML datoteku s podacima za upozorenja
Svi navedeni moduli imaju zajedniku namjenu, a to je generiranje XML datoteka s
podacima koje korisnik servisa trai. Ovi moduli "sjede" izmeu baze i korisnika servisa i
posreduju tako to korisniku daju podatke bez potrebe za direktnom interakcijom s bazom
podataka. Na taj nain je sustav sigurniji, a podaci su jednostavno dostupni korisniku.
Na slici 3.6 prikazana je logika struktura posluiteljskog dijela aplikacije koji funkcionira
kao web servis. Dio web servisa (njegove suelje) je izloen vanjskim klijentima koji
Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 35

koriste njegove funkcionalnost. Podaci koji se pritom koriste evidentirani su u drugim
dijelovima aplikacije.
Suelj e
servisa
Kreiranj e
XMLa
Prognoza po
datumu
Prognoze
Upozorenj a Upozorenj a po
datumu
Upozorenj a po
godinama
Postaj e

Slika 3.6 Logika struktura dijela aplikacije koji nudi funkcionalnost web servisa
Za kreiranje XML datoteka koristi se PHP skripta koja formira stringove koji sadre
podatak zatvoren u odgovarajue tagove.
Radi preglednijeg formatiranja XML datoteke napisana je funkcija koja kao parametar
prima ime taga, sadraj podatka i razinu kako bi se moglo napraviti pomicanje udesno radi
dobivanja itljivije datoteke. Funkcija je prikazana ispisom 3.23.
function pXml($razina,$polje,$vrijednost)
{
$pomak="";
$pomak=str_repeat("\t",$razina);
$povrat=$pomak."<".$polje.">".$vrijednost."</".$polje.">\n";
return $povrat;
}
Ispis 3.23 PHP funkcija za ograivanje sadraja tagovima
Npr. ako korisnik eli vidjeti za koje su mu datume raspoloive prognoze dovoljno je da
pozove URL :
http://posluitelj/xml_pro_datumi.php
Rezultat e biti XML formatirana datoteka primjer koje je prikazan ispisom 3.24.
Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 36

<podaci>
<datum>2010-11-25</datum>
<datum>2010-11-23</datum>
<datum>2010-11-20</datum>
</podaci>
Ispis 3.24 XML datoteka za prognoze
Korisnik servisa zatim moe po listi raspoloivih datuma zatraiti podatke za pojedini
datum na sljedei nain :
http://posluitelj/xml_pro_podaci.php?datum=2010-11-23
Na ispisu 3.25 prikazana je datoteka koja e biti generirana i poslana korisniku servisa kao
rezultat zahtjeva prema servisu da vrati prognozu za 23-11-2010.
<podaci>
<jutro>
<DU>
<tekst>Lijepo jutro u Dubrovniku</tekst>
<tmin>10</tmin>
<tmax>12</tmax>
<vbrz>5</vbrz>
<vsmj>NE</vsmj>
<obtip/>
<obkol/>
<autor/>
</DU>
<ZG>
<tekst>Lijepo jutro u Zagrebu</tekst>
<tmin>11</tmin>
<tmax>15</tmax>
<vbrz>1</vbrz>
<vsmj>SE</vsmj>
<obtip/>
<obkol/>
<autor/>
</ZG>
</jutro>
<popodne>
Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 37

<DU>
<tekst>Popodne naoblaka</tekst>
<tmin>10</tmin>
<tmax>10</tmax>
<vbrz>2</vbrz>
<vsmj>SE</vsmj>
<obtip/>
<obkol/>
<autor/>
</DU>
</popodne>
</podaci>
Ispis 3.25 XML datoteka s podacima o prognozama
Na slian nain rade i ostali moduli koji generiraju XML datoteke. Tako se npr. za
upozorenja prvo poziva modul koji e vratiti listu godina :
http://posluitelj/xml_upo_godine.php
Nakon to servis vrati listu godina mogu se zatraiti raspoloivi datumi za pojedinu godinu
http://posluitelj/xml_upo_datumi.php?godina=2010
Rezultat je ponovno XML datoteka s listom raspoloivih datuma, i sad je mogue zatraiti
podatke za pojedini datum :
http://posluitelj/xml_upo_podaci.php?datum=2010-11-25
Na ovaj zahtjev posluitelj vraa XML datoteku s podacima za pojedini datum. Tu su sve
upanije, stupanj upozorenja i tekst upozorenja. Korisnik servisa zatim moe te podatke
prezentirati na odgovarajui nain.
Ukoliko bi korisnik htio dohvatiti podatke koje su postaje prikupile pozvao bi sljedei
URL :
http://posluitelj/xml_pos_podaci.php
Kao rezultat bi dobio listu podataka s svih postaja po svim datumima.
Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 38

3.2.4 Nain rada servisa
U prethodnom dijelu ovog poglavlja opisano je kako se alje zahtjev prema servisu i kakve
on podatke vraa. U ovom potpoglavlju slijedi detaljniji opis naina rada servisa, odnosno
programskog koda koji omoguuje da servis radi.
Za primjer e biti opisan nain rada pojedinih modula koji pruaju korisniku servisa
podatke o upozorenjima. Prvi je modul xml_upo_godine.php koji vraa listu raspoloivih
godina.
<?php
header("Content-type: text/xml; charset=Windows-1250");
$xml_output = "<?xml version=\"1.0\" encoding=\"Windows-1250\"?>\n";
$xml_output .= "<podaci>\n";

include 'sistem_config.php';
include 'sistem_spajanje.php';

$query = "SELECT distinct YEAR(datum) as godina FROM t_prognoza ORDER BY
datum DESC";
$resultID = mysql_query($query, $linkID);// or die("Nema podataka.");
for($x = 0 ; $x < mysql_num_rows($resultID) ; $x++){
$row = mysql_fetch_assoc($resultID);
$xml_output .= "\t\t<godina>" . $row['godina'] . "</godina>\n";
}
$xml_output .= "</podaci>";
echo $xml_output;
?>
Ispis 3.26 Servis koji vraa podatke o godinama za upozorenja
Kao to je vidljivo iz ispisa 3.26 generiranje XML datoteke poinje ubacivanjem njenih
zaglavlja, odnosno headera. Nakon toga se formira poetni tag <podaci> koji e se
pojaviti i ako podataka nema, ali e izmeu njega i njegovog zatvorenog taga </podaci>
biti prazno. Zatim slijedi konekcija na bazu preko dva modula koji slue za tu svrhu. Kad
se uspjeno povezalo na bazu postavlja se SQL zahtjev koji uzima sve godine za datume
koji su upisani pazei da ne uzima dvaput isti pa koristi DISTINCT naredbu. Takoer se
podaci sortiraju prema godini, u padajuem redoslijedu.
Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 39

Zatim se svaki proitani podatak ograuje odgovarajuim tagom kako bi se znalo o kojem
se podatku radi. Na kraju kad se petlja zavri generira se zavrni tag koji zatvara podatke i
kompletna XML datoteka se preko echo naredbe iz varijable alje na izlaz. Taj izlaz prima
klijent i to su podaci koje on vidi. Cijelo spajanje na bazu i dohvat podataka je za njega
transparentan.
Nakon to je korisnik dobio podatke o godinama moe na raun njih zahtijevati da mu se
poalju datumi za te godine. To e uiniti pozivom drugog modula, a to je
xml_upo_datumi.php.
Na ispisu 3.27 je modul koji generira XML datoteku s popisom datuma za odreenu
godinu. Dio za spajanje na bazu i generiranje zaglavlja je iz ovog ispisa izbaen radi
jednostavnosti, a u praksi je isti kao kod prethodnog modula. Ovaj modul se malo razlikuje
od prethodnog jer prima parametar datum preko URLa. Ukoliko mu je taj parametar
ispravno poslan radi se zahtjev prema bazi i dohvaaju se slogovi koji zadovoljavaju uvjet.
Zatim se jedan po jedan slog ograuje tagovima i prosljeuje izlaznoj varijabli. Na kraju se
varijabla prosljeuje na izlaz i tako ini dostupnom korisniku.
<?php
... //odrezan dio za spajanje na bazu
if (isset($_GET['godina'])) {
$trazena = $_GET['godina'];
$query = "SELECT distinct(upDatum) FROM t_upozorenja where
YEAR(upDatum)= " . $trazena . " ORDER BY upDatum DESC";
$resultID = mysql_query($query, $linkID);// or die("");
for($x = 0 ; $x < mysql_num_rows($resultID) ; $x++){
$row = mysql_fetch_assoc($resultID);
$xml_output .= "\t\t<datum>" . $row['upDatum'] . "</datum>\n";
}
}
$xml_output .= "</podaci>";
echo $xml_output;
?>
Ispis 3.27 Modul xml_upo_datumi.php
Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 40

Korisnik sad ima jo jednu mogunost, a to je da odabere neki od datuma i za njega zatrai
konkretne podatke, to je smisao ovog servisa. Te podatke e mu vratiti modul
xml_upo_podaci.php. prikazan na ispisu 3.28.
<?php
... //izbaen dio radi jednostavnosti prikaza
if (isset($_GET['datum']))
$trazena = $_GET['datum'];
else
$trazena="0000-00-00";

$query = "SELECT zupanija,stupanj,opis FROM t_upozorenja where upDatum=
'" . $trazena . "'";

$resultID = mysql_query($query, $linkID);// or die("Nema podataka.");

for($x = 0 ; $x < mysql_num_rows($resultID) ; $x++){
$row = mysql_fetch_assoc($resultID);
$xml_output .= "\t<entry>\n";
$xml_output .= "\t\t<zupanija>" . $row['zupanija'] . "</zupanija>\n";
$xml_output .= "\t\t<stupanj>" . $row['stupanj'] . "</stupanj>\n";

$row['opis'] = str_replace("&", "&", $row['opis']);
$row['opis'] = str_replace("<", "<", $row['opis']);
$row['opis'] = str_replace(">", "&gt;", $row['opis']);
$row['opis'] = str_replace("\"", "&quot;", $row['opis']);

$xml_output .= "\t\t<opis>" . $row['opis'] . "</opis>\n";
$xml_output .= "\t</entry>\n";
}
$xml_output .= "</entries>";
echo $xml_output;
?>
Ispis 3.28 Modul xml_upo_podaci.php
Ovaj modul prima parametar datum kojeg koristi da bi preko SQL zahtjeva dobio podatke
za konkretan datum. Dohvaene podatke zatim ograuje tagovima i alje na izlaz. Za
Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 41

vrijednost opis se poduzimaju dodatne radnje kako bi se osiguralo da neki od
nedozvoljenih znakova ne zavri u izlazu i tako stvori neispravno formatiranu XML
datoteku.
U ovom poglavlju je opisano na jednom primjeru kako aplikacija putem odreenih modula
generira XML formatirani izlaz koji je onda pogodan za koritenje od strane korisnika
servisa koji ne mora imati pristup bazi jer to posredovanje za njega odrauje servis. Osim
to se korisniku mogu ponuditi servisi za preuzimanje podataka mogue mu je ponuditi i
servis za slanje podataka. Ova aplikacija nudi i to, korisnik moe preko REST protokola
poslati odreene podatke na posluitelj i to putem jednostavnih GET zahtjeva. Pritom je
potrebno da zna kako formatirati zahtjev kako bi ga servis ispravno prihvatio.
Ispis 3.29 prikazuje kompletan servis za primanje podataka od strane korisnika servisa.
Njegova namjena je da iz GET zahtjeva primljenog od korisnika preuzme poslane
vrijednosti i ukoliko su ispravno formirane proslijedi ih u bazu podataka. Na taj nain
korisnik opet nema direktnog kontakta prema bazi nego za njega to odrauje servis.
<?php

date_default_timezone_set('CET');

if (isset($_GET['datum']))
$datum = $_GET['datum'];
else
$datum=date("Y-m-d");

if (isset($_GET['vrijeme']))
$vrijeme = $_GET['vrijeme'];
else
$vrijeme=date("H:i:s");

$datum=navod($datum);
$vrijeme=navod($vrijeme);

if (isset($_GET['hash']))
$hash = $_GET['hash'];
Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 42

else
{
echo "ERROR-HASH";
return;
}

if (isset($_GET['temp']))
$temperatura = navod($_GET['temp']);
else
$temperatura="NULL";

if (isset($_GET['vjetar']))
$vjetar = navod($_GET['vjetar']);
else
$vjetar="NULL";

if (isset($_GET['smjer']))
$smjer = navod($_GET['smjer']);
else
$smjer="NULL";

if (isset($_GET['vlaga']))
$vlaga = navod($_GET['vlaga']);
else
$vlaga="NULL";

if (isset($_GET['kisa']))
$kisa = navod($_GET['kisa']);
else
$kisa="NULL";

include 'sistem_config.php';
include 'sistem_spajanje.php';

$linkID = mysql_connect($host, $user, $pass) or die("ERROR-DBCONNECT");
mysql_select_db($database, $linkID) or die("ERROR-DBLINK");

Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 43

$podatak=$check = mysql_query("SELECT uPostaja FROM t_korisnik where
uHash='".$hash."'")or die(mysql_error());
$info = mysql_fetch_array( $check );

if ($info['uPostaja']=="")
{
echo "ERROR-POSTAJA";
return;
}
else
$imePostaje=navod($info['uPostaja']);

$podatak = mysql_query("insert into t_postaja
(imePostaje,datum,vrijeme,temperatura,vjetar,smjer,vlaga,kisa)
values
(".$imePostaje.",".$datum.",".$vrijeme.",".$temperatura.",".$vjetar.",".$
smjer.",".$vlaga.",".$kisa.")")or die("ERROR".mysql_error());

if ($podatak==1)
echo "OK";
else
echo "ERROR-NODATA";

function navod($ulaz)
{
return "'".$ulaz."'";
}

?>
Ispis 3.29 Modul rest_slanje.php
Sam nain rada ovog servisa je dosta jednostavan. Preko isset funkcije se provjerava koje
vrijednosti su poslane servisu. One koje su poslane se preslikavaju u varijable. Neke od
vrijednosti (npr. hash) su obavezne, pa ukoliko nisu poslane dolazi do poruke o greci.
Neke nisu obavezne pa njihovo nepostojanje nee stopirati servis nego e on u bazu upisati
NULL vrijednosti na odgovarajue pozicije.
Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 44

Ukoliko doe do greke servis e kao povratnu vrijednost javiti ERROR-kod_greke, dok
e kod uspjenog upisa poslati povratnu vrijednost OK. Na ovaj nain pozivatelj servisa
ima informaciju kako je transakcija prola i donekle ima uvid u to to je krivo napravljeno
ako transakcija nije prola.
Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 45

4 Opis aplikacije za razmjenu meteorolokih
podataka
Realizirana aplikacija za razmjenu meteorolokih podataka ima dvije glavne namjene. Prva
je pruiti servis za praenje meteorolokih podataka i to na nain da korisnik s pravima za
ureivanje unosi podatke preko web suelja, a klijenti pozivom dostupnih servisa mogu te
podatke dohvatiti u obliku XML datoteka. Na takav nain klijenti nemaju direktnu
interakciju s bazom nego interakciju obavlja posluitelj koji klijentu daje pripremljene i
formatirane podatke. Druga namjena aplikacije je pruiti servis za primanje podataka s
meteorolokih postaja. Za potrebe demonstracije koritenje napravljenih web servisa
napravljena je aplikacija sa servisom za primanje i davanje meteorolokih podataka.
Dio aplikacije dostupan registriranom korisniku nudi mogunost ureivanja pojedinih
podataka koje e servis nuditi klijentima. Taj dio je podijeljen na dva osnovna dijela:
prognoze i upozorenja.
Prognoze sadre podatke o predvienom kretanju meteorolokih prilika, dok upozorenja
sadre podatke koji upozoravaju na mogunost oluja i ostalih vremenskih neprilika.
4.1 Ulazni dio
Kada korisnik pristupi aplikaciji nude mu se dvije opcije, moe se ili prijaviti na sustav i
ureivati podatke ili moe ostati neprijavljen i pregledavati podatke, ali bez mogunosti
mijenjanja.
Ako se radi o novom korisniku koji eli imati pristup ureivanju podataka on moe
odabrati opciju 'dodavanje novog korisnika' i upisati svoje podatke.





Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 46

Na slici 4.1 je vidljiv izgled zaslona kad korisnik koji nije prijavljen pristupi aplikaciji.

Slika 4.1 Poetna stranica
Na slici 4.2 vidljiv je izgled zaslona za prijavu novog korisnika. Potrebno je upisati
osnovne podatke, a to su ime i prezime, odabrati korisniko ime s kojim e se prijavljivati
u sustav i lozinku. Kada se novi korisnik registrira njegovi podaci e biti upisani u bazu, ali
jo uvijek nee imati mogunost ureivanja podataka. Da bi dobio tu mogunost
administrator ga prvo mora odobriti.

Slika 4.2 Prijava novog korisnika


Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 47

U sluaju da se pokua prijaviti dok nije odobren javiti e mu se poruka da mora priekati
odobrenje i ta poruka je prikazana na slici 4.3.

Slika 4.3 Pokuaj prijave neaktivnog korisnika
4.2 Korisniki dio
Ako je korisnik ve odobren moe se prijaviti u aplikaciju sa svojim podacima. Provjerava
se lozinka i korisniko ime, a ako podaci nisu odgovarajui korisniku se ne doputa ulaz u
korisniki dio. Isto vrijedi i ako korisnik nije odobren.
Slika 4.4 prikazuje izgled zaslona nakon to se korisnik uspjeno prijavio. Korisniku se
nude opcije ureivanja podataka, a u svakom sluaju mu ostaju i pregledi koje ima i
neregistrirani korisnik. Kad je gotov s radom registrirani korisnik se moe odjaviti iz
aplikacije.

Slika 4.4 Korisniki izbornik
4.3 Administracija
Ovaj dio aplikacije sadri administrativni dio gdje se mogu vidjeti korisnici i mogu se
omoguiti odnosno onemoguiti. Korisnik kojemu se eli zabraniti pristup aplikaciji se
jednostavno onemogui i iako e i dalje postojati kao korisnik nee moi ui u korisniki
dio aplikacije.
Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 48

Na slici 4.5 vidljiv je izgled zaslona s listom korisnika, a nudi se i mogunost odobravanja,
odnosno zabranjivanja pristupa pojedinom korisniku. Administratorski raun se ne moe
onemoguiti jer bi u tom sluaju bilo nemogue pristupiti aplikaciji.

Slika 4.5 Administrativni dio aplikacije
4.4 Prognoze
U ovom dijelu aplikacije korisnik moe unositi ili brisati pojedine prognoze. Prvo se
korisniku nudi da izabere konkretnu prognozu koju eli ureivati.
4.4.1 Ureivanje
Slika 4.6 prikazuje izgled zaslona za odabir konkretne prognoze.

Slika 4.6 Odabir datuma prognoze
Tri su osnovne mogunosti:
1. Korisnik moe iz padajueg izbornika izabrati neki od datuma za koji je prognoza
ve upisana pa je zatim ureivati,
2. Korisnik moe klikom na tipku "Trenutni" odabrati dananji datum, a moe i runo
upisati datum u odgovarajue kuice za unos.
Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 49

3. U sluaju da korisnik upie datum za koji ve postoji prognoza automatski se otvara
ve unesena koju je onda mogue dalje ureivati.
Prognoze su podijeljene po dva kriterija, prvi je po razdoblju dana, a to su jutro, popodne i
no, a drugi kriterij je klimatoloka cjelina. Nakon to se odabere datum prognoze klikom
na jednu od tri tipke se ulazi u ureivanje pojedinog dijela dana.
Slika 4.7 prikazuje zaslon za ureivanje prognoza. U samom naslovu tablice je naveden
datum i doba dana za koje se prognoza ureuje. Prognoza je u ovom dijelu podijeljena na
osam klimatolokih cjelina Hrvatske. Za prognoze ova podjela je loginija nego podjela na
etiri regije ili po upanijama. Razlog tome je to pojedine upanije nemaju iste
klimatoloke prilike u svim svojim dijelovima. Osam podruja je navedeno prema
najveim gradovima unutar njih.

Slika 4.7 Ureivanje prognoza
U ovom dijelu programa mogue je upisivati podatke bitne za prognozu. Najvee polje je
tekst prognoze koji prate numerike i opisne vrijednosti. One su redom:
minimalna oekivana temperatura,
maksimalna oekivana temperatura,
jaina vjetra,
smjer vjetra,
tip oborina,
koliina oborina.
Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 50

Svi podaci osim opisa su proizvoljni, mogu se upisati, ali i ne moraju. Ako se ne upie
tekst prognoze ostali podaci e biti vidljivi na ovom zaslonu, ali servis nee slati korisniku
te podatke za konkretnu klimatoloku cjelinu, doba dana i datum.
Na zaslonu su vidljive i dvije naizgled iste opcije, premda su u praksi znatno razliite. One
su "Resetiraj" i "Oisti". Funkcija tipke "Resetiraj" je da podatke u tablici vrati na zadnje
spremljeno stanje, dok tipka "Oisti" sve podatke iz tablice brie. Ako se nakon toga
pritisne tipka "sauvaj" rezultat e biti isti kao da su podaci obrisani. Tipka "sauvaj"
sprema u bazu trenutni izgled tablice.
4.4.2 Brisanje
Za odreeni datum i razdoblje dana mogue je i obrisati unesene podatke o prognozi. Na
slici 4.8 vidljiv je zaslon za brisanje prognoza. Padajua lista nudi sve datume za koje
postoje upisane prognoze i onda je mogue klikom na odgovarajuu tipku odabrati brisanje
jednog razdoblja dana ili sva tri.

Slika 4.8 Brisanje prognoza
4.5 Upozorenja
Slino kao i prognoze mogue je ureivati i brisati i upozorenja.
Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 51

4.5.1 Ureivanje
Na slici 4.9 je vidljiv izgled zaslona za izbor ureivanja upozorenja. Dosta je slian onome
za ureivanje prognoza, s razlikom da je ovdje samo jedna opcija ureenja budui da
upozorenja vae za cijeli dan, a ne samo dio dana kao prognoze. Ostali izbori su isti,
mogue je odabrati ve postojei datum, unijeti novi ili trenutni.

Slika 4.9 Izbor datuma upozorenja
Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 52

Na slici 4.10 prikazan je zaslon za ureivanje upozorenja. Za razliku od prognoza
upozorenja su rasporeena po upanijama. Tu je 20 upanija i grad Zagreb. U naslovu
tablice je navedeno za koji se datum ureuju upozorenja.

Slika 4.10 Ureivanje upozorenja
Za svaku upaniju mogue je iz padajueg izbornika izabrati jednu od pet boja koje
predstavljaju stupanj opasnosti. Bijela boja znai da nema podataka, zelena da nema
opasnosti, a stupanj opasnosti raste od ute preko naranaste do crvene. Odmah pored
izbora boje su kuice za unos teksta koji poblie objanjava zato je upozorenje izdano.
Ovdje i jedno i drugo polje mogu, ali i ne moraju biti popunjeno, primjerice mogue je da
opasnost postoji samo na krajnjem jugu pa e se onda za najjuniju upaniju unijeti podaci,
a ostale e ostati prazne.
Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 53

4.5.2 Brisanje
Kao i prognoze, upozorenja je takoer mogue brisati. Na slici 4.11 je vidljivo kako
izgleda okvir za brisanje upozorenja, izgledom je isto kao okvir za brisanje prognoza.

Slika 4.11 Brisanje upozorenja
4.6 Postaje
Za meteoroloke postaje je takoer mogue ureivati podatke
4.6.1 Podaci o postaji
Na slici 4.12 se vidi kako izgledaju podaci o postaji. U naslovu tablice naveden je trenutno
prijavljeni korisnik, a ispod toga ime njegove postaje. To ime se moe mijenjati i ono e se
prikazivati u pregledima podataka po postajama. Drugi podatak koji se moe ureivati je
lozinka za postaju. Taj podatak postaja mora poslati skupa s podacima kako bi se
identificirala i kako bi joj se dozvolio unos podataka u bazu. Klikom na "random" ova
lozinka e se generirati sluajnim odabirom slova i brojeva jamei tako veliku razinu
jedinstvenosti.

Slika 4.12 Podaci o postaji
Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 54

4.6.2 Brisanje
Budui da postaje imaju mogunost slanja podataka prema posluitelju nekad se javlja
potreba da se dio podataka i obrie, recimo ako je ustanovljeno da je postaja neko vrijeme
bila u kvaru pa su podaci neispravni ili ako je neka postaja izala iz sustava pa ju je
potrebno ukloniti iz pregleda.
Na slici 4.13 je prikazan okvir za brisanje podataka koje postaje alju. Tri su mogua
kriterija, moe se brisati odabirom datuma, odabirom postaje ili odabirom oba podatka.

Slika 4.13 Brisanje podataka postaje
Ovim pregledom opisane su sve funkcije koje ima prijavljeni korisnik. Budui da
neprijavljeni korisnik ima funkcije kao i korisnik servisa te funkcije e biti opisane kroz
opis rada servisa.
Sve dosad navedeno kroz opis korisnikog suelja vrijedi za unos, brisanje i ureivanje
podataka. To su funkcije dostupne samo prijavljenim korisnicima. to se tie pregleda
podataka on je omoguen i neprijavljenim korisnicima putem mrenog servisa koji u XML
obliku servira podatke zainteresiranim korisnicima. Pritom korisnik mora znati kako
postaviti zahtjev posluitelju, a isto tako mora znati kako protumaiti primljene podatke.
4.7 Pregledi (klijentski dio)
Budui da aplikacija daje servis na koritenje vanjskim programima za demonstraciju rada
servisa izraeno je nekoliko primjera pregleda podataka. To su pregled upozorenja,
prognoza i podataka s postaja.

Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 55

Na slici 4.14 su prikazane opcije koje se klijentu nude, klikom na odgovarajuu poveznicu
otvara se neki od pregleda.

Slika 4.14 Izbor pregleda na strani klijenta
Klikom na pregled upozorenja se otvara zaslon kao na slici 4.15, gdje su preko Flash
objekta predstavljene razine opasnosti po upanijama.

Slika 4.15 Pregled upozorenja
Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 56

upanije su obojane odgovarajuim bojama da vizualno istaknu stupanj opasnosti, a
prelaskom pokazivaa mia preko odreene upanije se u okviru s informacijama
pojavljuje detaljniji opis opasnosti. Korisnik takoer preko padajuih izbornika moe
odabrati datum za koji eli pregledati upozorenja.
Na slici 4.16 je prikazan primjer kako klijent za pregled prognoza moe izgledati,
korisniku se prvo nudi lista raspoloivih datuma, kad odabere odreeni datum za njega se
otvara lista prognoza. Ako za neko podruje ili doba dana nije upisana prognoza ona se
nee pojaviti u pregledu. Ovo je ostavljeno na izbor programeru klijentskog dijela, isto
tako je moglo biti napravljeno da za podruja i doba dana za koja nema podataka pie npr.
"nema podataka".

Slika 4.16 Pregled prognoza
Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 57

Na slici 4.17 je primjer klijenta koji prikazuje podatke o postajama. U ovom sluaju su
postaje grupirane prema imenu, a podaci pojedine postaje su jo sloeni po datumu,
poevi od najsvjeijeg podatka.

Slika 4.17 Pregled podataka za postaje
Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 58

5 Klijentski dio
Primarna svrha opisane aplikacije je pruanje mrenih servisa vanjskim korisnicima na
koritenje. No u svrhu demonstracije rada servisa napravljeno je i nekoliko klijentskih
modula koji pomau u prikazu rada aplikacije. Pritom je iskoriteno vie naina prikaza,
jedan od njih je prikaz putem HTML stranice, a drugi je grafiki prikaz kroz Flash objekt.
5.1 Rukovanje XML formatom u aplikaciji
Klijentski dio aplikacije prima XML datoteku i prezentira podatke iz nje na vizualno
jednostavan nain. Za parsiranje XML datoteke iskoritena je biblioteka, odnosno klasa
simpleXML. Njeno koritenje je relativno jednostavno, a prilikom instalacije PHP
interpretera se automatski instalira pa je logian izbor. To nije jedina klasa za rukovanje
XML datotekama, no s obzirom da ima sve potrebno nema potrebe za koritenje drugih,
esto komercijalnih rjeenja.
Uitavanje XML datoteke putem simpleXML klase se moe izvesti na dva naina, jedan je
da se prvo dohvate XML podaci i spreme u varijablu pa se zatim pretvore u XML element,
a drugi nain je da se direktno otvori URL ili datoteka s podacima.
Primjer 1 :
$moji_podaci=simplexml_load_file('podaci.xml');
... // rad s XML podacima
Primjer 2 :
$moji_podaci=SimpleXMLElement('http://www.posluitelj.com/datoteka.xml',n
ull,true);
Primjer 3 :
$datoteka=file_get_contents('podaci.xml');
$moji_podaci = SimpleXMLElement($datoteka);
Ispis 5.1 Primjeri koritenja simpleXML klase
Ispis 5.1 prikazuje tri razliite mogunosti primjene simpleXML klase. U opisanoj
aplikaciji se koristi metoda iz primjera 2, koja podatke dohvaa direktno iz URLa u
Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 59

varijablu i dalje rukuje njima putem funkcija koje SimpleXML biblioteka nudi. Kao prvi
parametar se navodi URL koji sadrava XML datoteku, drugi parametar su opcije, a trei
je true ako se alje ime datoteke, a false ako se alju konkretni XML podaci, odnosno
varijabla koja ih sadri.
5.1.1.1 Detaljni opis simpleXML klase
SimpleXMLElement SimpleXMLElement klasa
SimpleXMLElement::addAttribute dodaje atribut SimpleXML elementu
SimpleXMLElement::addChild dodaje pod-granu XML grani
SimpleXMLElement::asXML Vraa ispravno formirani XML string
SimpleXMLElement::attributes Prikazuje atribute elementa
SimpleXMLElement::children Nalazi pod-grane
SimpleXMLElement::__construct Kreira novi SimpleXMLElement objekt
SimpleXMLElement::count Prikazuje broj pod-grana
SimpleXMLElement::getDocNamespaces Vraa namespace-ove definirane unutar dokumenta
SimpleXMLElement::getName Daje ime XML elementa
SimpleXMLElement::getNamespaces Vraa namespaceove
SimpleXMLElement::registerXPathNamespace Kreira kontekst za XPath zahtjev
SimpleXMLElement::saveXML Isto to i asXML metoda
SimpleXMLElement::xpath Pokree XPath zahtjev

SimpleXML funkcije
simplexml_import_dom Daje SimpleXMLElement objekt iz DOM vora
simplexml_load_file Uitava XML datoteku u objekt
simplexml_load_string Uitava XML string u objekt


Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 60

Primjer stvorenog XML dokumenta iz aplikacije prikazan je ispisom 5.2, a programski kod
koji stvara XML dokument ispisom 5.3
<podaci>
<podatak>
<temperatura>5</temperatura>
<vjetar>10</vjetar>
...
</podatak>
<podatak>
<temperatura>8</temperatura>
<vjetar>9</vjetar>
...
</podatak>
...
</podaci>
Ispis 5.2 XML datoteka koju alje servis
$bazniUrl="http://www.dubrovnikmedia.com/dip/";
$zahtjev=$bazniUrl.'xml_pos_podaci.php';
$slogovi = new SimpleXMLElement($zahtjev, null, true);

echo "<table><tr>";
foreach ($slogovi as $slog)
{
echo "<td>".$slog->temperatura."</td>\n";
echo "<td>".$slog->vjetar."</td>\n";
...
}
echo "</tr></table>";
Ispis 5.3 Preuzimanje datoteke i ispis podataka
U ispisu 5.3 se datoteka uitava putem URLa kao SimpleXML element, i zatim se za svaki
njen podatak pristupanjem preko imena vora dohvaa njegova vrijednost koja se ispisuje
u obliku tablice.

Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 61

Foreach je primijenjen jer dohvaa sve vorove, ali mogue je pristupiti i svakom
posebno. Takav nain pristupa prikazan je ispisom 5.4.
echo " Temper at ur a za dr ugi sl og j e : " . $sl ogovi - >sl og[ 1] - >t emper at ur a;
Ispis 5.4 Pristup pojedinom elementu stabla
Kad bi taj vor imao atribut njemu bi se isto moglo direktno pristupiti. Primjer pristupa
atributu prikazan je ispisom 5.5
echo " At r i but za dr ugi sl og j e : " . $sl ogovi - >sl og[ 1] [ ' at r i but ' ] ;
Ispis 5.5 Pristup odreenom atributu
5.2 Primjer klijenta - pregled prognoza
Pregled prognoza predstavlja modul koji se vrti na klijentskoj strani, preuzima podatke
iskljuivo putem XML datoteke preko SimpleXML klase i prezentira ih kroz HTML
stranicu.
Ispis 5.6 prikazuje dio koda koji preuzima XML datoteku s posluitelja, i zatim ju
pretrauje kako bi se vidjelo koji su podaci dostupni. Preslikavanje je napravljeno u
dvodimenzionalno polje, jednu dimenziju predstavlja podruje, a drugu doba dana. Tako je
na kraju rezultat matrica koja sadri plusove za odgovarajue doba dana i podruje ukoliko
postoje podaci za njega. Ukoliko ne postoje, matrica na tom polju ima vrijednost praznog
niza.
$zahtjev=$bazniUrl.'xml_pro_podaci.php?datum='.$izabrani;
$records = new SimpleXMLElement($zahtjev, null, true);

for ($j=1;$j<9;$j++)
for ($i=1;$i<4;$i++)
if (isset($records->$doba_var[$i]->$grad_var[$j]->tekst))
{
$gradIma[$j][$i]="+";
$sveIma="+";
}

Ispis 5.6 Detalj klijenta za pregled prognoza
Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 62

Zatim se ovisno o tome koje vrijednosti postoje formira tablica koja sadri proitane
podatke.
Na ispisu 5.7 vidljiv je nain prezentacije podataka. Dvije ugnijeene petlje (jedna za
podruje, jedna za doba dana) pregledavaju prethodno formirano polje koje ima indikatore
postojanja podataka za pojedino doba dana i podruje i onda ovisno o tome postoje li
podaci ispisuje konkretne podatke iz XML datoteke. XML datoteku od trenutka uitavanja
predstavlja varijabla $records koja sadri unutar sebe sve podatke koje je XML datoteka
vratila. Na isti nain radi i pregled postaja.
for ($j=1;$j<9;$j++)
{
if ($gradIma[$j][1].$gradIma[$j][2].$gradIma[$j][2]!="")
{
echo "<tr><td align='center' bgcolor='#CCCCCC'><b>Podaci za podruje
: ".$grad_ime[$j]."</b></td></tr>";
echo "<tr><td>";
for ($i=1;$i<4;$i++)
{
if (isset($records->$doba_var[$i]->$grad_var[$j]->tekst))
{
echo "<b>".$doba_ime[$i]." : </b>";
echo "".$records->$doba_var[$i]->$grad_var[$j]->tekst.", ";
if ($records->$doba_var[$i]->$grad_var[$j]->tmin=="")
echo "Nema podataka o temperaturi,";
else
echo "temperatura e biti od : ".$records->$doba_var[$i]-
>$grad_var[$j]->tmin." do ".$records->$doba_var[$i]->$grad_var[$j]-
>tmax." stupnjeva celzijevih,";
if ($records->$doba_var[$i]->$grad_var[$j]->vbrz=="")
echo " a vjetra nee biti. ";
else
echo " a brzina vjetra : ".$records->$doba_var[$i]-
>$grad_var[$j]->vbrz." metara u sekundi, smjer ".$records->$doba_var[$i]-
>$grad_var[$j]->vsmj.". ";
if ($records->$doba_var[$i]->$grad_var[$j]->obtip=="")
echo "Oborine se ne oekuju.<br>";
Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 63

else
echo "Oekivani tip oborina : ".$records->$doba_var[$i]-
>$grad_var[$j]->obtip.", u koliinama ".$records->$doba_var[$i]-
>$grad_var[$j]->obkol." l/m2<br>";
}
}
}
echo "</td></tr>";
}
Ispis 5.7 Detalj modula za prikaz prognoza
5.3 Primjer klijenta - pregled upozorenja
Za razliku od pregleda postaja i prognoza koji se prezentiraju kroz HTML stranicu, pregled
upozorenja je izraen koritenjem Adobe Flash aplikacije. Grafiki elementi su napravljeni
kroz grafiko suelje, a programski kod je napisan kao ActionScript, a to je programski
jezik ugraen u Adobe Flash.
Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 64

Na slici 5.1 prikazano je koriteno razvojno okruenje za razvoj Adobe Flash aplikacija.

Slika 5.1 Adobe Flash razvojno okruje
5.3.1 Prikazivanje opisa
Svaka upanija je izraena kao zaseban objekt i dodane su mu akcije koje se automatski
izvravaju nakon to pokaziva mia doe iznad njega, odnosno kad izae s njega. To je
napravljeno putem ActionScripta.
Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 65

Na ispisu 5.8 vidljiv je programski kod koji prilikom prelaska mia u okviru za prikaz
podataka (boxxy) prikazuje odgovarajui lan polja opisi u kojeg su prilikom uitavanja
XML datoteke preneseni opisi upozorenja za pojedinu upaniju. Isto tako se i tekst polju
naslovLabel pridruuje vrijednost iz polja zupanijeAr koje sadri ve uitana imena svih
upanija. Kad pokaziva mia izae van polja poziva se kod u on(rollOut) bloku i tekst i
naslov postavlja na prazan niz.
on ( rollOver) {
_root.boxxy.text=_root.opisi[12];
_root.naslovLabel.text=_root.zupanijeAr[12];
}

on ( rollOut) {
_root.boxxy.text="";
_root.naslovLabel.text="";
}
Ispis 5.8 Rukovanje rollover dogaajima
5.3.2 Rukovanje XML datotekama
Flash objekt preuzima od mrenog servisa podatke u XML formatu i zatim ih je potrebno
parsirati kako bi se mogli pretvoriti u pregledne podatke. Prvo je potrebno definirati da e
se koristiti XML datoteka to je prikazano na ispisu 5.9..
var theXMLg:XML = new XML();
theXMLs.ignoreWhite = true;
ispis xx - deklaracija varijable
Ispis 5.9 Definicija koritenje XML podataka
Pri uitavanju XMLa se poziva metoda onLoad, pa je potrebno u nju ubaciti radnje koje se
izvravaju kod uitavanja.
Na ispisu 5.10 je vidljiv nain uitavanja XML datoteke, u konkretnom sluaju datoteke
koja sa servisa preuzima listu raspoloivih godina. Varijabli nodes se pridruuje XML
datoteka. Zatim se obave pripremne radnje za vizualne dijelove Flash objekta i nakon toga
kroz for petlju prolazi cijela XML datoteka iji podaci se prebacuju u theListGod objekt,
koji predstavlja padajui izbornik za odabir godina. Nakon toga se selektira prva
Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 66

raspoloiva godina i za nju se uitavaju datumi. Funkcija koja uitava datume je slina
ovdje navedenoj i takoer e odabrati prvi raspoloivi datum i pozvati funkciju za
uitavanje podataka.
theXMLg.onLoad = function() {
var nodes:Array = this.firstChild.childNodes;
var vStu, vZup, vOpi:String;
bojajZupaniju("255","sve");
puniOpis("prazno","0");
theListGod.removeAll();

theListGod.addItem("...");
for (i=0; i<nodes.length; i++) {
theListGod.addItem(nodes[i].firstChild.nodeValue,i);
}
theListGod.setSelectedIndex(1);
ucitajDatume(theListGod.getSelectedItem().label);
}
Ispis 5.10 onLoad funkcija
Na ispisu 5.11 je vidljivo to se dogaa kod uitavanja podataka o upozorenjima putem
XML datoteke koja se dobije od servisa. Iz XML datoteke se izdvaja ime upanije, stupanj
opasnosti i opis opasnosti. Zatim se pomou funkcije bojajZupaniju postavlja boja objekta
koji predstavlja upaniju, a sukladno uitanom stupnju opasnosti. Funkcija puniOpis u
polje s opisima dodaje opis opasnosti za trenutno uitavanu upaniju kako bi kasnije bilo
mogue taj opis prikazati prilikom prijelaza kursora preko upanije.
theXMLz.onLoad = function() {
var nodes:Array = this.firstChild.childNodes;
var vStu, vZup, vOpi:String;

bojajZupaniju("255","sve");

for (i=0; i<nodes.length; i++) {
vZup = nodes[i].childNodes[0].firstChild.nodeValue;
vStu = nodes[i].childNodes[1].firstChild.nodeValue;
vOpi = nodes[i].childNodes[2].firstChild.nodeValue;
Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 67

bojajZupaniju(vStu,vZup);
puniOpis(vZup,vOpi);
}
};
Ispis 5.11 Uitavanje podataka o upanijama
5.3.2.1 Postavke
Ovaj Flash objekt osim preuzimanja podataka putem servisa i za svoje postavke koristi
XML datoteku koja je spremljena lokalno. U njoj su navedene lokacije servisa kako bi
Flash objekt mogao jednostavno dohvaati podatke, a takoer kako bi se mogli adrese
servisa mijenjati bez potrebe za ponovnim prevoenjem samog objekta. Datoteka s
postavkama sadri tri varijable, budui da Flash objekt uitava tri razliita podatka sa
servisa.
Na ispisu 5.12 prikazan je izgled konfiguracijske datoteke za Flash objekt. U realnom
sluaju se posluitelj zamjenjuje stvarnom lokacijom posluitelja.
<postavke>
<godine>http://posluitelj/xml_upo_godine.php?</godine>
<datumi>http://posluitelj/xml_upo_datumi.php?</datumi>
<podaci>http://posluitelj /xml_upo_podaci.php?</podaci>
</postavke>
Ispis 5.12 Sadraj datoteke s postavkama
Na ispisu 5.13 je vidljiv cijeli proces rukovanja postavkama. Prvo se definira objekt koji e
primiti XML podatke, zatim se definira to e se dogoditi prilikom uitavanja, a to je
preslikavanje podataka u tri varijable, i na kraju se pri inicijalizaciji programa poziva
uitavanje postavki. Nakon to program ima ove tri varijable moe preko njih uitati XML
podatke od servisa.
//kreiranje XML objekta
var theXMLs:XML = new XML();
theXMLs.ignoreWhite = true;
//definiranje onLoad funkcije
theXMLs.onLoad = function()
{
Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 68

var nodes:Array = this.firstChild.childNodes;

for (i=0; i<nodes.length; i++) {
if (nodes[i].nodeName=="godine")
urlGodine=nodes[i].firstChild.nodeValue;
if (nodes[i].nodeName=="datumi")
urlDatumi=nodes[i].firstChild.nodeValue;
if (nodes[i].nodeName=="podaci")
urlPodaci=nodes[i].firstChild.nodeValue;
}
}
//poziv uitavanja podataka
theXMLs.load("./postavke.xml");
Ispis 5.13 Rukovanje postavkama
Na ispisu 5.14 je vidljivo kako se varijabla uitana iz postavki (urlGodine) koristi kako bi
se pozvala adresa servisa i preuzeli podaci u varijablu theXMLg i kasnije obradili putem
theXMLg.onLoad funkcije. Kako bi se izbjeglo cachiranje podataka servisu se uvijek alje
razliiti upit tako to se kao jedan od parametara pridruuje trenutno vrijeme. Servis e taj
podatak ignorirati, ali e efikasno sprijeiti cachiranje i uitavanje podataka koji su ve bili
uitani, ali su se u meuvremenu promijenili.
function ucitajGodine() {
dontCache = getTimer();
theXMLg.load(urlGodine+"nema_cache="+dontCache);
}
Ispis 5.14 Uitavanje podataka sa servisa
5.4 Primjer klijenta - slanje podataka s postaje
Osim servisa za slanje podataka klijentu aplikacija sadri i servis namijenjen primanju
podataka. Za demonstraciju njegovog rada napravljena je Windows aplikacija koja simulira
rad postaje. U realnom sluaju bi se koristio program koji od stvarne postaje oitava
podatke putem serijskog porta, transformira ih u oblik pogodan za slanje na servis i zatim
alje. S obzirom da bi takva aplikacija bila prekomplicirana za izradu samo radi
demonstracije rada servisa, umjesto toga je napravljena jednostavnija aplikacija koja
Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 69

podatke generira umjesto da ih oitava s postaje. Takvi generirani podaci se transformiraju
i alju prema servisu. Klijent je u ovom sluaju izraen u Borland Delphi [11] razvojnom
alatu za Windows operacijski sustav.
Na slici 5.2 je vidljiv jednostavan klijent napravljen za demonstraciju rada mrenog servisa
koji prima podatke. Klijentu se predaje osnovni URL na kojem se nalazi servis, a klijent
formira ostatak URLa i poziva ga, ime servis prima podatke. Osim podataka s postaje
potrebno je poslati i lozinku kako bi se podaci prihvatili. Lozinka se konfigurira na
posluiteljskom dijelu aplikacije.

Slika 5.2 Izgled Windows klijenta
Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 70

Slika 5.3 prikazuje kako e na posluitelju izgledati pregled nakon to je klijent poslao
podatke prikazane na slici 5.2.

Slika 5.3 Poslani podaci
5.4.1 Programski kod za slanje podataka
Kao to je spomenuto klijent je dosta jednostavan, koristi jednu funkciju koja alje GET
zahtjev prema posluitelju i drugu koja generira podatke i poziva prvu funkciju.
Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 71

Kao to je vidljivo na ispisu 5.15 timer periodino poziva funkciju koja generira sluajne
podatke, pakira ih u format URLa koji servis prepoznaje i zatim alje GET zahtjev prema
servisu koji taj zahtjev preuzima, vadi podatke iz njega preko $_GET polja i sprema ih u
bazu.
procedure TGlavnaForm.GlavniTimerTimer(Sender: TObject);
var temp,vjeb,vlaga,kisa:longint;
vjes,izlaz,rez,hash:string;
const
smjer:array[0..7] of string = ('N','E','W','S','NE','NW','SE','SW');
begin
temp:=random(80)-40;
vjeb:=random(30);
vlaga:=random(20);
kisa:=random(10);
vjes:=smjer[random(8)];
hash:=HashEdit.Text;


izlaz:=bazaEdit.Text+'hash='+hash+'&temp='+IntToStr(temp)+'&vjetar='+IntT
oStr(vjeb)+'&smjer='+vjes+'&vlaga='+IntToStr(vlaga)+'&kisa='+IntToStr(kis
a);

GlavniRichEdit.lines.add(izlaz);
rez:=GetUrlContent(izlaz); //poziv funkcije koja otvara URL
if (rez='OK') then
GlavniRichEdit.lines.add('Slanje uspjeno')
else
GlavniRichEdit.lines.add('Slanje neuspjeno, povratna vrijednost :
'+rez);
end;
Ispis 5.15 Funkcija za slanje podataka

Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 72

6 Zakljuak
Razvojem PHPa i ostalih alata koji se izvravaju na strani posluitelja stvoreno je dosta
mogunosti za laki i jednostavniji razvoj mrenih servisa. Takoer jednostavna razmjena
podataka putem XMLa je dodatno olakala cijeli proces izrade i koritenja kako
posluitelja tako i klijenta.
Opisana aplikacija demonstrira kako na relativno jednostavan nain izraditi mreni servis
koji koristi REST arhitekturu za komunikaciju klijenta i posluitelja. Na taj nain je
aplikacija uinjena fleksibilnom i lako proirivom, a kao to je demonstrirano jednostavno
je izraditi klijente u raznim tehnologijama, ne samo PHPu.
Prilikom izrade aplikacije steeno je vrijedno teorijsko iskustvo s podruja RESTful
mrenih servisa, kao i praktino iskustvo s podruja programiranja u PHP programskom
jeziku. Steeno je i znanje vezano uz samu REST arhitekturu i praktinu implementaciju
iste u posluiteljsku aplikaciju kao i u razne tipove klijenata. Prilikom izrade aplikacije nije
bilo veih problema, dokumentacija koja opisuje arhitekturu, kao i ona koja opisuje
rukovanje XML formatom u PHPu je dosta dobra i lako dostupna. PHP je verzijom 5
olakao rukovanje XMLom u odnosu na prethodnu verziju ugradnjom klase SimpleXML.
Jedino podruje gdje je bilo malo tee nai dokumentaciju je izrada Flash klijenta.
Aplikacija je izraena kao potpuno funkcionalna i cilj joj je demonstrirati poznavanje rada
sa REST arhitekturom i poznavanje naina funkcioniranja mrenih servisa. Dorade su kao i
uvijek mogue, a neka od podruja gdje ima mjesta doradama bi se mogla istaknuti bolja
sigurnost pri komunikaciji izmeu klijenta i posluitelja, provjera korisnika, eventualno
kreiranje korisnikih grupa i razliita razina prava za pojedine korisnike. Trenutna verzija
implementira funkcije za dvije vrste korisnika, a to su prijavljeni i neprijavljeni korisnik.
Jo jedno od podruja gdje su dorade mogue i poeljne je korisniko suelje. Prilikom
izrade aplikacije naglasak je stavljen na funkcionalnost suelja, no sigurno je da ima jo
mjesta i estetskim doradama.
Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 73

7 Literatura
[1]. World Wide Web Consortium (W3C), http://www.w3.org/, (14.12.2010)
[2]. W3C, WDSL, http://www.w3.org/TR/wsdl, (20.12.2010)
[3]. Wikipedia: SOAP, http://en.wikipedia.org/wiki/SOAP, (30.12.2010)
[4]. Wikipedia: REST, http://en.wikipedia.org/wiki/Representational_State_Transfer,
(30.12.2010)
[5]. R. T. Fielding, Architectural Styles and the Design of Network-based Software
Architectures, Doctoral Dissertation, University of California, Irvnine, 2000.
http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm
[6]. Wikipedia: XML, http://en.wikipedia.org/wiki/XML, (30.12.2010)
[7]. Wikipedia: SGML,
http://en.wikipedia.org/wiki/Standard_Generalized_Markup_Language,
(30.12.2010)
[8]. Pljusak.com, http://pljusak.com/, (30.12.2010)
[9]. Crometeo.net, http://www.crometeo.net/site/index.php, (30.12.2010)
[10]. Dubrovaki Vjesnik, http://dubrovacki.hr/, (30.12.2010)
[11]. Borland Delphi, http://www.borland.com/, (30.12.2010)

Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 74

8 Prilozi
8.1 Popis slika
Slika 3.1Tablice unutar baze podataka .................................................................................. 9
Slika 3.2 Logika struktura posluiteljskog dijela aplikacije .............................................. 11
Slika 3.3 Obrada upozorenja ............................................................................................... 21
Slika 3.4 Logika struktura dijela aplikacije za obradu prognoza ....................................... 29
Slika 3.5 Logika struktura dijela aplikacije za evidenciju meteorolokih postaja ............. 32
Slika 3.6 Logika struktura dijela aplikacije koji nudi funkcionalnost web servisa ........... 35
Slika 4.1 Poetna stranica .................................................................................................... 46
Slika 4.2 Prijava novog korisnika ........................................................................................ 46
Slika 4.3 Pokuaj prijave neaktivnog korisnika................................................................... 47
Slika 4.4 Korisniki izbornik ............................................................................................... 47
Slika 4.5 Administrativni dio aplikacije .............................................................................. 48
Slika 4.6 Odabir datuma prognoze ...................................................................................... 48
Slika 4.7 Ureivanje prognoza ............................................................................................ 49
Slika 4.8 Brisanje prognoza ................................................................................................. 50
Slika 4.9 Izbor datuma upozorenja ...................................................................................... 51
Slika 4.10 Ureivanje upozorenja ....................................................................................... 52
Slika 4.11 Brisanje upozorenja ............................................................................................ 53
Slika 4.12 Podaci o postaji .................................................................................................. 53
Slika 4.13 Brisanje podataka postaje ................................................................................... 54
Slika 4.14 Izbor pregleda na strani klijenta ......................................................................... 55
Slika 4.15 Pregled upozorenja ............................................................................................. 55
Slika 4.16 Pregled prognoza ................................................................................................ 56
Slika 4.17 Pregled podataka za postaje ............................................................................... 57
Slika 5.1 Adobe Flash razvojno okruje .............................................................................. 64
Slika 5.2 Izgled Windows klijenta ....................................................................................... 69
Slika 5.3 Poslani podaci ...................................................................................................... 70
Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 75

8.2 Popis ispisa
Ispis 3.1 Osnova modula unos_korisnika.php ..................................................................... 13
Ispis 3.2 Modul sistem_odobri.php ..................................................................................... 14
Ispis 3.3 Detalj modula sistem_prijava.php ........................................................................ 15
Ispis 3.4 Prijava korisnika ................................................................................................... 16
Ispis 3.5 Detalji pojedinih elemenata forme ........................................................................ 17
Ispis 3.6 Modul sistem_spojen.php ..................................................................................... 18
Ispis 3.7 Modul sistem_odjava.php ..................................................................................... 19
Ispis 3.8 Datoteka sistem_config.php .................................................................................. 20
Ispis 3.9 Sadraj modula sistem_spajanje.php .................................................................... 20
Ispis 3.10 Dio modula unos_upozorenja.php ..................................................................... 22
Ispis 3.11 Primjer JavaScript funkcije ................................................................................ 22
Ispis 3.12 Detalj modula unos_upozorenja.php .................................................................. 23
Ispis 3.13 Punjenje polja s podacima .................................................................................. 24
Ispis 3.14 Detalj modula forma_upozorenja.php................................................................. 25
Ispis 3.15 Sakupljanje podataka iz forme ............................................................................ 26
Ispis 3.16 Funkcija za upis podataka ................................................................................... 27
Ispis 3.17 Detalj modula brisanje_upozorenja.php ............................................................. 28
Ispis 3.18 Brisanje prognoza ............................................................................................... 28
Ispis 3.19 Detalj modula unos_prognoza.php ..................................................................... 30
Ispis 3.20 Detalj modula forma_prognoze.php ................................................................... 31
Ispis 3.21 Detalj modula brisi_prognoze.php ...................................................................... 32
Ispis 3.22 JavaScript funkcija za generiranje lozinke.......................................................... 34
Ispis 3.23 PHP funkcija za ograivanje sadraja tagovima ................................................. 35
Ispis 3.24 XML datoteka za prognoze ................................................................................. 36
Ispis 3.25 XML datoteka s podacima o prognozama .......................................................... 37
Ispis 3.26 Servis koji vraa podatke o godinama za upozorenja ......................................... 38
Ispis 3.27 Modul xml_upo_datumi.php ............................................................................... 39
Ispis 3.28 Modul xml_upo_podaci.php ............................................................................... 40
Ispis 3.29 Modul rest_slanje.php ......................................................................................... 43
Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 76

Ispis 5.1 Primjeri koritenja simpleXML klase ................................................................... 58
Ispis 5.2 XML datoteka koju alje servis ............................................................................ 60
Ispis 5.3 Preuzimanje datoteke i ispis podataka .................................................................. 60
Ispis 5.4 Pristup pojedinom elementu stabla ....................................................................... 61
Ispis 5.5 Pristup odreenom atributu ................................................................................... 61
Ispis 5.6 Detalj klijenta za pregled prognoza ...................................................................... 61
Ispis 5.7 Detalj modula za prikaz prognoza ........................................................................ 63
Ispis 5.8 Rukovanje rollover dogaajima ............................................................................ 65
Ispis 5.9 Definicija koritenje XML podataka..................................................................... 65
Ispis 5.10 onLoad funkcija .................................................................................................. 66
Ispis 5.11 Uitavanje podataka o upanijama ..................................................................... 67
Ispis 5.12 Sadraj datoteke s postavkama ........................................................................... 67
Ispis 5.13 Rukovanje postavkama ....................................................................................... 68
Ispis 5.14 Uitavanje podataka sa servisa ........................................................................... 68
Ispis 5.15 Funkcija za slanje podataka ................................................................................ 71

Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 77

9 Saetak
U ovom diplomskom radu opisana je aplikacija koja koristi mrene servise za razmjenu
meteorolokih podataka. Koritenje podataka je slobodno svim zainteresiranim korisnicima
dok je administrativni dio aplikacije rezerviran za korisnike koji su prijavljeni u sustav i
kojima je odobren rad s podacima od strane administratora. Posluiteljski dio aplikacije
koji prua mrene servise je napisan u PHP programskom jeziku uz koritenje mySQL
baze za pohranu podataka. Klijentski dio aplikacije je izraen dijelom u HTMLu i PHP
programskom jeziku, bez koritenja baze podataka, a dio je napravljen koritenjem Adobe
Flash tehnologije. Opisan je nain rada servisa i tehnologija koje se koriste pri njihovom
koritenju te nain koritenja aplikacije uz popratne slike. Opisan je i nain razmjene
podatka izmeu klijenta i posluitelja s detaljima programskog koda. Demonstriran je
proces prijave, unosa, pregleda i brisanja podataka. Takoer je opisan proces registracije
korisnika i odobravanja istog od strane administratora. Opisani su i demonstrirani primjeri
klijentskih aplikacija koje koriste navedene mrene servise. Na kraju rada, u zakljuku su
navedena iskustva steena tijekom izrade aplikacije kao i mogunosti proirenja iste.

Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 78

10 Kljune rijei
Mreni servisi, XML, mySQL, Adobe Flash, REST.
Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 79

11 Summary
This document describes web application that uses web services for weather data
exchange. Web service is open to all users willing to use it, while administration part is
reserved only for registered and approved users. Server based part of application is written
in HTML and PHP programming language using mySQL database for storage. Client part
of application is built using HTML and PHP without database, and one of client
applications is built using Adobe Flash. The document describes how web service works
and which technologies are used in its development. Also, document contains description
and images of how to use application. Data exchange between server and client is also
described. The document demonstrates user's login to system and usage of data.
Description contains examples of client programs that consume described web service. At
the end of the document there is description of experiences gained in application design
along with possibilities of application upgrades.

Sveuilite u Dubrovniku Koritenje mrenih servisa za razmjenu meteorolokih podataka


Zlatko Bara 80

12 Keywords
Web services, XML, mySQL, Adobe Flash, REST.

You might also like