84
SVEUČILIŠTE U DUBROVNIKU ODJEL ZA ELEKTROTEHNIKU I RAČUNARSTVO STUDIJ POSLOVNO RAČUNARSTVO Zlatko Barać DIPLOMSKI RAD KORIŠTENJE MREŽNIH SERVISA ZA RAZMJENU METEOROLOŠKIH PODATAKA Dubrovnik, prosinac 2010.

zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

SVEUČILIŠTE U DUBROVNIKU

ODJEL ZA ELEKTROTEHNIKU I RAČUNARSTVO STUDIJ POSLOVNO RAČUNARSTVO

Zlatko Barać

DIPLOMSKI RAD

KORIŠTENJE MREŽNIH SERVISA ZA RAZMJENU METEOROLOŠKIH PODATAKA

Dubrovnik, prosinac 2010.

Page 2: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

SVEUČILIŠTE U DUBROVNIKU

ODJEL ZA ELEKTROTEHNIKU I RAČUNARSTVO STUDIJ POSLOVNO RAČUNARSTVO

DIPLOMSKI RAD

KORIŠTENJE MREŽNIH SERVISA ZA RAZMJENU METEOROLOŠKIH PODATAKA

Mentor: Diplomant: Dr.sc. Mario Miličević Zlatko Barać Komentor: Mr. sc. Krunoslav Žubrinić

Dubrovnik, prosinac 2010.

Page 3: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških podataka

Zlatko Barać I

Sadržaj

1  Uvod ............................................................................................................................. 1 

2  Teorijske postavke ....................................................................................................... 2 

2.1  Mrežni servisi.......................................................................................................... 2 

2.2  XML ........................................................................................................................ 2 

2.3  REST ....................................................................................................................... 3 

2.4  Meteorološki podaci ............................................................................................... 6 

3  Struktura aplikacije ...................................................................................................... 8 

3.1  Baza podataka ......................................................................................................... 8 

3.2  Opis aplikacije ...................................................................................................... 10 

3.2.1  Poslužiteljski dio aplikacije ........................................................................... 10 

3.2.2  Prijava korisnika i dodjeljivanje prava .......................................................... 12 

3.2.3  Servisi ............................................................................................................ 34 

3.2.4  Način rada servisa .......................................................................................... 38 

4  Opis aplikacije za razmjenu meteoroloških podataka ................................................ 45 

4.1  Ulazni dio .............................................................................................................. 45 

4.2  Korisnički dio ....................................................................................................... 47 

4.3  Administracija ....................................................................................................... 47 

4.4  Prognoze ............................................................................................................... 48 

4.4.1  Uređivanje ..................................................................................................... 48 

4.4.2  Brisanje .......................................................................................................... 50 

4.5  Upozorenja ............................................................................................................ 50 

4.5.1  Uređivanje ..................................................................................................... 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 

Page 4: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških 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  Zaključak .................................................................................................................... 72 

7  Literatura .................................................................................................................... 73 

8  Prilozi ......................................................................................................................... 74 

8.1  Popis slika ............................................................................................................. 74 

8.2  Popis ispisa ........................................................................................................... 75 

9  Sažetak ....................................................................................................................... 77 

10  Ključne riječi .............................................................................................................. 78 

11  Summary .................................................................................................................... 79 

12  Keywords ................................................................................................................... 80 

Page 5: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških podataka

Zlatko Barać 1

1 Uvod Web aplikacija je aplikacija koja se izvodi na mrežnom poslužitelju koji se obično nalazi

na Internetu. Mrežni servis je aplikacija ili njen dio koji se također izvodi na poslužitelju i

pruža određene usluge korisniku. Npr. može se raditi o pružanju servisa za dohvat rezultata

pretrage ili o servisu koji korisniku pruža informacije o aktualnom stanju na cestama.

Primjene su neograničene.

U ovom dokumentu je opisan mrežni servis koji korisniku pruža informacije o vremenu,

konkretnije korisniku se pruža servis koji nudi vremensku prognozu i upozorenja o

nevremenu. Ciljani korisnici ovakvih servisa su ponajviše internetski portali i razne druge

informativne stranice. Njima je omogućen jednostavan pristup pouzdanim vremenskim

prognozama. Također su dostupne informacije o upozorenjima za vremenske neprilike što

može 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 uređaje jer mogu jednostavno implementirati pristup

servisu u aplikaciju koja prikazuje prognozu i potencijalne opasnosti korisnicima te

aplikacije, ponajviše avanturistima i moreplovcima.

Korisniku se također nudi i jedan servis čija je namjena primanje podataka, a on se koristi

za slanje podataka s meteoroloških postaja i njihovu pohranu na poslužitelj. S obzirom na

otvorenost protokola kojim komunicira postaja preko serijskog porta ovaj servis je

zanimljiv programeru koji želi izraditi program koji očitava podatke sa postaje i šalje ih na

internet.

Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na

poslužitelju i korisniku pružati navedene usluge.

U drugom poglavlju opisane su teorijske postavke rada: mrežni servisi, detalji XML

formata i REST arhitekture te način pripreme, prikupljanja i korištenja meteoroloških

podataka. U trećem poglavlju opisana je arhitektura poslužiteljskog dijela aplikacije, dok je

u četvrtom poglavlju detaljno analiziran programski kod poslužiteljskog dijela aplikacije

kao i primjena aplikacije. U petom poglavlju su opisani primjeri klijenata koji koriste

realizirani web servis.

Page 6: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških podataka

Zlatko Barać 2

2 Teorijske postavke

2.1 Mrežni servisi Mrežni servisi omogućavaju korisniku razmjenu podataka i izvršavanje određenih zahtjeva

na poslužitelju. Korisnik poslužitelju šalje upit, a poslužitelj zatim izvrši potrebne radnje i

vraća korisniku rezultate tog upita. Rezultati su obično formatirani u XML formatu.

Najčešće se za komunikaciju koristi HTTP protokol.

W3C konzorcij [1] definira mrežni servis kao : “Programski sustav dizajniran tako da

podržava međusobnu stroj-stroj interakciju preko mreže“. Mrežni servis može imati sučelje

opisano u formatu koji je moguće strojno obrađivati, konkretno WDSL [2] formatu. Drugi

sustavi komuniciraju s mrežnim servisom putem SOAP [3] poruka, najčešće koristeći

HTTP protokol i XML format datoteka, uz eventualno korištenje i drugih standarda

vezanih uz Internet. Osim komunikacije putem SOAPa moguće je komunicirati i

primjenom REST [4] principa koji je jednostavniji za korištenje. 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 mrežni servisi.

2.2 XML XML [6] je kratica koja označava 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 teško čitljive

ljudima i tekstualnih datoteka kojima manjka opis podataka. Oznake koje se koriste u

XML jeziku su dosta slične 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 našao brojne primjene, tako se koristi za odvajanje podataka od prezentacije (npr.

HTML je prezentacijski jezik), razmjenu podataka (npr. kod mrežnih servisa), spremanje

Page 7: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških podataka

Zlatko Barać 3

podataka (npr. program može svoje postavke čuvati u XML datoteci koja pomalo

zamjenjuje standardnu .ini datoteku), itd.

XML je zamišljen tako da podatke čuva u tekstualnom obliku, ali da ih uokviruje

oznakama koje govore o kakvom se podatku radi. Na taj način je XML jednostavno čitljiv

čovjeku (tekst), a računalo jednostavno nalazi potrebne podatke koristeći oznake (tagove).

Računalo to radi putem programa koji pretražuje datoteku i izdvaja i grupira podatke

ovisno o oznakama koje ih okružuju (parsera).

Zahtjevi koje je W3C postavio pred XML početkom devedesetih godina i koji su

karakteristike XML jezika [6] :

1. XML mora biti izravno primjenjiv preko Interneta.

2. XML mora podržavati š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

slučaju 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. Sažetost kod označavanja dokumenta XML-om je od minimalnog značaja.

2.3 REST REST je kratica od Representational State Transfer i označava način komunikacije između

klijenta i poslužitelja pri korištenju mrežnih resursa pomoću HTTP protokola. Klijent šalje

zahtjev prema poslužitelju, poslužitelj prima zahtjev i u skladu s traženim resursom

formira odgovor i vraća ga klijentu. Resurs može biti bilo što, recimo tekstualni podaci,

slika ili neki jednostavni odgovor u obliku broja. Klijent u bilo kojem trenutku između

zahtjeva može biti u stanju "odmora", odnosno omogućava interakciju s korisnikom, ali pri

tom ne kreira promet prema poslužitelju. Klijent počinje slanje zahtjeva prema poslužitelju

Page 8: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških podataka

Zlatko Barać 4

kad je spreman za prebacivanje u novo stanje. Dok god se jedan ili više zahtjeva izvršava

smatra se da je klijent u stanju prijelaza [5].

REST arhitektura koristi mogućnosti HTTP protokola i pritom omogućava da proxy

poslužitelji i pristupnici (engl. gateway) također procesiraju isti HTTP promet koji prolazi

kroz njih.

REST koristi pristup sličan CRUD pristupu kod SQL jezika u relacijskim bazama

podataka, i za svaku jednostavnu operaciju (dohvat resursa, stvaranje resursa, brisanje

resursa i ažuriranje resursa) koristi po jednu metodu HTTP protokola. Za dohvat resursa se

koristi GET, za brisanje DELETE, a za stvaranje i ažuriranje POST i PUT metode.

Problem kod praktične primjere REST pristupa je što mrežna infrastruktura i programski

jezici još uvijek najčešće dozvoljavaju korištenje samo GET i POST metoda koje su

uobičajene pri korištenju web preglednika za dohvat web stranica. Korištenje drugih

metoda (PUT i DELETE) se najčešće 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 korištenju 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 korištenjem POST metode.

REST ima neka temeljna ograničenja, odnosno naputke po kojima treba dizajnirati

aplikacije koje koriste REST arhitekturu, dok su detalji dizajna ostavljeni programeru. Ta

ograničenja su :

• Klijentsko-poslužiteljski odnos: Klijent i poslužitelj su odvojeni određenim

sučeljem. To znači da npr. klijenta ne zanima način skladištenja podataka na

poslužitelju nego je pristup njima uniformiran, tako da je portabilnost koda klijenta

povećana. Poslužitelj s druge strane ne zanima korisnikovo sučelje ili stanje

pojedinog korisnika tako da poslužitelj može biti jednostavan i skalabilan.

Poslužitelji se također mogu mijenjati i programirati po želji dok god je sučelje

kojem klijent pristupa isto. Tako je moguće npr. u potpunosti promijeniti poslužitelj

iz PHP baziranog u ASP bazirani dok god je način pristupa klijenta isti.

Page 9: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških podataka

Zlatko Barać 5

• Bez stanja (engl. stateless): Poslužitelj ne sprema kontekst konekcije između

zahtjeva klijenta. Svaki zahtjev od korisnika zahtjeva sve informacije potrebne da

bi poslužitelj razumio zahtjev, tako da poslužitelj ne mora pamtiti podatke između

pojedinih zahtjeva. Tako klijent može pristupati resursu jednostavno preko URLa.

Ovo olakšava nadzor poslužitelja i čini ga pouzdanijim.

• Pohrana podataka (engl. cache) : Klijentu je omogućeno da privremeno sprema

odgovore poslužitelja. Ovo u nekim slučajevima olakšava rad i smanjuje broj

potrebnih zahtjeva prema poslužitelju.

• Slojeviti sustav : S obzirom da klijent ne zna da li je spojen direktno na poslužitelj

ili na neki od njegovih posrednika, ovo može poslužiti za poboljšanje performansi,

npr. putem load balancera koji ujednačuju promet, omogućavaju skalabilnost i

rasterećuju pojedini poslužitelj. Korist može biti i sa strane sigurnosti jer je moguće

implementirati razne vatrozidove (engl. firewall) i ostale kontrolore prometa.

• Code on demand : Ovo je opcionalna mogućnost, poslužitelj može korisniku poslati

podatke koji će mu omogućiti proširenje ili poboljšanje mogućnosti. Dobar primjer

za ovo je korištenje REST pristupa iz okruženja skriptnog jezika JavaScript.

• Uniformirano sučelje : Sučelje između poslužitelja i klijenta mora poštovati

određene 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 poštovane kako bi servis bio REST kompatibilan. Poštovanje

navedenih smjernica omogućava bilo kakvom distribuiranom hipermedijskom

sustavu da ima atribute koji su poželjni : učinkovitost, skalabilnost, jednostavnost,

izmjenjivost, vidljivost, prenosivost i pouzdanost.

Neki od ključnih ciljeva kojima teži primjena REST arhitekture :

• Skalabilnost interakcije komponenti;

• Generalnost sučelja;

• Neovisno plasiranje komponenti;

Page 10: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških podataka

Zlatko Barać 6

• Međukomponente čija namjena je smanjenje latencije, pojačanje sigurnosti i

enkapsulacija postojećih sustava [5].

Prilikom korištenja REST arhitekture kroz HTTP za dohvat podataka najčešće se

primjenjuju GET zahtjevi, dok su druge vrste zahtjeva rezervirane za ažuriranje resursa.

2.4 Meteorološki podaci Meteorologija je znanost o Zemljinoj atmosferi i promjenama u njoj. Spada u skupinu

geofizičkih znanosti i bavi se proučavanjem promjena vremena na Zemlji. Jedna od grana

meteorologije, sinoptička meteorologija analizira podatke o aktualnim i proteklim

vremenskim prilikama na određenom području kako bi ih upotrijebila za prognoziranje

budućih. Proučavaju se razni parametri atmosfere, a najbitniji su temperatura, vjetar, tlak i

oborine.

Podatke o vremenskim prilikama skupljaju meteorološke postaje i zatim ih šalju na

poslužitelje gdje se podaci iz različitih izvora prikupljaju i analiziraju. Za analizu se koriste

fizikalni modeli koji se s vremenom usavršavaju kako bi bili što precizniji. Te modele

obrađuju u pravilu vrlo jaka računala. Bitno je spomenuti da je obrada tih podataka vrlo

zahtjevna i nekad je bila rezervirana za velike institute i organizacije koje mogu uložiti

puno novca u računalne resurse potrebne za obradu podataka. Napretkom računalne

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 više podataka u njih i prepustiti da računalo koristeći model

izračuna kretanja vremenskih prilika. Ovo je primjenjivo na manjim područjima, velike i

detaljne analize se i dalje rade na superračunalima.

U Hrvatskoj već više od sedam godina djeluje udruga Crometeo koja okuplja ljude koje

zanima meteorologija. Radi se o ljudima raznih struka kojima je zajednička poveznica

zanimanje za vremenske prilike i neprilike. Udruga se bavi proučavanjem i prognoziranjem

vremena, dokumentiranjem i fotodokumentiranjem raznih vremenskih pojava (posebno

onih ekstremnih), kao i postavljanjem meteoroloških postaja diljem Hrvatske. Trenutno

postoji preko 70 postaja diljem Hrvatske, a sve zajedno su uključene u projekt koji

objedinjuje sve podatke na stranici http://pljusak.com. [8]

Page 11: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških podataka

Zlatko Barać 7

Osim prikupljanja podatka rade se i analize podataka i davanje prognoza. Udruga ima

svoje serversko računalo koje na jakim Intelovim Xeon procesorima izračunava model za

područje Hrvatske. Prognoze se objavljuju na serveru http://crometeo.hr [9], a također i u

mnogim lokalnim medijima, npr. Dubrovački vjesnik [10] objavljuje prognozu člana

Crometeo udruge.

Podatke s postaja zasad prikuplja softver koji dolazi uz postaju, a koji ima određenih

prednosti i nedostataka. Glavni nedostatak je što meteorološka postaja treba uz sebe imati

vezano računalo da bi se podaci prikupljali. S obzirom na postojanje dokumentiranih

protokola kojim program komunicira sa stanicom ovdje ima dosta mjesta za poboljšanja,

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. Također bi servis mogli koristiti i razni

uređaji koji nisu sami po sebi postaja nego npr. data logger koji podatke sprema određeno

vrijeme i nakon toga ih prosljeđuje na mrežni poslužitelj kako bi bili dostupni za analizu.

Sa današnjim jednostavnim i jeftinim usmjerivačima koje pokreće Linux operacijski

sustav, a koji imaju USB i serijski port moguće je napraviti uređaj koji prati određene

parametre, poput temperature, vlage i vjetra te ih prosljeđuje na poslužitelj. Za sve te

namjene mrežni servis baziran na REST protokolu je puno pogodniji od raznih složenih

klijent-poslužitelj rješenja.

Što se vremenskih prognoza tiče, 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 piše. Oni mogu jednostavno putem mrežnog servisa preuzeti podatke i

preko modula koji sami izrade ukomponirati ih u web stranicu na način koji im odgovara,

bez da im servis nameće pravila prezentacije podataka.

Danas se podaci većinom prezentiraju preko već unaprijed napravljenih vizualnih modula

koji se ugrađuju u stranicu, a koji često nisu baš pogodni jer se ne mogu uklopiti u izgled

stranice, bez obzira na (ograničene) mogućnosti prilagođavanja. Sa mrežnim servisom koji

šalje čiste tekstualne podatke tog problema nema, a vizualna prezentacija je ostavljena na

volju dizajneru stranice.

Page 12: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških podataka

Zlatko Barać 8

3 Struktura aplikacije

Poslužiteljski dio aplikacije je u cijelosti izrađen u PHP programskom jeziku. Korišten je

tekst editor s podrškom za osvjetljavanje sintakse, a za testiranje je korišten Wamp

poslužitelj instaliran na lokalnom računalu. Nakon što je aplikacija izrađena prebačena je

na web poslužitelj i dodatno testirana. Nakon toga je klijentski dio prebačen na drugi

poslužitelj radi testiranja funkcionalnosti mrežnog servisa.U ovom poglavlju opisana je

sama struktura aplikacije, s primjerima programskom koda i detaljnijim objašnjenjem

načina rada same aplikacije.

3.1 Baza podataka

Kako bi aplikacija mogla pohranjivati i čitati podatke potrebno je koristiti bazu podataka.

U ovom slučaju izbor je pao na mySQL bazu podataka koja je besplatno dostupna za

korištenje. Dolazi kao dio Wamp poslužitelj paketa koji je korišten 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. Budući da se tablice

koriste za spremanje podataka koji međusobno nisu vezani, tablice su izrađene svaka za

sebe i nisu ni na koji način ovisne jedna o drugoj.

Page 13: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških podataka

Zlatko Barać 9

t_korisnik

PK userid

uImeuPrezimeuUseruPassworduOdobrenuPostajauHash

t_prognoza

PK podatakid

datumdobaregijateksttmintmaxvbrzvsmjobtipobkol

t_upozorenja

PK podatakid

upDatumzupanijaopisstupanjautorzadnja_izmjena

Slika 3.1Tablice unutar baze podataka

Polja u korištenim tablicama su slijedeća:

t_korisnik, služi za pohranu podataka o registriranim korisnicima :

• userid - identifikacijski broj korisnika, ova vrijednost se dodjeljuje automatski

• uIme - ime korisnika

• uPrezime - prezime korisnika

• uUser - korisničko ime za prijavu na sustav

• uPassword - korisnička lozinka, sažeta kao md5 string

• uOdobren - status korisnika, može biti 'da' ili 'ne'

• uPostaja - ime korisnikove meteorološke postaje

• uHash - lozinka za korisnikovu meteorološku postaju

t_postaja, služi 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

Page 14: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških podataka

Zlatko Barać 10

• vlaga - relativna vlaga

• kisa - količina oborina

t_prognoza, služi za spremanje podataka o prognozama, podaci su dostupni putem

mrežnog servisa :

• podatakid - autoinkrementalna vrijednost, automatski se dodjeljulje

• datum - datum prognoze

• doba - doba dana prognoze, može biti 'jutro', 'popodne' ili 'noc'

• regija - klimatska regija za koju prognoza vrijedi

• tekst - tekst prognoze

• tmin - minimalna očekivana temperatura

• tmax - maksimalna očekivana temperatura

• vbrz - očekivana brzina vjetra

• vsmj - očekivani smjer vjetra

• obtip - očekivani tip oborina

• obkol - očekivana količina oborina

t_upozorenja, služi za spremanje podataka o upozorenjima, podaci su dostupni putem

mrežnog 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 Poslužiteljski dio aplikacije

Na slici 3.2 prikazana je logička struktura poslužiteljskog dijela aplikacije.

Page 15: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških podataka

Zlatko Barać 11

Početna stranica

Unos korisnika

Unos OK

Odobrenje

Odobri

prijav a

Config

Spajanje na bazu

Odjav aGlav ni izbornik

Upozorenja

+ Ažuriranje+ Ažuriranje upozorenja+ Brisanje+ Brisanje upozorenja+ Obrada upozorenja+ Pregled upozorenja+ Unos+ Unos upozorenja+ Upozorenje

Prognoze

+ Brisanje+ Brisanje prognoza+ Izmjena+ Izmjena prognoze+ Obrada prognoza+ Pregled prognoza+ Prognoza+ Unos+ Upis prognoza

Postaje

+ Brisanje+ Brisanje postaje+ Izmjena+ Izmjena postaje+ Obrada postaja+ Postaja+ Pregled postaja+ Upis + Upis postaje

Serv isi

+ Kreiranje XMLa+ Postaje+ Prognoza po datumu+ Prognoze+ Sučelje servisa+ Upozorenja+ Upozorenja po datumu+ Upozorenja po godinama

«redirect»

«use»

«use»

«use»

«use»

«use»

«use»

«use»

«use»

«use»

Slika 3.2 Logička struktura poslužiteljskog dijela aplikacije

Page 16: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških podataka

Zlatko Barać 12

Aplikacija evidentira tri skupine podataka: podatke o meteorološkim postajama,

prognozama i upozorenjima. U administratorskom dijelu aplikacije korisniku je

omogućeno ažuriranje (unos, izmjena i brisanje) te pregled tih podataka. Da bi mogao

administrirati podatke, korisnik se mora prijaviti u aplikaciju i dobiti odgovarajuće ovlasti.

3.2.2 Prijava korisnika i dodjeljivanje prava

S obzirom da se mogućnosti registriranog i odobrenog korisnika razlikuju od mogućnosti

neregistriranog i/ili neodobrenog korisnika bilo je potrebno ugraditi mehanizam koji će

prepoznavati o kakvom se tipu korisnika radi i prema tome mu omogućiti pristup

određenim 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 proslijeđenih 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('Korisničko ime '.$_POST['username'].' već postoji.');

}

if ($_POST['pass'] != $_POST['pass2']) {

die('Lozinke nisu dobro unesene. ');

}

Page 17: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških 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 priloženog koda u ispisu 3.1 vidljiva je cijela procedura provjere pojedinih parametara.

Prvo se provjerava jesu li unesena sva tri ključna polja, a to su korisničko ime, lozinka i

ponovljena lozinka. Zatim se s korisničkim imenom ide prema bazi i provjerava se je li taj

korisnik već registriran, ukoliko jest prekida se unos jer ne mogu postojati dva ista

korisnička 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 običnom

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 sadrži sve vrijednosti poslane putem forme.

Nakon što se unos obavi aplikacija se preusmjerava na modul za ispis poruke da je akcija

uspješno obavljena, to je poruka_ok.php, koji kao parametre prihvaća tip obavijesti i

putanju do sljedećeg 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 pomoćnog modula sistem_odobri.php. Prvi modul

sadržava vizualni dio stranice odobrenja, dok drugi odrađuje transakciju prema bazi ovisno

o parametrima koji mu se pošalju.

Page 18: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških podataka

Zlatko Barać 14

Modul sistem_odobrenje.php dohvaća 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 odrađuje transakciju

prema bazi i odobrava, odnosno onemogućava 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 proslijeđeni

formira se UPDATE SQL zahtjev prema bazi koji ažurira 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 može prijaviti

u aplikaciju. To radi putem modula koji se inicijalno pojavljuje, a to je

sistem_prijava.php. Ovaj modul je na neki način glavni meni za neregistriranog

korisnika.

Ovaj modul prvo provjerava je li korisnik prijavljen, a to se vidi po postavljenim

kolačićima (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 riječi. Prvo se provjerava

jeli postavljen kolačić dpKorisnik, preko polja $_COOKIE preko kojeg PHP pristupa

Page 19: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških podataka

Zlatko Barać 15

kolačićima u web pregledniku. Ukoliko je sve u redu dohvaća se vrijednost toga i dpHash

kolačića koji predstavlja hashirani oblik korisnikove lozinke. Zatim se putem mysql_query

zahtjeva pristupa bazi i pokušava se dohvatiti slog korisnika po imenu, s time da se kao

uvjet postavlja i da je korisnik aktivan (uOdobren='da'). Ukoliko se u dohvaćenom slogu

pronađe korisnik koji se traži provjerava se je li mu lozinka u redu i ako jest prosljeđuje 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 uspješno odrađen 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 značilo 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.

Page 20: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških 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 (korisničko ime i lozinka) i ukoliko jesu šalje zahtjev

Page 21: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških podataka

Zlatko Barać 17

prema bazi za dohvaćanje podataka o korisniku. Zatim se provjerava lozinka i ukoliko je

sve u redu slijedi postavljanje kolačića.

Dohvaća se trenutno vrijeme, dodaje mu se 3600 sekundi (1 sat), i postavlja se kolačić

dpKorisnik koji sadrži korisničko ime, a trajanje mu se postavlja na sat vremena od

trenutnog vremena. Isto se radi i s dpHash. Time će korisnik biti prijavljen sljedećih sat

vremena, pa ukoliko se zaboravi odjaviti njegova prijava će svejedno isteći u razumnom

roku.

Dio koda na kraju ispisa koji počinje s else smjernicom se izvršava ukoliko modul nije

pozvan preko submit zahtjeva i on ispisuje normalnu formu za prijavu na sustav. Ključni

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 izvršena prijava korisnika on može koristiti dio aplikacije za registrirane

korisnike. Kako bi se tijekom rada aplikacije znalo da je korisnik registriran i kako bi se

izbjeglo zaobilaženje korištenja povlaštenih dijelova aplikacije upisivanjem kompletne

adrese u adresno polje preglednika ugrađen je dodatni mehanizam koji se poziva na

početku svakog modula i provjerava je li korisnik prijavljen u sustav i samo u slučaju da

jest mu dozvoljava nastavak, u protivnom ga vraća na formu za prijavu u sustav.

Navedena funkcionalnost je radi jednostavnosti korištenja napravljena u obliku jednog

modula koji se onda kasnije koristi preko include direktive. Taj modul je

sistem_spojen.php prikazan ispisom 3.6.

Page 22: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških 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 način funkcioniranja je dosta jednostavan, dohvaćaju se dva kolačića (dpKorisnik i

dpHash), zatim se radi zahtjev prema bazi i provjerava se jesu li podaci ispravni. Ukoliko

Page 23: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških podataka

Zlatko Barać 19

se tijekom provjere dođe do toga da na bilo koji način podaci govore da korisniku treba

uskratiti pristup putem zaglavlja (header) se tijek aplikacije preusmjerava na poruku o

grešci i zatim na formu za prijavu u sustav.

Ukoliko je sve prošlo dobro i dokazano je da je korisnik prijavljen na sustav varijabla

spojen_var se postavlja na true, inače se postavlja na false. Ovo je samo pomoćni

mehanizam koji može nekom modulu reći rezultat izvršavanja modula, ali ključni dio je

usmjeravanje korisnika putem zaglavlja i nedopuštanje nastavka rada ukoliko nije

prijavljen u sustav.

Još je jedna akcija preostala što se tiče 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 prošlost i zatim se kolačići dpKorisnik i

dpHash ažuriraju s tim vremenom. Time je kolačiću rok važenja 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 uspješno prijavio u sustav omogućen 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. Uobičajeno je da se podaci za spajanje izdvoje u zasebnu config.php ili sličnu

datoteku radi fleksibilnosti i jednostavnosti izmjene prilikom promjene baze ili

premještanja na drugi poslužitelj. U ovom slučaju tu funkciju ima datoteka

Page 24: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških podataka

Zlatko Barać 20

sistem_config.php, koja sadrži 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 poslužitelja na kojoj je baza, u ovom slučaju su baza i ova datoteka na

istom poslužitelju pa je kao poslužitelj 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 način se jednostavnom include direktivom može kod iz

ovog modula uključiti 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 logično izdvojiti u zaseban moduli

pozivati preko include direktive. U ovom slučaju spajanje na bazu je definirano u modulu

sistem_spajanje.php.

Ispis 3.9 prikazuje sadržaj 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 učitale 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 Sadržaj modula sistem_spajanje.php

Page 25: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških podataka

Zlatko Barać 21

3.2.2.2 Obrada upozorenja

Na slici 3.3 prikazana je logička struktura poslužiteljskog dijela aplikacije koji služi za

obradu upozorenja. Aplikacija omogućuje unos, izmjenu, brisanje i pregled upozorenja.

Obrada upozorenja

Unos upozorenja

Pregled upozorenja

Brisanje upozorenja

Brisanje

Ažuriranje upozorenja

Ažuriranje

Unos

Upozorenje

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 tiče

• 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 ažuriranja upozorenja prvo se odabire datum za koji se unose odnosno

ažuriraju upozorenja. Također je moguće unijeti novi datum, a za pomoć korisniku

ponuđen je i odabir trenutnog. Taj dio odrađuje modul unos_upozorenja.php. Dio

njegovog koda slijedi.

Na ispisu 3.10 je prikazan dio modula unos_upozorenja.php koji je identičan u većini

modula koji čine aplikaciju. U njemu se učitavaju konfiguracijske varijable, spaja na bazu i

Page 26: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških 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 određenim 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 određene

radnje unutar forme. Konkretno ova funkcija puni polja za unos trenutnim datumom kad se

klikne na tipku "Trenutni". JavaScript se također koristi za jednostavne provjere je li

unesen ispravan datum, jesu li popunjena određena polja i slično.

Page 27: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških 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 padajuća lista puni datumima iz baze. Unutar HTML koda u

dijelu gdje je potrebno navesti vrijednosti pojedinih linija kontrolu preuzima ubačena PHP

skripta koja generira zahtjev prema bazi i zatim dohvaćene vrijednosti formatira u ispravne

HTML tagove i tako puni padajuću listu.

Kad se izabere datum klikom na tipku "Uredi" se otvara forma za unos upozorenja, koja je

sadržana u modulu forma_upozorenja.php. Ova forma se radi većeg broja polja

uglavnom dinamički 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 proći kroz

sve elemente polja i ispisati retke tablice koristeći vrijednosti definirane u poljima. Tako je

sam fiksni dio HTML koda dosta reduciran i pojednostavljen.

Ispis 3.13 prikazuje kako se podaci o upozorenjima dohvaćaju iz baze. U ovom dijelu

modula se još uvijek ne pune u polja na formi. Bitno je navesti da se traženi datum šalje s

Page 28: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških 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

prosljeđuje 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 način je veći dio tablice

generiran dinamički 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/>";

Page 29: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških 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 odrađuje 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 prosljeđuju funkciji za upis u bazu. Radi lakšeg

rukovanja podacima definirana su dva polja koja olakšavaju 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 odgovarajuću cjelobrojnu vrijednost.

$lista = array (

"Bijelo" =>0,

"Zeleno" =>1,

"Žuto" =>2,

"Narančasto" =>3,

"Crveno" =>4

);

Page 30: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških 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 učitavanje konfiguracijskih podataka i spajanje na bazu. Zatim se u

bazi provjerava postoji li već slog za datum koji se upisuje. Ako postoji izvršava se

UPDATE zahtjev prema bazi, ako ne postoji radi se INSERT u bazu. Tako je jednom

funkcijom riješen i novi upis i ažuriranje 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());

Page 31: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških 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 može i brisati. Ovu funkciju obavljaju dva

modula, to su brisanje_upozorenja.php i brisi_upozorenja.php. Slično kao kod unosa

jedan modul je za odabir datuma, a drugi nema vizualni dio nego je namijenjen interakciji

prema bazi. Način dohvata raspoloživih datuma je isti kao i kod odabira datuma za

uređenje.

Na ispisu 3.17 je prikazan način na koji se korisnika pita je li siguran da želi brisati

podatak. Ako jest vrijednost padajuće liste se preslikava u skrivenu varijablu

datumSkriveni koju će sljedeći modul primiti preko $_POST polja. Ukoliko korisnik klikne

cancel neće se dogoditi ništa, odnosno podatak neće biti obrisan.

Page 32: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških 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 prosljeđuje datum koji je potrebno obrisati, ovaj modul ga

prihvaća i prosljeđuje bazi DELETE SQL naredbu. Nakon toga korisnika preusmjerava na

obavijest da je brisanje uspješno odrađeno.

$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

Page 33: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških podataka

Zlatko Barać 29

3.2.2.3 Obrada prognoze

Na slici 3.4 prikazana je logička struktura poslužiteljskog dijela aplikacije koji služi za

obradu prognoza. Aplikacija omogućuje unos, izmjenu, brisanje i pregled prognoza.

Obrada prognoza

Upis prognoza

Pregled prognoza

Brisanje prognoza

Brisanje

Izmjena prognoze Izmjena

Unos

Prognoza

Slika 3.4 Logička struktura dijela aplikacije za obradu prognoza

Unos prognoza je izgledom dosta sličan unosu upozorenja i sastoji se od sličnih 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 poslužitelju

• unos_prognoza.php - modul za odabir datuma za obradu prognoza

• upis_prognoza.php - modul za interakciju s bazom kod upisa

Slično kao kod upozorenja modul unos_prognoza.php nudi listu postojećih datuma i

omogućava odabir pojedinog od njih kao i unos novog. Razlika je što se prognoze unose za

Page 34: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških 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 padajuću listu pune na isti način kao kod unosa upozorenja. Također 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 odgovarajuće polje. Upute

se prikazuju kad se mišem pređe preko odgovarajućeg podatka u zaglavlju tablice. Na

kraju ispisa je primjer (za jedno polje) kako funkciju pozvati kad se mišem pređe preko

zaglavlja.

function misVan()

{

document.GlavnaForma.hint.value="";

}

function misUnutra(tipka)

{

if (tipka==8)

Page 35: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških podataka

Zlatko Barać 31

document.GlavnaForma.hint.value="Područje za koje prognoza vrijedi";

if (tipka==1)

document.GlavnaForma.hint.value="Tekst prognoze";

if (tipka==2)

document.GlavnaForma.hint.value="Minimalna očekivana temperatura u

°C";

if (tipka==3)

document.GlavnaForma.hint.value="Maksimalna očekivana temperatura u

°C";

if (tipka==4)

document.GlavnaForma.hint.value="Očekivana brzina vjetra u km/h";

if (tipka==5)

document.GlavnaForma.hint.value="Očekivani smjer vjetra";

if (tipka==6)

document.GlavnaForma.hint.value="Tip oborina";

if (tipka==7)

document.GlavnaForma.hint.value="Količina oborina - kiša u cm po

metru kvadratnom, snijeg u centimetrima";

}

...

<td bgcolor="#AAAAAA" onMouseOver="misUnutra(8)"

onMouseOut="misVan()">Područje</td>

Ispis 3.20 Detalj modula forma_prognoze.php

Ova forma se većim dijelom generira dinamički uz korištenje polja definiranih u PHP

skripti u kombinaciji s podacima koji se dohvaćaju 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 ažurira kako prazno modul će obrisati taj slog iz baze kako ne bi dolazilo

do nepotrebnog držanja sloga u bazi ukoliko on ne sadrži nikakvu korisnu informaciju.

Brisanje prognoza se radi na isti način koji je opisan kod brisanja upozorenja. Prvo modul

brisanje_prognoze.php nudi listu datuma, odabirom datuma i određenog doba dana se

poziva modul brisi_prognoze.php koji u interakciji s bazom briše odgovarajući slog.

Page 36: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških 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 brišu sva tri doba dana za konkretni datum.

Na ispisu 3.21 je vidljiv način provjere briše li se samo jedno doba dana ili sva tri, i prema

tome odgovarajući 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 meteoroloških postaja

Na slici 3.5 prikazana je logička struktura poslužiteljskog dijela aplikacije koji služi za

obradu meteoroloških postaja. Aplikacija omogućuje unos, brisanje i pregled podataka.

Unos podataka vrši se od strane udaljenog računala meteorološke postaje koji dostavlja

podatke.

Obrada postaja

Meteorološka postaja

Pregled postaja

Brisanje postaje Brisanje

Upis postaje

Postaja

«HTTP»

Slika 3.5 Logička struktura dijela aplikacije za evidenciju meteoroloških postaja

Page 37: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških podataka

Zlatko Barać 33

Aplikacija sadrži 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 ručno nego

ih radi program koji se vrti na određenom računalu i šalje ih putem GET zahtjeva prema

servisu. Međutim neke informacije o postajama je potrebno unijeti kako bi servis dobro

radio, pa za to služi dio aplikacije čiji opis slijedi. Taj dio čine sljedeći moduli :

• brisanje_postaja.php - briše podatke koje je postaja poslala

• brisi_postaja.php - interakcija prema bazi kod brisanja

• pregled_postaja.php - pregled podataka koje je postaja poslala, na poslužitelju

• unos_postaja.php - unos osnovnih podataka o postajama

Modul unos_postaja.php služi kako bi se postaji pojedinog korisnika pridružilo ime i

neka vrsta identifikacijske lozinke koju postaja mora poslati kako bi uspješno upisala slog

u bazu. Za ime korisnika se automatski uzima ime trenutno prijavljenog korisnika i

dohvaća 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 kućicama za unos i moguće ih je

promijeniti. Ukoliko nema podaci će biti prazni i moguće ih je upisati.

Važan podatak je lozinka postaje koja se mora slati prema servisu kako bi upis bio

uspješan. Preporučeno je da se odabere neka lozinka koju nije jednostavno pogoditi kako

bi se osigurala autentičnost podataka. Ovdje kao pomoć korisniku postoji funkcija koja

generira slučajnu lozinku od 20 slova i brojeva.

Funkcija prikazana na ispisu 3.22 je napisana u JavaScriptu i iz niza koji sadrži sva velika i

mala slova i brojeve uzima slučajne 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)

Page 38: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških podataka

Zlatko Barać 34

izlaz=izlaz+skup[slucajna];

}

document.Glavna.hash.value=izlaz;

}

</script>

Ispis 3.22 JavaScript funkcija za generiranje lozinke

Pošto postaje šalju podatke prema servisu koji ih upisuje u bazu nekad je te podatke

potrebno i obrisati. Zato je napravljen modul koji omogućava brisanje i to po dva kriterija,

jedan je datum, a drugi je ime postaje. Modul brisanje_postaja.php u padajućim listama

daje imena postaja i datume za koje postoje podaci, izborom određenog podatka i klikom

na odgovarajuću tipku podaci se prosljeđuju modulu brisi_postaja.php koji zatim radi

interakciju prema bazi i briše podatak.

3.2.3 Servisi

U dosad opisanoj funkcionalnosti aplikacije navedeni su detalji o poslužiteljskom 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 obnašati tu funkcionalnost. To su sljedeći 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 zajedničku namjenu, a to je generiranje XML datoteka s

podacima koje korisnik servisa traži. Ovi moduli "sjede" između baze i korisnika servisa i

posreduju tako što korisniku daju podatke bez potrebe za direktnom interakcijom s bazom

podataka. Na taj način je sustav sigurniji, a podaci su jednostavno dostupni korisniku.

Na slici 3.6 prikazana je logička struktura poslužiteljskog dijela aplikacije koji funkcionira

kao web servis. Dio web servisa (njegove sučelje) je izložen vanjskim klijentima koji

Page 39: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških podataka

Zlatko Barać 35

koriste njegove funkcionalnost. Podaci koji se pritom koriste evidentirani su u drugim

dijelovima aplikacije.

Sučelje serv isa

Kreiranje XMLa

Prognoza po datumu

Prognoze Upozorenja Upozorenja po datumu

Upozorenja po godinama

Postaje

Slika 3.6 Logička struktura dijela aplikacije koji nudi funkcionalnost web servisa

Za kreiranje XML datoteka koristi se PHP skripta koja formira stringove koji sadrže

podatak zatvoren u odgovarajuće tagove.

Radi preglednijeg formatiranja XML datoteke napisana je funkcija koja kao parametar

prima ime taga, sadržaj 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 ograđivanje sadržaja tagovima

Npr. ako korisnik želi vidjeti za koje su mu datume raspoložive prognoze dovoljno je da

pozove URL :

http://poslužitelj/xml_pro_datumi.php

Rezultat će biti XML formatirana datoteka primjer koje je prikazan ispisom 3.24.

Page 40: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških 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 može po listi raspoloživih datuma zatražiti podatke za pojedini

datum na sljedeći način :

http://poslužitelj/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>

Page 41: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških 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 sličan način rade i ostali moduli koji generiraju XML datoteke. Tako se npr. za

upozorenja prvo poziva modul koji će vratiti listu godina :

http://poslužitelj/xml_upo_godine.php

Nakon što servis vrati listu godina mogu se zatražiti raspoloživi datumi za pojedinu godinu

http://poslužitelj/xml_upo_datumi.php?godina=2010

Rezultat je ponovno XML datoteka s listom raspoloživih datuma, i sad je moguće zatražiti

podatke za pojedini datum :

http://poslužitelj/xml_upo_podaci.php?datum=2010-11-25

Na ovaj zahtjev poslužitelj vraća XML datoteku s podacima za pojedini datum. Tu su sve

županije, stupanj upozorenja i tekst upozorenja. Korisnik servisa zatim može te podatke

prezentirati na odgovarajući način.

Ukoliko bi korisnik htio dohvatiti podatke koje su postaje prikupile pozvao bi sljedeći

URL :

http://poslužitelj/xml_pos_podaci.php

Kao rezultat bi dobio listu podataka s svih postaja po svim datumima.

Page 42: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških podataka

Zlatko Barać 38

3.2.4 Način rada servisa

U prethodnom dijelu ovog poglavlja opisano je kako se šalje zahtjev prema servisu i kakve

on podatke vraća. U ovom potpoglavlju slijedi detaljniji opis načina rada servisa, odnosno

programskog koda koji omogućuje da servis radi.

Za primjer će biti opisan način rada pojedinih modula koji pružaju korisniku servisa

podatke o upozorenjima. Prvi je modul xml_upo_godine.php koji vraća listu raspoloživih

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 vraća podatke o godinama za upozorenja

Kao što je vidljivo iz ispisa 3.26 generiranje XML datoteke počinje ubacivanjem njenih

zaglavlja, odnosno headera. Nakon toga se formira početni tag <podaci> koji će se

pojaviti i ako podataka nema, ali će između njega i njegovog zatvorenog taga </podaci>

biti prazno. Zatim slijedi konekcija na bazu preko dva modula koji služe za tu svrhu. Kad

se uspješno povezalo na bazu postavlja se SQL zahtjev koji uzima sve godine za datume

koji su upisani pazeći da ne uzima dvaput isti pa koristi DISTINCT naredbu. Također se

podaci sortiraju prema godini, u padajućem redoslijedu.

Page 43: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških podataka

Zlatko Barać 39

Zatim se svaki pročitani podatak ograđuje odgovarajućim tagom kako bi se znalo o kojem

se podatku radi. Na kraju kad se petlja završi generira se završni 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 može na račun njih zahtijevati da mu se

pošalju datumi za te godine. To će učiniti pozivom drugog modula, a to je

xml_upo_datumi.php.

Na ispisu 3.27 je modul koji generira XML datoteku s popisom datuma za određenu

godinu. Dio za spajanje na bazu i generiranje zaglavlja je iz ovog ispisa izbačen 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 dohvaćaju se slogovi koji zadovoljavaju uvjet.

Zatim se jedan po jedan slog ograđuje tagovima i prosljeđuje izlaznoj varijabli. Na kraju se

varijabla prosljeđuje 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

Page 44: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških podataka

Zlatko Barać 40

Korisnik sad ima još jednu mogućnost, a to je da odabere neki od datuma i za njega zatraži

konkretne podatke, što je smisao ovog servisa. Te podatke će mu vratiti modul

xml_upo_podaci.php. prikazan na ispisu 3.28.

<?php

... //izbačen 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. Dohvaćene podatke zatim ograđuje tagovima i šalje na izlaz. Za

Page 45: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških podataka

Zlatko Barać 41

vrijednost opis se poduzimaju dodatne radnje kako bi se osiguralo da neki od

nedozvoljenih znakova ne završi u izlazu i tako stvori neispravno formatiranu XML

datoteku.

U ovom poglavlju je opisano na jednom primjeru kako aplikacija putem određenih modula

generira XML formatirani izlaz koji je onda pogodan za korištenje od strane korisnika

servisa koji ne mora imati pristup bazi jer to posredovanje za njega odrađuje servis. Osim

što se korisniku mogu ponuditi servisi za preuzimanje podataka moguće mu je ponuditi i

servis za slanje podataka. Ova aplikacija nudi i to, korisnik može preko REST protokola

poslati određene podatke na poslužitelj 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 način

korisnik opet nema direktnog kontakta prema bazi nego za njega to odrađuje 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'];

Page 46: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških 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");

Page 47: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških 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 način 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 grešci.

Neke nisu obavezne pa njihovo nepostojanje neće stopirati servis nego će on u bazu upisati

NULL vrijednosti na odgovarajuće pozicije.

Page 48: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških podataka

Zlatko Barać 44

Ukoliko dođe do greške servis će kao povratnu vrijednost javiti ERROR-kod_greške, dok

će kod uspješnog upisa poslati povratnu vrijednost OK. Na ovaj način pozivatelj servisa

ima informaciju kako je transakcija prošla i donekle ima uvid u to što je krivo napravljeno

ako transakcija nije prošla.

Page 49: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških podataka

Zlatko Barać 45

4 Opis aplikacije za razmjenu meteoroloških podataka

Realizirana aplikacija za razmjenu meteoroloških podataka ima dvije glavne namjene. Prva

je pružiti servis za praćenje meteoroloških podataka i to na način da korisnik s pravima za

uređivanje unosi podatke preko web sučelja, a klijenti pozivom dostupnih servisa mogu te

podatke dohvatiti u obliku XML datoteka. Na takav način klijenti nemaju direktnu

interakciju s bazom nego interakciju obavlja poslužitelj koji klijentu daje pripremljene i

formatirane podatke. Druga namjena aplikacije je pružiti servis za primanje podataka s

meteoroloških postaja. Za potrebe demonstracije korištenje napravljenih web servisa

napravljena je aplikacija sa servisom za primanje i davanje meteoroloških podataka.

Dio aplikacije dostupan registriranom korisniku nudi mogućnost uređivanja pojedinih

podataka koje će servis nuditi klijentima. Taj dio je podijeljen na dva osnovna dijela:

prognoze i upozorenja.

Prognoze sadrže podatke o predviđenom kretanju meteoroloških prilika, dok upozorenja

sadrže podatke koji upozoravaju na mogućnost oluja i ostalih vremenskih neprilika.

4.1 Ulazni dio

Kada korisnik pristupi aplikaciji nude mu se dvije opcije, može se ili prijaviti na sustav i

uređivati podatke ili može ostati neprijavljen i pregledavati podatke, ali bez mogućnosti

mijenjanja.

Ako se radi o novom korisniku koji želi imati pristup uređivanju podataka on može

odabrati opciju 'dodavanje novog korisnika' i upisati svoje podatke.

Page 50: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških podataka

Zlatko Barać 46

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

Slika 4.1 Početna 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 korisničko 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 neće imati mogućnost uređivanja podataka. Da bi dobio tu mogućnost

administrator ga prvo mora odobriti.

Slika 4.2 Prijava novog korisnika

Page 51: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških podataka

Zlatko Barać 47

U slučaju da se pokuša prijaviti dok nije odobren javiti će mu se poruka da mora pričekati

odobrenje i ta poruka je prikazana na slici 4.3.

Slika 4.3 Pokušaj prijave neaktivnog korisnika

4.2 Korisnički dio

Ako je korisnik već odobren može se prijaviti u aplikaciju sa svojim podacima. Provjerava

se lozinka i korisničko ime, a ako podaci nisu odgovarajući korisniku se ne dopušta ulaz u

korisnički dio. Isto vrijedi i ako korisnik nije odobren.

Slika 4.4 prikazuje izgled zaslona nakon što se korisnik uspješno prijavio. Korisniku se

nude opcije uređivanja podataka, a u svakom slučaju mu ostaju i pregledi koje ima i

neregistrirani korisnik. Kad je gotov s radom registrirani korisnik se može odjaviti iz

aplikacije.

Slika 4.4 Korisnički izbornik

4.3 Administracija

Ovaj dio aplikacije sadrži administrativni dio gdje se mogu vidjeti korisnici i mogu se

omogućiti odnosno onemogućiti. Korisnik kojemu se želi zabraniti pristup aplikaciji se

jednostavno onemogući i iako će i dalje postojati kao korisnik neće moći ući u korisnički

dio aplikacije.

Page 52: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških podataka

Zlatko Barać 48

Na slici 4.5 vidljiv je izgled zaslona s listom korisnika, a nudi se i mogućnost odobravanja,

odnosno zabranjivanja pristupa pojedinom korisniku. Administratorski račun se ne može

onemogućiti jer bi u tom slučaju bilo nemoguće pristupiti aplikaciji.

Slika 4.5 Administrativni dio aplikacije

4.4 Prognoze

U ovom dijelu aplikacije korisnik može unositi ili brisati pojedine prognoze. Prvo se

korisniku nudi da izabere konkretnu prognozu koju želi uređivati.

4.4.1 Uređivanje

Slika 4.6 prikazuje izgled zaslona za odabir konkretne prognoze.

Slika 4.6 Odabir datuma prognoze

Tri su osnovne mogućnosti:

1. Korisnik može iz padajućeg izbornika izabrati neki od datuma za koji je prognoza

već upisana pa je zatim uređivati,

2. Korisnik može klikom na tipku "Trenutni" odabrati današnji datum, a može i ručno

upisati datum u odgovarajuće kućice za unos.

Page 53: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških podataka

Zlatko Barać 49

3. U slučaju da korisnik upiše datum za koji već postoji prognoza automatski se otvara

već unesena koju je onda moguće dalje uređivati.

Prognoze su podijeljene po dva kriterija, prvi je po razdoblju dana, a to su jutro, popodne i

noć, a drugi kriterij je klimatološka cjelina. Nakon što se odabere datum prognoze klikom

na jednu od tri tipke se ulazi u uređivanje pojedinog dijela dana.

Slika 4.7 prikazuje zaslon za uređivanje prognoza. U samom naslovu tablice je naveden

datum i doba dana za koje se prognoza uređuje. Prognoza je u ovom dijelu podijeljena na

osam klimatoloških cjelina Hrvatske. Za prognoze ova podjela je logičnija nego podjela na

četiri regije ili po županijama. Razlog tome je što pojedine županije nemaju iste

klimatološke prilike u svim svojim dijelovima. Osam područja je navedeno prema

najvećim gradovima unutar njih.

Slika 4.7 Uređivanje prognoza

U ovom dijelu programa moguće je upisivati podatke bitne za prognozu. Najveće polje je

tekst prognoze koji prate numeričke i opisne vrijednosti. One su redom:

• minimalna očekivana temperatura,

• maksimalna očekivana temperatura,

• jačina vjetra,

• smjer vjetra,

• tip oborina,

• količina oborina.

Page 54: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških podataka

Zlatko Barać 50

Svi podaci osim opisa su proizvoljni, mogu se upisati, ali i ne moraju. Ako se ne upiše

tekst prognoze ostali podaci će biti vidljivi na ovom zaslonu, ali servis neće slati korisniku

te podatke za konkretnu klimatološku cjelinu, doba dana i datum.

Na zaslonu su vidljive i dvije naizgled iste opcije, premda su u praksi znatno različite. One

su "Resetiraj" i "Očisti". Funkcija tipke "Resetiraj" je da podatke u tablici vrati na zadnje

spremljeno stanje, dok tipka "Očisti" sve podatke iz tablice briše. Ako se nakon toga

pritisne tipka "sačuvaj" rezultat će biti isti kao da su podaci obrisani. Tipka "sačuvaj"

sprema u bazu trenutni izgled tablice.

4.4.2 Brisanje

Za određeni datum i razdoblje dana moguće je i obrisati unesene podatke o prognozi. Na

slici 4.8 vidljiv je zaslon za brisanje prognoza. Padajuća lista nudi sve datume za koje

postoje upisane prognoze i onda je moguće klikom na odgovarajuću tipku odabrati brisanje

jednog razdoblja dana ili sva tri.

Slika 4.8 Brisanje prognoza

4.5 Upozorenja

Slično kao i prognoze moguće je uređivati i brisati i upozorenja.

Page 55: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških podataka

Zlatko Barać 51

4.5.1 Uređivanje

Na slici 4.9 je vidljiv izgled zaslona za izbor uređivanja upozorenja. Dosta je sličan onome

za uređivanje prognoza, s razlikom da je ovdje samo jedna opcija uređenja budući da

upozorenja važe za cijeli dan, a ne samo dio dana kao prognoze. Ostali izbori su isti,

moguće je odabrati već postojeći datum, unijeti novi ili trenutni.

Slika 4.9 Izbor datuma upozorenja

Page 56: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških podataka

Zlatko Barać 52

Na slici 4.10 prikazan je zaslon za uređivanje upozorenja. Za razliku od prognoza

upozorenja su raspoređena po županijama. Tu je 20 županija i grad Zagreb. U naslovu

tablice je navedeno za koji se datum uređuju upozorenja.

Slika 4.10 Uređivanje upozorenja

Za svaku županiju moguće je iz padajućeg izbornika izabrati jednu od pet boja koje

predstavljaju stupanj opasnosti. Bijela boja znači da nema podataka, zelena da nema

opasnosti, a stupanj opasnosti raste od žute preko narančaste do crvene. Odmah pored

izbora boje su kućice za unos teksta koji pobliže objašnjava zašto je upozorenje izdano.

Ovdje i jedno i drugo polje mogu, ali i ne moraju biti popunjeno, primjerice moguće je da

opasnost postoji samo na krajnjem jugu pa će se onda za najjužniju županiju unijeti podaci,

a ostale će ostati prazne.

Page 57: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških podataka

Zlatko Barać 53

4.5.2 Brisanje

Kao i prognoze, upozorenja je također moguće 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 meteorološke postaje je također moguće uređivati 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 može mijenjati i ono će se

prikazivati u pregledima podataka po postajama. Drugi podatak koji se može uređivati 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 slučajnim odabirom slova i brojeva jamčeći tako veliku razinu

jedinstvenosti.

Slika 4.12 Podaci o postaji

Page 58: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških podataka

Zlatko Barać 54

4.6.2 Brisanje

Budući da postaje imaju mogućnost slanja podataka prema poslužitelju nekad se javlja

potreba da se dio podataka i obriše, recimo ako je ustanovljeno da je postaja neko vrijeme

bila u kvaru pa su podaci neispravni ili ako je neka postaja izašla iz sustava pa ju je

potrebno ukloniti iz pregleda.

Na slici 4.13 je prikazan okvir za brisanje podataka koje postaje šalju. Tri su moguća

kriterija, može 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. Budući da

neprijavljeni korisnik ima funkcije kao i korisnik servisa te funkcije će biti opisane kroz

opis rada servisa.

Sve dosad navedeno kroz opis korisničkog sučelja vrijedi za unos, brisanje i uređivanje

podataka. To su funkcije dostupne samo prijavljenim korisnicima. Što se tiče pregleda

podataka on je omogućen i neprijavljenim korisnicima putem mrežnog servisa koji u XML

obliku servira podatke zainteresiranim korisnicima. Pritom korisnik mora znati kako

postaviti zahtjev poslužitelju, a isto tako mora znati kako protumačiti primljene podatke.

4.7 Pregledi (klijentski dio)

Budući da aplikacija daje servis na korištenje vanjskim programima za demonstraciju rada

servisa izrađeno je nekoliko primjera pregleda podataka. To su pregled upozorenja,

prognoza i podataka s postaja.

Page 59: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških podataka

Zlatko Barać 55

Na slici 4.14 su prikazane opcije koje se klijentu nude, klikom na odgovarajuću 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

Page 60: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških podataka

Zlatko Barać 56

Županije su obojane odgovarajućim bojama da vizualno istaknu stupanj opasnosti, a

prelaskom pokazivača miša preko određene županije se u okviru s informacijama

pojavljuje detaljniji opis opasnosti. Korisnik također preko padajućih izbornika može

odabrati datum za koji želi pregledati upozorenja.

Na slici 4.16 je prikazan primjer kako klijent za pregled prognoza može izgledati,

korisniku se prvo nudi lista raspoloživih datuma, kad odabere određeni datum za njega se

otvara lista prognoza. Ako za neko područje ili doba dana nije upisana prognoza ona se

neće pojaviti u pregledu. Ovo je ostavljeno na izbor programeru klijentskog dijela, isto

tako je moglo biti napravljeno da za područja i doba dana za koja nema podataka piše npr.

"nema podataka".

Slika 4.16 Pregled prognoza

Page 61: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških podataka

Zlatko Barać 57

Na slici 4.17 je primjer klijenta koji prikazuje podatke o postajama. U ovom slučaju su

postaje grupirane prema imenu, a podaci pojedine postaje su još složeni po datumu,

počevši od najsvježijeg podatka.

Slika 4.17 Pregled podataka za postaje

Page 62: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških podataka

Zlatko Barać 58

5 Klijentski dio Primarna svrha opisane aplikacije je pružanje mrežnih servisa vanjskim korisnicima na

korištenje. No u svrhu demonstracije rada servisa napravljeno je i nekoliko klijentskih

modula koji pomažu u prikazu rada aplikacije. Pritom je iskorišteno više načina prikaza,

jedan od njih je prikaz putem HTML stranice, a drugi je grafički 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 način. Za parsiranje XML datoteke iskorištena je biblioteka, odnosno klasa

simpleXML. Njeno korištenje je relativno jednostavno, a prilikom instalacije PHP

interpretera se automatski instalira pa je logičan izbor. To nije jedina klasa za rukovanje

XML datotekama, no s obzirom da ima sve potrebno nema potrebe za korištenje drugih,

često komercijalnih rješenja.

Učitavanje XML datoteke putem simpleXML klase se može izvesti na dva načina, jedan je

da se prvo dohvate XML podaci i spreme u varijablu pa se zatim pretvore u XML element,

a drugi način 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.poslužitelj.com/datoteka.xml',n

ull,true);

Primjer 3 :

$datoteka=file_get_contents('podaci.xml');

$moji_podaci = SimpleXMLElement($datoteka);

Ispis 5.1 Primjeri korištenja simpleXML klase

Ispis 5.1 prikazuje tri različite mogućnosti primjene simpleXML klase. U opisanoj

aplikaciji se koristi metoda iz primjera 2, koja podatke dohvaća direktno iz URLa u

Page 63: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških podataka

Zlatko Barać 59

varijablu i dalje rukuje njima putem funkcija koje SimpleXML biblioteka nudi. Kao prvi

parametar se navodi URL koji sadržava XML datoteku, drugi parametar su opcije, a treći

je true ako se šalje ime datoteke, a false ako se šalju konkretni XML podaci, odnosno

varijabla koja ih sadrži.

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 — Vraća 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 — Vraća namespace-ove definirane unutar dokumenta

SimpleXMLElement::getName — Daje ime XML elementa

SimpleXMLElement::getNamespaces — Vraća namespaceove

SimpleXMLElement::registerXPathNamespace — Kreira kontekst za XPath zahtjev

SimpleXMLElement::saveXML — Isto što i asXML metoda

SimpleXMLElement::xpath — Pokreće XPath zahtjev

SimpleXML funkcije

simplexml_import_dom — Daje SimpleXMLElement objekt iz DOM čvora

simplexml_load_file — Učitava XML datoteku u objekt

simplexml_load_string — Učitava XML string u objekt

Page 64: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških 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 učitava putem URLa kao SimpleXML element, i zatim se za svaki

njen podatak pristupanjem preko imena čvora dohvaća njegova vrijednost koja se ispisuje

u obliku tablice.

Page 65: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških podataka

Zlatko Barać 61

Foreach je primijenjen jer dohvaća sve čvorove, ali moguće je pristupiti i svakom

posebno. Takav način pristupa prikazan je ispisom 5.4.

echo "Temperatura za drugi slog je : ".$slogovi->slog[1]->temperatura;

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 "Atribut za drugi slog je : ".$slogovi->slog[1]['atribut'];

Ispis 5.5 Pristup određenom atributu

5.2 Primjer klijenta - pregled prognoza Pregled prognoza predstavlja modul koji se vrti na klijentskoj strani, preuzima podatke

isključivo putem XML datoteke preko SimpleXML klase i prezentira ih kroz HTML

stranicu.

Ispis 5.6 prikazuje dio koda koji preuzima XML datoteku s poslužitelja, i zatim ju

pretražuje kako bi se vidjelo koji su podaci dostupni. Preslikavanje je napravljeno u

dvodimenzionalno polje, jednu dimenziju predstavlja područje, a drugu doba dana. Tako je

na kraju rezultat matrica koja sadrži plusove za odgovarajuće doba dana i područje 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

Page 66: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških podataka

Zlatko Barać 62

Zatim se ovisno o tome koje vrijednosti postoje formira tablica koja sadrži pročitane

podatke.

Na ispisu 5.7 vidljiv je način prezentacije podataka. Dvije ugniježđene petlje (jedna za

područje, jedna za doba dana) pregledavaju prethodno formirano polje koje ima indikatore

postojanja podataka za pojedino doba dana i područje i onda ovisno o tome postoje li

podaci ispisuje konkretne podatke iz XML datoteke. XML datoteku od trenutka učitavanja

predstavlja varijabla $records koja sadrži unutar sebe sve podatke koje je XML datoteka

vratila. Na isti način 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 područje

: ".$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 neće 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 očekuju.<br>";

Page 67: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških podataka

Zlatko Barać 63

else

echo "Očekivani tip oborina : ".$records->$doba_var[$i]-

>$grad_var[$j]->obtip.", u količinama ".$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 izrađen korištenjem Adobe Flash aplikacije. Grafički elementi su napravljeni

kroz grafičko sučelje, a programski kod je napisan kao ActionScript, a to je programski

jezik ugrađen u Adobe Flash.

Page 68: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških podataka

Zlatko Barać 64

Na slici 5.1 prikazano je korišteno razvojno okruženje za razvoj Adobe Flash aplikacija.

Slika 5.1 Adobe Flash razvojno okružje

5.3.1 Prikazivanje opisa

Svaka županija je izrađena kao zaseban objekt i dodane su mu akcije koje se automatski

izvršavaju nakon što pokazivač miša dođe iznad njega, odnosno kad izađe s njega. To je

napravljeno putem ActionScripta.

Page 69: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških podataka

Zlatko Barać 65

Na ispisu 5.8 vidljiv je programski kod koji prilikom prelaska miša u okviru za prikaz

podataka (boxxy) prikazuje odgovarajući član polja opisi u kojeg su prilikom učitavanja

XML datoteke preneseni opisi upozorenja za pojedinu županiju. Isto tako se i tekst polju

naslovLabel pridružuje vrijednost iz polja zupanijeAr koje sadrži već učitana imena svih

županija. Kad pokazivač miša izađe 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 događajima

5.3.2 Rukovanje XML datotekama

Flash objekt preuzima od mrežnog 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 korištenje XML podataka

Pri učitavanju XMLa se poziva metoda onLoad, pa je potrebno u nju ubaciti radnje koje se

izvršavaju kod učitavanja.

Na ispisu 5.10 je vidljiv način učitavanja XML datoteke, u konkretnom slučaju datoteke

koja sa servisa preuzima listu raspoloživih godina. Varijabli nodes se pridružuje 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 padajući izbornik za odabir godina. Nakon toga se selektira prva

Page 70: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških podataka

Zlatko Barać 66

raspoloživa godina i za nju se učitavaju datumi. Funkcija koja učitava datume je slična

ovdje navedenoj i također će odabrati prvi raspoloživi datum i pozvati funkciju za

učitavanje 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 događa kod učitavanja 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 pomoću funkcije bojajZupaniju postavlja boja objekta

koji predstavlja županiju, a sukladno učitanom stupnju opasnosti. Funkcija puniOpis u

polje s opisima dodaje opis opasnosti za trenutno učitavanu županiju kako bi kasnije bilo

moguće 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;

Page 71: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških podataka

Zlatko Barać 67

bojajZupaniju(vStu,vZup);

puniOpis(vZup,vOpi);

}

};

Ispis 5.11 Učitavanje 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 dohvaćati podatke, a također kako bi se mogli adrese

servisa mijenjati bez potrebe za ponovnim prevođenjem samog objekta. Datoteka s

postavkama sadrži tri varijable, budući da Flash objekt učitava tri različita podatka sa

servisa.

Na ispisu 5.12 prikazan je izgled konfiguracijske datoteke za Flash objekt. U realnom

slučaju se poslužitelj zamjenjuje stvarnom lokacijom poslužitelja.

<postavke>

<godine>http://poslužitelj/xml_upo_godine.php?</godine>

<datumi>http://poslužitelj/xml_upo_datumi.php?</datumi>

<podaci>http://poslužitelj /xml_upo_podaci.php?</podaci>

</postavke>

Ispis 5.12 Sadržaj 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 učitavanja, a to je

preslikavanje podataka u tri varijable, i na kraju se pri inicijalizaciji programa poziva

učitavanje postavki. Nakon što program ima ove tri varijable može preko njih učitati XML

podatke od servisa.

//kreiranje XML objekta

var theXMLs:XML = new XML();

theXMLs.ignoreWhite = true;

//definiranje onLoad funkcije

theXMLs.onLoad = function()

{

Page 72: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških 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 učitavanja podataka

theXMLs.load("./postavke.xml");

Ispis 5.13 Rukovanje postavkama

Na ispisu 5.14 je vidljivo kako se varijabla učitana 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

različiti upit tako što se kao jedan od parametara pridružuje trenutno vrijeme. Servis će taj

podatak ignorirati, ali će efikasno spriječiti cachiranje i učitavanje podataka koji su već bili

učitani, ali su se u međuvremenu promijenili.

function ucitajGodine() {

dontCache = getTimer();

theXMLg.load(urlGodine+"nema_cache="+dontCache);

}

Ispis 5.14 Učitavanje podataka sa servisa

5.4 Primjer klijenta - slanje podataka s postaje Osim servisa za slanje podataka klijentu aplikacija sadrži i servis namijenjen primanju

podataka. Za demonstraciju njegovog rada napravljena je Windows aplikacija koja simulira

rad postaje. U realnom slučaju bi se koristio program koji od stvarne postaje očitava

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

Page 73: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških podataka

Zlatko Barać 69

podatke generira umjesto da ih očitava s postaje. Takvi generirani podaci se transformiraju

i šalju prema servisu. Klijent je u ovom slučaju izrađen u Borland Delphi [11] razvojnom

alatu za Windows operacijski sustav.

Na slici 5.2 je vidljiv jednostavan klijent napravljen za demonstraciju rada mrežnog 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

poslužiteljskom dijelu aplikacije.

Slika 5.2 Izgled Windows klijenta

Page 74: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških podataka

Zlatko Barać 70

Slika 5.3 prikazuje kako će na poslužitelju 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 poslužitelju i drugu koja generira podatke i poziva prvu funkciju.

Page 75: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških podataka

Zlatko Barać 71

Kao što je vidljivo na ispisu 5.15 timer periodično poziva funkciju koja generira slučajne

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 uspješno')

else

GlavniRichEdit.lines.add('Slanje neuspješno, povratna vrijednost :

'+rez);

end;

Ispis 5.15 Funkcija za slanje podataka

Page 76: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških podataka

Zlatko Barać 72

6 Zaključak Razvojem PHPa i ostalih alata koji se izvršavaju na strani poslužitelja stvoreno je dosta

mogućnosti za lakši i jednostavniji razvoj mrežnih servisa. Također jednostavna razmjena

podataka putem XMLa je dodatno olakšala cijeli proces izrade i korištenja kako

poslužitelja tako i klijenta.

Opisana aplikacija demonstrira kako na relativno jednostavan način izraditi mrežni servis

koji koristi REST arhitekturu za komunikaciju klijenta i poslužitelja. Na taj način je

aplikacija učinjena fleksibilnom i lako proširivom, a kao što je demonstrirano jednostavno

je izraditi klijente u raznim tehnologijama, ne samo PHPu.

Prilikom izrade aplikacije stečeno je vrijedno teorijsko iskustvo s područja RESTful

mrežnih servisa, kao i praktično iskustvo s područja programiranja u PHP programskom

jeziku. Stečeno je i znanje vezano uz samu REST arhitekturu i praktičnu implementaciju

iste u poslužiteljsku aplikaciju kao i u razne tipove klijenata. Prilikom izrade aplikacije nije

bilo većih 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

olakšao rukovanje XMLom u odnosu na prethodnu verziju ugradnjom klase SimpleXML.

Jedino područje gdje je bilo malo teže naći dokumentaciju je izrada Flash klijenta.

Aplikacija je izrađena kao potpuno funkcionalna i cilj joj je demonstrirati poznavanje rada

sa REST arhitekturom i poznavanje načina funkcioniranja mrežnih servisa. Dorade su kao i

uvijek moguće, a neka od područja gdje ima mjesta doradama bi se mogla istaknuti bolja

sigurnost pri komunikaciji između klijenta i poslužitelja, provjera korisnika, eventualno

kreiranje korisničkih grupa i različita razina prava za pojedine korisnike. Trenutna verzija

implementira funkcije za dvije vrste korisnika, a to su prijavljeni i neprijavljeni korisnik.

Još jedno od područja gdje su dorade moguće i poželjne je korisničko sučelje. Prilikom

izrade aplikacije naglasak je stavljen na funkcionalnost sučelja, no sigurno je da ima još

mjesta i estetskim doradama.

Page 77: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških 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]. Dubrovački Vjesnik, http://dubrovacki.hr/, (30.12.2010)

[11]. Borland Delphi, http://www.borland.com/, (30.12.2010)

Page 78: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških podataka

Zlatko Barać 74

8 Prilozi

8.1 Popis slika Slika 3.1Tablice unutar baze podataka .................................................................................. 9 

Slika 3.2 Logička struktura poslužiteljskog dijela aplikacije .............................................. 11 

Slika 3.3 Obrada upozorenja ............................................................................................... 21 

Slika 3.4 Logička struktura dijela aplikacije za obradu prognoza ....................................... 29 

Slika 3.5 Logička struktura dijela aplikacije za evidenciju meteoroloških postaja ............. 32 

Slika 3.6 Logička struktura dijela aplikacije koji nudi funkcionalnost web servisa ........... 35 

Slika 4.1 Početna stranica .................................................................................................... 46 

Slika 4.2 Prijava novog korisnika ........................................................................................ 46 

Slika 4.3 Pokušaj prijave neaktivnog korisnika................................................................... 47 

Slika 4.4 Korisnički izbornik ............................................................................................... 47 

Slika 4.5 Administrativni dio aplikacije .............................................................................. 48 

Slika 4.6 Odabir datuma prognoze ...................................................................................... 48 

Slika 4.7 Uređivanje prognoza ............................................................................................ 49 

Slika 4.8 Brisanje prognoza ................................................................................................. 50 

Slika 4.9 Izbor datuma upozorenja ...................................................................................... 51 

Slika 4.10 Uređivanje 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 okružje .............................................................................. 64 

Slika 5.2 Izgled Windows klijenta ....................................................................................... 69 

Slika 5.3 Poslani podaci ...................................................................................................... 70 

Page 79: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških 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 Sadržaj 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 ograđivanje sadržaja 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 vraća 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 

Page 80: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških podataka

Zlatko Barać 76

Ispis 5.1 Primjeri korištenja 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 određenom 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 događajima ............................................................................ 65 

Ispis 5.9 Definicija korištenje XML podataka..................................................................... 65 

Ispis 5.10 onLoad funkcija .................................................................................................. 66 

Ispis 5.11 Učitavanje podataka o županijama ..................................................................... 67 

Ispis 5.12 Sadržaj datoteke s postavkama ........................................................................... 67 

Ispis 5.13 Rukovanje postavkama ....................................................................................... 68 

Ispis 5.14 Učitavanje podataka sa servisa ........................................................................... 68 

Ispis 5.15 Funkcija za slanje podataka ................................................................................ 71 

Page 81: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških podataka

Zlatko Barać 77

9 Sažetak U ovom diplomskom radu opisana je aplikacija koja koristi mrežne servise za razmjenu

meteoroloških podataka. Korištenje 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. Poslužiteljski dio aplikacije

koji pruža mrežne servise je napisan u PHP programskom jeziku uz korištenje mySQL

baze za pohranu podataka. Klijentski dio aplikacije je izrađen dijelom u HTMLu i PHP

programskom jeziku, bez korištenja baze podataka, a dio je napravljen korištenjem Adobe

Flash tehnologije. Opisan je način rada servisa i tehnologija koje se koriste pri njihovom

korištenju te način korištenja aplikacije uz popratne slike. Opisan je i način razmjene

podatka između klijenta i poslužitelja s detaljima programskog koda. Demonstriran je

proces prijave, unosa, pregleda i brisanja podataka. Također je opisan proces registracije

korisnika i odobravanja istog od strane administratora. Opisani su i demonstrirani primjeri

klijentskih aplikacija koje koriste navedene mrežne servise. Na kraju rada, u zaključku su

navedena iskustva stečena tijekom izrade aplikacije kao i mogućnosti proširenja iste.

Page 82: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških podataka

Zlatko Barać 78

10 Ključne riječi Mrežni servisi, XML, mySQL, Adobe Flash, REST.

Page 83: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških 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.

Page 84: zlatko barac diplomski zavrsna · internet. Cilj ovog rada je napraviti aplikaciju u PHP programskom jeziku koja će se izvoditi na poslužitelju i korisniku pružati navedene usluge

Sveučilište u Dubrovniku Korištenje mrežnih servisa za razmjenu meteoroloških podataka

Zlatko Barać 80

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