50
TALLINNA ÜLIKOOL Matemaatika-Loodusteaduskond Informaatika osakond Veebiportaal Liiklus.net Seminaritöö Autor: Tanel Jõeäär Juhendaja: Jaagup Kippar Tallinn 2006

Veebiportaal Liiklus€¦ · Liiklus.net on veebiportaal, mis koondab enda alla erineva liiklusalase info. Esmaseks komponendiks on autode andmebaas, mille kirjed sisaldavad kasutajate

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Veebiportaal Liiklus€¦ · Liiklus.net on veebiportaal, mis koondab enda alla erineva liiklusalase info. Esmaseks komponendiks on autode andmebaas, mille kirjed sisaldavad kasutajate

TALLINNA ÜLIKOOL

Matemaatika-Loodusteaduskond

Informaatika osakond

Veebiportaal Liiklus.netSeminaritöö

Autor: Tanel Jõeäär

Juhendaja: Jaagup Kippar

Tallinn 2006

Page 2: Veebiportaal Liiklus€¦ · Liiklus.net on veebiportaal, mis koondab enda alla erineva liiklusalase info. Esmaseks komponendiks on autode andmebaas, mille kirjed sisaldavad kasutajate

Sisukord

Sisukord ..................................................................................................................................... 2

1.Sissejuhatus..............................................................................................................................4

1.Sissejuhatus..............................................................................................................................4

2.Kasutajagrupid......................................................................................................................... 4

2.Kasutajagrupid......................................................................................................................... 4

3.Kasutajalood............................................................................................................................ 4

3.Kasutajalood............................................................................................................................ 4

4.Võrdlus teistega....................................................................................................................... 5

4.Võrdlus teistega....................................................................................................................... 5

4.1. Liiklus.ee..........................................................................................................................54.2. Mnt.ee.............................................................................................................................. 7

5.Kirjeldus...................................................................................................................................8

5.Kirjeldus...................................................................................................................................8

6.Vajalikud nõudmised serverile................................................................................................ 9

6.Vajalikud nõudmised serverile................................................................................................ 9

7.Failide nimekiri......................................................................................................................10

7.Failide nimekiri......................................................................................................................10

8.Huvitavad koodijupid.............................................................................................................11

8.Huvitavad koodijupid.............................................................................................................11

8.1. Pildi üleslaadimine ja mastaapimine failis lisamine.php............................................... 118.2. Kirje korrektsuse kontroll ja veahaldus failis lisamine.php...........................................13

9.WAP-tugi............................................................................................................................... 16

9.WAP-tugi............................................................................................................................... 16

10.Really Simple Syndication (RSS)........................................................................................18

10.Really Simple Syndication (RSS)........................................................................................18

11.Foorum.................................................................................................................................19

11.Foorum.................................................................................................................................19

12.Administreerimine............................................................................................................... 20

12.Administreerimine............................................................................................................... 20

13.Edasiarendus........................................................................................................................ 21

13.Edasiarendus........................................................................................................................ 21

14.Kokkuvõte............................................................................................................................22

2

Page 3: Veebiportaal Liiklus€¦ · Liiklus.net on veebiportaal, mis koondab enda alla erineva liiklusalase info. Esmaseks komponendiks on autode andmebaas, mille kirjed sisaldavad kasutajate

14.Kokkuvõte............................................................................................................................22

15.Lühendid.............................................................................................................................. 23

15.Lühendid.............................................................................................................................. 23

16.Lisa: Liiklus.net veebirakenduse kood................................................................................ 24

16.Lisa: Liiklus.net veebirakenduse kood................................................................................ 24

16.2. Fail: foorum.php...........................................................................................................2416.3. Fail: footer.php.............................................................................................................2416.4. Fail: header.php............................................................................................................2516.5. Fail: index.php............................................................................................................. 2616.6. Fail: info.php................................................................................................................2716.7. Fail: kontakt.php.......................................................................................................... 2716.8. Fail: leia.php.................................................................................................................2816.9. Fail: lisamine.php.........................................................................................................3016.10. Fail: otsi.php...............................................................................................................3316.11. Fail: reklaam.php....................................................................................................... 3616.12. Fail: rss.php................................................................................................................3616.13. Fail: stiil.css............................................................................................................... 3716.14. Fail: wap.php..............................................................................................................3916.15. Fail: varastatud.php....................................................................................................3916.16. Fail: vorm.php............................................................................................................4216.17. Fail: wap / index.wml.................................................................................................4416.18. Fail: wap / w_auto.php...............................................................................................4516.19. Fail: wap / w_auto2.php.............................................................................................4516.20. Fail: wap / w_info.php............................................................................................... 4616.21. Fail: wap / w_lisa.php................................................................................................ 4716.22. Fail: wap / w_lisa2.php.............................................................................................. 4716.23. Fail: wap / w_uudis.php............................................................................................. 4916.24. Fail: wap / w_uudis2.php........................................................................................... 49

3

Page 4: Veebiportaal Liiklus€¦ · Liiklus.net on veebiportaal, mis koondab enda alla erineva liiklusalase info. Esmaseks komponendiks on autode andmebaas, mille kirjed sisaldavad kasutajate

1. Sissejuhatus

Idee tekkis, olles korduvalt märganud erinevaid pisirikkumisi ja hooletusi linnaliikluses. Miks

siis mitte luua must nimekiri autohuligaanidest sarnaselt mobiilivõlglastele ning

maksurikkujatele. Kahtlemata ei saa aga tähelepanuta jätta ka eeskujulikku käitumist liikluses.

Selle mõtte edasiarendusena tekkis idee luua liiklusportaal, mis koondaks endas erinevat

liiklusalast informatsiooni.

2. Kasutajagrupid

• Igapäevased autoga liiklejad

Saavad infot olude kohta riigi maanteedel (Maanteeameti info), vaadata auto kohta

kirjeid nii Liiklus.net andmebaasist kui Politseiameti infot, lisada auto kohta kirje,

tutvuda liiklus-, politsei-, auto- ning ralliuudistega, kasutada Liiklus.neti WAP-

versiooni ning foorumit.

• Jalakäijad

Saavad lisada ning vaadata kirjeid autode kohta, lugeda uudiseid, kontrollida sõiduki

olemasolu Liiklus.net või varastatud sõidukite andmebaasis WAP-i kaudu ning

kasutada foorumit.

• Jalgratturid

Tulevikus on plaanis kaasata Liiklus.net-i ka spetsiaalselt jalgratta kasutajatele

mõeldud infot.

3. Kasutajalood

Probleem: 44-aastane taksojuht Juri soovib näha Tallinna kaarti.

Lahendus: Liiklus.net-is ei ole kaarte. Külastama peaks portaali tallinn.ee.

4

Page 5: Veebiportaal Liiklus€¦ · Liiklus.net on veebiportaal, mis koondab enda alla erineva liiklusalase info. Esmaseks komponendiks on autode andmebaas, mille kirjed sisaldavad kasutajate

Probleem: 51-aastane Silme soovib esitada kaebust sinise Ford Taunuse kohta

numbrimärgiga 123 ABC, mis parkis kõnniteel ning segas jalakäijaid.

Lahendus: Silme, sisenenud Liiklus.net portaali, klikib lingil „Lisa auto”, täidab vajalikud

lahtrid, ning kui eksimusi ei tekkinud, ongi uus kirje andmebaasi sisestatud.

Probleem: 35-aastane Margus leiab õhtul töölt naastes oma garaaži kõrvalt tühermaalt

kahtlase auto. Margus soovib teada, kas tegemist pole äkki ärandatud sõidukiga.

Lahendus: Selle väljaselgitamiseks saab Margus kasutada Liiklus.net-i WAP versiooni.

Valides „Autod” ning sisestades otsitava auto registrinumbri, saab ta hõlpsasti teada, kas see

on kantud Politseiameti ärandatud sõidukite andmebaasi või mitte.

Probleem: 22-aastane Sille soovib lugeda värskeid autospordiuudiseid.

Lahendus: Liiklus.net menüüst tuleb valida „Ralliuudised”, mis viibki värskeimate uudisteni.

Probleem: 18-aastane Janar soovib teada, kas Eestis müüakse kuskil Audi Coupe esilaternaid.

Lahendus: Janar võib postitada teema Liiklus.net foorumisse ning loota, et peagi keegi

vastab.

Probleem: 32-aastane Rainer soovib leida infot Tartu jalgrattateede kohta.

Lahendus: Kahjuks Liiklus.net seda veel ei võimalda.

4. Võrdlus teistega

4.1. Liiklus.ee

Liiklus.ee pakub võrreldes Liiklus.net-iga kohati väga teemavälist ja ebapraktilist infot,

veebikeskkonna ülesehitusest on raske aru saada. Küsitavaks jääb flash-menüüde otstarbekus.

Vajalikku infot on keeruline leida.

Kujundusest:

• Sinisest tekstist on raske eraldada linke – tihti tundub tavatekst olevat link. Joonisel 1

näha olev link „Taksopeatus – Taksoinfo, tellimine, ...” viitab sootuks

taksoteemalistele uudistele, mitte asjakohasele informatsioonile.

• Veebilehel paistab koguni 4 otsingulahtrit!

5

Page 6: Veebiportaal Liiklus€¦ · Liiklus.net on veebiportaal, mis koondab enda alla erineva liiklusalase info. Esmaseks komponendiks on autode andmebaas, mille kirjed sisaldavad kasutajate

• Võimatu on aru saada menüüde paigutusest. Tundub, nagu oleks üleval hallil taustal

paistvad lingid "Taksopeatus", "HädaAbi", "Anna Teada", "Leia sobiv" ning "Laps

liikluses” juba ühe oranžil taustal paikneva teema alamenüü, kuid nii see pole.

Alamenüüks on hoopiski Flashis kujundatud kaootiliselt vilkuv bänner, mis valitud

lehel on võrreldes järgmistega veel üsna korrapärane.

• Segadust tekitab ka all paremal ääres paistev lingikogu. Nupud "Tagasi" ja "Edasi" ei

vii kuhugi (kuhu need peaksidki viima?). Vahepeal tekkinud menüüvalikut uuesti

samale lehele tulles ei leia.

Joonis 1 Liiklus.ee taksoteemaline lehekülg

6

Page 7: Veebiportaal Liiklus€¦ · Liiklus.net on veebiportaal, mis koondab enda alla erineva liiklusalase info. Esmaseks komponendiks on autode andmebaas, mille kirjed sisaldavad kasutajate

Liiklus.ee tekstid koosnevad enamasti PHP koodi poolt ümber kujundatuna teiste

kodulehtede, näiteks lingina näha oleva Eesti Taksojuhtide Liidu, aga samuti ka Eesti

Verekeskuse, Politsei, Päästeameti ja teiste asutuste ning ühingute saitidel paiknevad infot.

Mõistmatuks jääb, millised lisavõimalused avanevad end veebikeskkonna kasutajaks

registreerides.

4.2. Mnt.ee

Maanteeameti veebikeskkond on Liiklus.netiga võrdlemiseks liialt spetsiifiline, keskendudes

siiski riigiametkonna tegevusele. Infona pakutakse, nagu loota võiski, peamiselt maanteedega

seonduvat (teekaamerad, ilmaolud maanteedel, avatud jääteed).

Joonis 2 Maanteeameti kodulehekülg

7

Page 8: Veebiportaal Liiklus€¦ · Liiklus.net on veebiportaal, mis koondab enda alla erineva liiklusalase info. Esmaseks komponendiks on autode andmebaas, mille kirjed sisaldavad kasutajate

Nagu jooniselt 2 näha, on menüüde ülesehitus on loogiline. Tarvitseb vaid klikkida menüüs

lingil "Maanteeinfo", kui kõik sellega seonduv ka lingikoguna avaneb. Vaid maanteeinfot

otsima tulnud inimesele on leht siiski liiga sisutihe.

5. Kirjeldus

Liiklus.net on veebiportaal, mis koondab enda alla erineva liiklusalase info. Esmaseks

komponendiks on autode andmebaas, mille kirjed sisaldavad kasutajate poolt lisatud

sissekandeid sõidukite juhtide headest ja halbadest tegudest. Koostöös Politseiametiga saab

Liiklus.net-ist vaadata andmeid ärandatud sõidukite andmebaasist. Maanteeametist tuleb

lehele igapäevane teedeinfo. Lisaks veel viide kategooriasse (liiklus, politsei, auto, autospordi

ja muud) jagatud uudised ning foorum. Mobiiltelefoniga on kättesaadav Liiklus.net-i WAP

versioon, mille abil on võimalik autode andmebaasi kirjeid lisada, neid sealt lugeda,

kontrollida, kas auto on ärandatud, lugeda uudiseid ning teedeinfot.

8

Page 9: Veebiportaal Liiklus€¦ · Liiklus.net on veebiportaal, mis koondab enda alla erineva liiklusalase info. Esmaseks komponendiks on autode andmebaas, mille kirjed sisaldavad kasutajate

Joonis 3 Liiklus.net portaal

6. Vajalikud nõudmised serverile

• Apache 1.3.34

• PHP 4.4.1

• MySQL 4.1.13

• GD 2.0.28

9

Page 10: Veebiportaal Liiklus€¦ · Liiklus.net on veebiportaal, mis koondab enda alla erineva liiklusalase info. Esmaseks komponendiks on autode andmebaas, mille kirjed sisaldavad kasutajate

Kasutada võib ka vajalikke nõudeid rahuldavat veebiserveri tarkvarapaketti, nagu xampp1 või

EasyPHP2.

7. Failide nimekiri

Peakaust:

• autod.php – Autode sirvimine

• bannergen.php – Banneri genereerimine lehe päises

• foorum.php – Link foorumile

• footer.php – Lehe jalus

• header.php – Lehe päis

• index.php – Esileht, kuvab 5 viimast uudist ning 10 viimast lisatud autot

• info.php – Teedeinfo maanteeameti kodulehelt

• kontakt.php – Tagasiside vorm ning emaili saatmine

• lisamine.php – Kirje lisamine autode tabelisse

• mysql.php – Andmebaasiga ühendamiseks vajalikud konstandid, lisatakse (include)

lehtedele, mis kasutavad andmebaasi.

• otsi.php – Otsing autode mustast nimekirjast ning päringu tulemus.

• uudised.php – Uudiste sirvimine

• wap.php – WAP-lehekülge tutvustav leht.

• vorm.php – Auto lisamise vorm.

/wap kaust:

• index.wml – esileht

• w_auto.php – päringuvorm autode tabelist

• w_auto2.php – tulemus autode tabelist

• w_auto3.php – üksiku kirje vaatamine autode tabelist

• w_info.php – Maanteeameti teedeinfo

• w_lisa.php – kirje lisamine autode tabelisse 1 http://www.apachefriends.org/en/xampp.html2 http://www.easyphp.net

10

Page 11: Veebiportaal Liiklus€¦ · Liiklus.net on veebiportaal, mis koondab enda alla erineva liiklusalase info. Esmaseks komponendiks on autode andmebaas, mille kirjed sisaldavad kasutajate

• w_uudis.php – uudiste sirvimine 10 kaupa

• w_uudis2.php – üksiku uudise lugemine

Failide lähtekood on ära toodud lisas.

8. Huvitavad koodijupid

8.1. Pildi üleslaadimine ja mastaapimine failis lisamine.php

Rakendasin, nagu mujalgi, samm-sammult lähenemist. Seega proovisin esmalt tööle saada

pildifailide laadimise serverisse. Kui see töötas, asendasin lihtsa faili salvestamise funktsiooni

move_uploaded_file() faili eelneva mastaapimise ning seejärel salvestamise koodiga.

if(!$viga && ($pildifail!='' || ($_REQUEST[pildiurl]!='http://' && $_REQUEST[pildiurl]!=''))){

if($pildifail!=''){$ajutine_fail = $_FILES['pildifail']['tmp_name'];

} else if ($_REQUEST[pildiurl]!='http://'){$pilt_netist = true;$ajutine_fail = $_REQUEST[pildiurl];

}

$_FILES massiiv on üks eeldefineeritud massiividest PHP-s, olles neist ainsana on see

kahemõõtmeline. $_FILES talletab failide üleslaadimisega seotud asjakohast informatsiooni.

$_FILES[’fail’][’tmp_name’] sisaldab failile omistatud ajutist nime serveris, millena

seda talletatakse enne lõplikku salvestamist. Kuna oli vaja, et serveris talletatakse nii kasutaja

arvutist kui ka URLina antud pildifaile, ongi vajalik ülatoodud tingimus.

define("PILDIPANK", "pildid/autod/");ini_set("upload_tmp_dir", "pildid/autod/");

//Pildi suuruse ümberarvestamiseks$laius = 640; $pikkus = 640;

if(is_uploaded_file($_FILES['pildifail']['tmp_name']) || ($_REQUEST[pildiurl]!='http://' && $_REQUEST[pildiurl]!='')){

if(!($_FILES['pildifail']['type'] == 'image/jpeg' || $_FILES['pildifail']['type'] == 'image/png' || exif_imagetype($_REQUEST[pildiurl]) == 2 || exif_imagetype($_REQUEST[pildiurl]) == 3)){

Enne edasist tegutsemist failivooga kontrollitakse, kas tegemist on sobivat tüüpi failiga.

Sobivad failitüübid on PNG ja JPEG/JPG. Kui tegemist on kasutaja arvutist laaditud failiga,

kontrollitakse selle tüüpi $_FILES massiivist. URLina antud failide puhul tuleb appi

11

Page 12: Veebiportaal Liiklus€¦ · Liiklus.net on veebiportaal, mis koondab enda alla erineva liiklusalase info. Esmaseks komponendiks on autode andmebaas, mille kirjed sisaldavad kasutajate

funktsioon exif_imagetype(), mille väärtused 2 ja 3 viitavad vastavalt JPEG/JPG või PNG

tüüpi failile.

echo '<b><font color="red">VIGA: Failivorming ei vasta nõuetele (jpg/jpeg või png)!<br><br>';

if(!$viga) $viga=TRUE;}else{

/* UUTE MÕÕTMETE ARVUTAMINE */list($laius_orig, $pikkus_orig) = getimagesize($ajutine_fail);

if ($laius && ($laius_orig < $pikkus_orig)) {$laius = ($pikkus / $pikkus_orig) * $laius_orig;

} else {$pikkus = ($laius / $laius_orig) * $pikkus_orig;

}

Pildi mastaapimiseks vajalike arvutuste tegemine.

/* RESAMPLING */$pilt_p = imagecreatetruecolor($laius, $pikkus);

if ($_FILES['pildifail']['type'] == 'image/jpeg'){$pilt = imagecreatefromjpeg($ajutine_fail);

} else if ($_FILES['pildifail']['type'] == 'image/png'){$pilt = imagecreatefrompng($ajutine_fail);

}

if ($pilt_netist && exif_imagetype($_REQUEST[pildiurl]) == 2){$pilt = imagecreatefromjpeg($ajutine_fail);

} else if ($pilt_netist && exif_imagetype($_REQUEST[pildiurl]) == 3){$pilt = imagecreatefrompng($ajutine_fail);

}

imagecopyresampled($pilt_p, $pilt, 0, 0, 0, 0, $laius, $pikkus, $laius_orig, $pikkus_orig);

/* VÄLJUND */$failinimi = PILDIPANK.$regnr.'-'.$failiaeg.'.jpg';imagejpeg($pilt_p, $failinimi, 100);

$pildiaadress = "http://www.liiklus.net/".$failinimi;$upload = TRUE;

if (!$pilt_netist && $_FILES['pildifail']['error'] != 0){echo '<b><font color="red">VIGA: Pildi üleslaadimine

ebaõnnestus!<br><br>';if(!$viga) $viga=TRUE;

}

Pildist saadakse failivoog, mis funktsiooni imagecopyresampled() abil muudetakse nõutud

suurusesse. imagecopyresampled() vajab parameetritena faili allikat ja sihtkohta ning allika

ja sihtkoha pildi koordinaatide algus- ning lõpppunkte. Viimaks salvestatakse tulemus

imagejpeg() abil.

}}else{

echo '<b><font color="red">VIGA: Potensiaalne turvarisk!<br><br>';if(!$viga) $viga=TRUE;}

Allikad koodi kirjutamiseks:

12

Page 13: Veebiportaal Liiklus€¦ · Liiklus.net on veebiportaal, mis koondab enda alla erineva liiklusalase info. Esmaseks komponendiks on autode andmebaas, mille kirjed sisaldavad kasutajate

• Gilmore, Jason W., „Beginning PHP5 and MySQL”; 13. ptk „Handling File Uploads”.

• PHP.net: imagecopyresampled - Manual3

8.2. Kirje korrektsuse kontroll ja veahaldus failis lisamine.php

Vältimaks andmebaasi risustumist ebakompetentsete kirjetega, on failis lisamine.php kontroll,

mis tuvastab sobimatud kirjed ning väldib nende sattumist andmebaasi.

Koodist on eemaldatud teemat mittepuudutavad osad.

$viga = FALSE;$sel_aeg = date("Y-m-d H:i:s", mktime($sel_tund, $sel_minut, 0, $sel_kuu, $sel_paev, $sel_aasta));$failiaeg = date("YmdHis", mktime($sel_tund, $sel_minut, 0, $sel_kuu, $sel_paev, $sel_aasta));$kuu30 = array("04", "06", "09", "11");$regnr = str_replace(' ','',strtoupper($_REQUEST[regnr]));$kell=date("Y-m-j H:i:s");

define(POSTSEK, 20);

mysql_connect("localhost", "liiklusn_liiklus", "******");mysql_select_db("liiklusn_liiklus");

Vajalike muutujate väärtustamine. Muutuja $viga on algselt väär. Eraldi pannakse vormist

saadud andmetest kokku $sel_aeg ja $failiaeg, esimene (kujul "2006-02-28 12:20:25")

andmebaasi tarbeks ning teine (kujul "20060228122025") lisatud pildifaili nime

moodustamiseks. Defineeritakse ka konstant POSTSEK, mis määrab sekundid, kui kaua võib

samalt IP-lt tulnud vormiinfoga ajavahe olla.

Enne varasema kirje olemasolu kontrolli loodi ühendus MySQL andmebaasiga alles peale

kõikide tingimuste täitmist. Nüüd tuleb seda aga teha juba enne tingimuste kontrollimise

algust.

/* VIIMASEST LISATUD KIRJEST LIIGA VÄHE AEGA MÖÖDAS */$lause="SELECT id FROM auto WHERE UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(postaeg) < ".POSTSEK;$vastus=mysql_query($lause);$ridu=mysql_num_rows($vastus);

if ($ridu > 0 && $_REQUEST[ip] == $_SERVER["REMOTE_ADDR"]){echo '<b><font color="red">VIGA: Eelmisest sisestatud kirjest on möödas alla '.POSTSEK.'

sekundi.<br><br>';if(!$viga) $viga=TRUE;

3 http://www.php.net/manual/en/function.imagecopyresampled.php (2006-03-06)

13

Page 14: Veebiportaal Liiklus€¦ · Liiklus.net on veebiportaal, mis koondab enda alla erineva liiklusalase info. Esmaseks komponendiks on autode andmebaas, mille kirjed sisaldavad kasutajate

Kontroll andmebaasist, kas eksisteerib sama IP-aadressiga kirje, millel on ajavahe praeguse

hetkega POSTSEK (20) sekundit. MySQL käsk UNIX_TIMESTAMP() on lähemalt selgitatud

MySQL 5.0 Reference Manual’is peatükis "12.5 Date and Time Functions"4.

/* REGISTREERIMISNUMBER JA/VÕI SÜNDMUSE KIRJELDUS PUUDU */}if ($regnr == '' || $_REQUEST[text] == '' || $_REQUEST[koht] == ''){

$korras = FALSE;echo '<b><font color="red">VIGA: Registreerimisnumber, koht ja/või sündmuse kirjeldus

puudub!<br><br>';if(!$viga) $viga=TRUE;

/* REGISTREERIMISNUMBER EI VASTA NÕUETELE */}if (!eregi("^[a-zA-Z0-9]{2,9}$", $regnr) && $regnr!=''){

echo '<b><font color="red">VIGA: Registreerimisnumber "'.$regnr.'" ei vasta nõuetele!<br><br>';

if(!$viga) $viga=TRUE;

eregi(string muster, string string) otsib etteantud stringist mustrit. Funktsioon on

kasulik kontrollides stringide, näiteks paroolide, valiidsust.5 Antud näites kontrollib eregi() registrinumbri vastavust nõuetele:6

• [a-zA-Z0-9] – et registrinumber koosneks ladina tähestiku tähtedest a-z; A-Z

ning numbritest 0-9.

• {2,9} – stringi pikkus minimaalselt 2 ja maksimaalselt 9 tähemärki7.

• ^; $ - kontrollitakse nii stringi algusest kui lõpust.

/* TULEVIKKU JÄÄV KIRJE */}if ($sel_aeg > date("Y-m-d H:i:s")){

echo '<b><font color="red">VIGA: Kuna veel pole avastatud piisavalt usaldusväärset tuleviku ennustamise meetodit, siis tulevikku jäävaid kirjeid lisada ei saa!<br><br>';

if(!$viga) $viga=TRUE;$tulevik = TRUE;

/* MITTEEKSISTEERIVA KUUPÄEVAGA KIRJE */}if (($sel_paev==31 && in_array($sel_kuu, $kuu30)) || ($sel_kuu=="02" && $sel_paev>28 && date("L", $sel_aeg)==0) || ($sel_kuu=="02" && $sel_paev>29 && date("L", $sel_aeg)==1) && !$tulevik){

echo '<b><font color="red">VIGA: Sellist kuupäeva ei eksisteeri!<br><br>';if(!$viga) $viga=TRUE;

Tingimus kontrollib, et 30 päevaga kuu puhul poleks valitud 31. kuupäeva ega veebruari

puhul vastavalt üle 28. või 29. kuupäeva, vastavalt sellele, kas on liigaasta või mitte.

4 http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html5 Gilmore, W. Jason "Beginning PHP 5 and MySQL", Apress 2004, lk. 1936 Gilmore, W. Jason "Beginning PHP 5 and MySQL", Apress 2004, lk. 190-1917 Vastavalt "Registreerimismärgid" lõik (2006-02-28) http://www.ark.ee/atp/?id=234

14

Page 15: Veebiportaal Liiklus€¦ · Liiklus.net on veebiportaal, mis koondab enda alla erineva liiklusalase info. Esmaseks komponendiks on autode andmebaas, mille kirjed sisaldavad kasutajate

/* VIGANE MAILIAADRESS */}if(($_REQUEST[email] != '') && (strpos($_REQUEST[email], "@")===FALSE) && ( strpos($_REQUEST[email], ".")===FALSE)){

echo '<b><font color="red">VIGA: E-maili aadress on vigane! E-maili aadressi lisamine pole kohustuslik.<br><br>';

if(!$viga) $viga=TRUE;

/* KORRAGA NII PILDIURL KUI ARVUTIST */}if (($_REQUEST[pildiurl]!='' && $_REQUEST[pildiurl]!='http://') && $_FILES['pildifail']['name']!=''){

echo '<b><font color="red">VIGA: Korraga antud nii pildi URL kui ka fail!<br><br>';if(!$viga) $viga=TRUE;

/* KÕIK KORRAS! */}if (!$viga){

/* KIRJE LISAMINE ANDMEBAASI JA KUVAMINE */}

if($viga){echo 'Kirje andmebaasi lisamine ebaõnnestus!</b></font><br><br><a

href="javascript:history.go(-1)">Tagasi</a>';}else{

echo '<br><a href="autod.php">Tagasi sirvima</a>';}

15

Page 16: Veebiportaal Liiklus€¦ · Liiklus.net on veebiportaal, mis koondab enda alla erineva liiklusalase info. Esmaseks komponendiks on autode andmebaas, mille kirjed sisaldavad kasutajate

9. WAP-tugi

WAP (Wireless Application Protocol) on standard, mille abil saab luua Internetipõhiseid

teenuseid mobiiltelefonidele. Teenused näevad välja nagu tavalised telefoni menüüvalikud,

kus liigutakse ja tehakse valikuid klaviatuuri abil.

WAP teenused kirjutatakse standardses WML (Wireless Markup Language) keeles.

Vaatamata sarnasusele HTML’iga ei saa kõikide mobiiltelefonidega siiski vaadata tavalisi

internetilehti, selleks sobivad vaid telefonile kohandatud WML’s kirjutatud lehed. Ent keelte

sarnasus võimaldab vähese õppimise ja küllaltki lihtsate vahenditega luua senistest

internetilehtedest mobiilseks kasutuseks sobivaid WAP-teenuseid.

WAP teenuste üheks tähtsamaks ühiseks omaduseks on see, et loodud teenused sobivad

ühtemoodi hästi kasutamiseks eri telefonivalmistajate WAP-telefonidega.8

Joonis 4 Liiklus.net WAP-versioon Nokia 5100 SDK's

8 EMT – Andmeside – WAP (2006.02.21) http://www.emt.ee

16

Page 17: Veebiportaal Liiklus€¦ · Liiklus.net on veebiportaal, mis koondab enda alla erineva liiklusalase info. Esmaseks komponendiks on autode andmebaas, mille kirjed sisaldavad kasutajate

Liiklus.net omab ka WAP-tuge veebi sirvimiseks mobiiltelefoniga. Lugeda saab teedeinfot,

viimaseid uudiseid, otsida autot numbrimärgi järgi nii Liiklus.net andmebaasist kui ka

Politseiameti varastatud autode registrist. Samuti saab auto kohta veidi lihtsustatud vormi läbi

lisada uue kirje.

Liiklus.net-i WML kood genereeritakse PHP-s. Lihtsaim PHP-s genereeritud korrektselt

vormistatud koodijupp:<?php

header("Content-type: text/vnd.wap.wml");

print "<?xml version=\"1.0\"?>\n"; print "<!DOCTYPE wml PUBLIC \"-//WAPFORUM//DTD WML 1.1//EN\"" . " \"http://www.wapforum.org/DTD/wml_1.1.xml\">\n"; print "<wml>\n";print "<card>\n";print "<p>Hello world</p>\n";print "</card>\n";print "</wml>\n";

?> 9

Olulisimaks dünaamilise WAP-lehe loomisel võib lugeda muutujate edasiandmine

serveriskriptile, olgu selleks siis PHP, ASP või midagi muud. Muutuja nimi deklaleeritakse

WML-is, kirjutades muutuju nime ette $, kusjuures muutuja nimi ise peab asetsema

sulgudes.10

Lihtne vorm, kust hiljem saab muutuja $(Items) PHP-s $_REQUEST[Items] muutujana välja

kutsuda, näeb välja selline:<wml>

<card id="Order" title="Query Inventory"> <p> <select name="Items" title="Items">

<option value="Books">Books</option><option value="Music">Music</option><option value="Video">Video</option><option value="Software">Software</option>

</select></p> <do type="accept" label="Query">

<go href="http://127.0.0.1/WML/Inventory.asp" method="post"><postfield name="Items" value="$(Items)"/>

</go></do>

</card> </wml>11

9 WML Scripting Tips and Integration with PHP (2006.02.28) http://www.developer.com/lang/php/article.php/10941_1449061_210 DevGuru WML variables lõik (2006.02.28) http://www.devguru.com/Technologies/wml/quickref/wml_variables.html11 Wireless Developer Network – WML tutorial lõik (2006.02.28) http://www.wirelessdevnet.com/channels/wap/training/wml6.html

17

Page 18: Veebiportaal Liiklus€¦ · Liiklus.net on veebiportaal, mis koondab enda alla erineva liiklusalase info. Esmaseks komponendiks on autode andmebaas, mille kirjed sisaldavad kasutajate

10.Really Simple Syndication (RSS)

RSS (inglisekeelne lühend sõnadest Rich Site Summary või Really Simple Syndication) on

väike mitmeotstarbeline laiendatav metaandmete kirjeldamise ja sündikeerimise vorming12.

RSS põhineb XML failiformaadi standardil, mida kasutatakse peamiselt internetilehekülgede

sisukorra või uudiste kokkuvõtete tegemiseks.

RSS-i levikule on kaasa aidanud ajaveebide suur populaarsus, sest RSS-formaadis

kokkuvõtted on mugav vahend operatiivse info saamiseks huvipakkuva lehekülje muutmisest.

Viimasel ajal on RSS-i üha rohkem hakatud kasutama ka meeskonnatöövahendites paljusid

meeskonnaliikmeid puudutava info edastamiseks. Tavaliselt koostatakse RSS-lehekülg

(inglise keeles feed) internetilehekülje või mõne muu seotud allika muutumisel automaatselt.

Tänapäeval saab RSS-i näitamisega hakkama ka suur osa e-postiprogramme, formaatimata

kujul (XML-ina) iga XML-formaati toetav veebilehitseja, nagu näha joonistel 5 ja 6.13

Joonis 7 Live Bookmark nupp näitab RSSi kasutamise võimalust Mozilla Firefox brauseris

Liiklus.net-i RSSi loomisel on malliks võetud Postimees online uudiste RSS14. RSS-i abil

saab lugeda Liiklus.net-i uudiseid. Liiklus.net-i RSS-koodi valmistab PHP andmebaasist

võetud kirjete järgi ning see on valideeritud Feed Validator’iga15.

Väljavõte Liiklus.net RSS-failist koos ühe uudisekirjega:<?xml version="1.0" encoding="ISO-8859-1" ?><rss version="2.0">

<channel><title>Liiklus.net uudised</title><link>http://www.liiklus.net</link><description>Liiklus.net uudised</description><language>et-ee</language><lastBuildDate>Tue, 28 Feb 2006 08:30:09 +0200</lastBuildDate><webMaster>[email protected] (webmaster)</webMaster><image>

<url>http://www.liiklus.net/liiklusnet_s.png</url><title>Liiklus.net</title><link>http://www.liiklus.net</link>

</image>

<item><title>Liiklus: Parkimise korraldamine muutub linnale tulusamaks.</title><link>http://www.liiklus.net/uudised.php?id=3</link>

</item>12 Vallaste.ee – RSS lõik (2006.02.26) http://www.vallaste.ee13 Vikipeedia – RSS lõik (2006.02.19) http://et.wikipedia.org/wiki/Rss14 Postimees online uudised (2006.02.26) http://www.postimees.ee/rssfeed/index.php15 Feed Validator for Atom and RSS (2006.02.19) http://feedvalidator.org

18

Page 19: Veebiportaal Liiklus€¦ · Liiklus.net on veebiportaal, mis koondab enda alla erineva liiklusalase info. Esmaseks komponendiks on autode andmebaas, mille kirjed sisaldavad kasutajate

<channel></rss>

Joonis 8 - RSS kanalite haldamine e-posti programmis Mozilla Thunderbird

11.Foorum

Liiklus.net kasutab foorumina phpBB foorumit, mis on üks laiemalt kasutatavaid

foorumikoode. phpBB baseerub PHP-l, on pideva aredustöö tõttu küllaltki turvaline ning

pakub erinevaid võimalusi, omades näiteks eraldi administreerimisliidest.

Rohkem informatsioon phpBB foorumi kohta võib leida selle kodulehelt aadressilt

http://www.phpbb.com.

19

Page 20: Veebiportaal Liiklus€¦ · Liiklus.net on veebiportaal, mis koondab enda alla erineva liiklusalase info. Esmaseks komponendiks on autode andmebaas, mille kirjed sisaldavad kasutajate

12.Administreerimine

phpMyAdmin on PHPs kirjutatud töövahend, mis võimaldab hallata MySQLi üle veebi.

Hetkel saab selle abil andmebaase luua ja eemaldada, luua/eemaldada/muuta tabeleid ning

selle välju, käivitada ükskõik millist MySQL käsku ning muuta väljade sisu.16

phpMyAdmin pakub kõrgelt optimiseeritud osuta-ja-kliki (point-and-click) kasutajaliidest,

mis kahandab suuresti kasutajate poolt tekitatud apsude arvu.17 Kasutajaliides on saadaval ka

eestikeelsena.

Liiklus.netis on phpMyAdmin abil võimalik lisada uudiseid, administreerida (kustutada ja

muuta) kirjeid autode kohta. Vajadusel saab ka muuta tabelite struktuuri, luua andmebaasist

varukoopiaid ning seda teisaldada. Uudise lisamine phpMyAdmin abil on näidatud joonisel 9.

16 phpMyAdmin koduleht, lõik (2006.02.19) http://www.phpmyadmin.net17 Gilmore, W. Jason "Beginning PHP 5 and MySQL: From Novice to Professional"; Apress 2004; lk. 562

20

Page 21: Veebiportaal Liiklus€¦ · Liiklus.net on veebiportaal, mis koondab enda alla erineva liiklusalase info. Esmaseks komponendiks on autode andmebaas, mille kirjed sisaldavad kasutajate

Joonis 10 - Uudise lisamine phpMyAdminis

Administreerimisliidese arendusest Liiklus.netile tuleb lähemalt juttu peatükis

"Edasiarendus".

13.Edasiarendus

Edasiarendused on tähtsuse järjekorras.

• Administeerimisliides

Praeguses Liiklus.net versioonis toimub uudiste lisamine ning kirjete parandamine läbi

veebipõhise phpMyAdmin-i. See tagab küll turvalise, ent veidi tülika lähenemise. Tarvis

oleks administreerimisliidest, kus oleks võimalik lihtsasti lisada uudiseid (teadmata

selleks, näiteks, millist numbrilist tähist kannavad andmebaasis eri tüüpi uudised) ning

samas lihtsustatud korras hallata andmebaasi kirjeid. Näiteks, et sama numbrimärgiga

tähistatud kirjetel oleks lihtne muuta auto mark ja mudel ühesuguseks ning hõlpsasti

eemaldada mittevajalikud kirjed.

• Pildigalerii

Pildigalerii avatud lähtekoodiga Gallery218 baasil, mida saab hõlpsasti integreerida

ülejäänud portaaliga. Gallery2 on üle veebi hallatav pildigalerii, kuhu vajadusel saavad

pilte lisada ka tavakasutajad.

• Koodi optimiseerimine (korduste kõrvaldamine, omaloodud funktsioonide

kasutuselevõtt)

Hetkel on Liiklus.net-i kood nii mõneski kohas kohmakas ning ülearu korratud. Näiteks

kuvavad uudised.php, autod.php vastavalt uudiseid ja autode kirjeid, samas teeb seda ka

index.php. Eesmärgiks on korduvate käsujadade kokkukoondamine, et kood oleks lühem.

• Uudiste piltide skaleerimine

Administreerimisliidese osa, kus sarnaselt lisamine.php-le võiks olla võimalus lisada pilt

uudisele juurde arvutist või URL-na, peale mida see salvestataks serverisse.

• Uudiste kommenteerimisvõimalus

• Kasutajaks registreerimine, kasutades foorumi andmebaasi.

Kasutajaks registreerimine toimuks läbi phpBB baasil foorumi. Liiklus.net lehele 18 http://gallery.menalto.com

21

Page 22: Veebiportaal Liiklus€¦ · Liiklus.net on veebiportaal, mis koondab enda alla erineva liiklusalase info. Esmaseks komponendiks on autode andmebaas, mille kirjed sisaldavad kasutajate

logimisel kontrollitakse kasutajanime olemasolu ning parooli õigust foorumi

andmebaasist.

14.Kokkuvõte

Seminaritööna valmis veebirakendus, mis koondab endas erineva liiklusalase info.

Veebirakendus on kirjutatud veebiprogrammeerimiskeeles PHP ning kasutab andmetega

manipuleerimiseks MySQL andmebaasi. Rakendusega on integreeritud phpBB foorum,

tulevikus on plaanis lisada Gallery2 pildigalerii.

Liiklus.net veebiportaalis saab lugeda värskemaid liiklus- ning autoteemalisi uudiseid, tutvuda

autode andmebaasi sissekannetega, saata päringuid Politseiameti varastatud sõidukite

infobaasi, lugeda Maanteeameti infot teedeolude kohta ning lugeda ja kirjutada postitusi

foorumis. Liiklus.net uudised on saadaval ka RSS-voona.

Veebirakendust saab kasutada ka mobiiltelefonis, kui sellel on olemas WAP-tugi. WAPi

vahendusel saab tutvuda andmebaasi kirjetega, samuti neid lisada, kontrollida numbrimärgi

järgi, kas sõiduk on kantud varastatud sõidukite registrisse, tutvuda teedeoludega ning lugeda

uudiseid.

22

Page 23: Veebiportaal Liiklus€¦ · Liiklus.net on veebiportaal, mis koondab enda alla erineva liiklusalase info. Esmaseks komponendiks on autode andmebaas, mille kirjed sisaldavad kasutajate

15.Lühendid

ASP – Active Server Pages

HTML – Hypertext Markup Language

PHP – PHP: Hypertext Preprocessor

RSS – Really Simple Syndicaton

SDK – Software Development Kit

SQL – Structured Query Language

WAP – Wireless Application Protocol 19

WML – Wireless Markup Language

XML – Extensible Markup Language

19 What is WAP? - A Word Definition From the Webopedia Computer Dictionary (2006-02-26)

http://www.webopedia.com/TERM/W/WAP.html

23

Page 24: Veebiportaal Liiklus€¦ · Liiklus.net on veebiportaal, mis koondab enda alla erineva liiklusalase info. Esmaseks komponendiks on autode andmebaas, mille kirjed sisaldavad kasutajate

16.Lisa: Liiklus.net veebirakenduse kood

16.1.Fail: autod.php<?php include ("header.php");

mysql_connect("localhost", "liiklusn_liiklus", "liiklus");mysql_select_db("liiklusn_liiklus");

$lause="SELECT regnr, mark, mudel, COUNT(regnr) as loendur FROM auto GROUP BY regnr";$vastus=mysql_query($lause);

echo "<h1>Autod</h1>

<table border=0 cellspacing=0 cellpadding=3>";

while($rida=mysql_fetch_array($vastus)){echo "<tr><td><a href='leia.php?regnr=$rida[regnr]'>$rida[regnr]</a></td>

<td>$rida[mark] $rida[mudel]</td><td><center>($rida[loendur])</center></td></tr>\n";}echo "</table>";

mysql_close();include ("footer.php");?>

16.2.Fail: foorum.php<?php include ("header.php");

echo '<h1>Foorum</h1>';

echo '<a href="foorum/index.php" target="_blank">Sisene foorumisse</a>';

include ("footer.php");?>

16.3.Fail: footer.php<br><br></td>

<td class="pikkjoon"></td>

</tr></table>

<table border="0" cellspacing="0" cellpadding="0" width="770" align="center"><tr><td class="laijoon"></td></tr></table>

<table border="0" cellspacing="0" cellpadding="0" width="770" align="center"><tr><td><div align="right"><a href="http://validator.w3.org/check?uri=referer" target="_blank"><img src="pildid/t_liiklus/w3c-valid-html401.png" alt="Valid HTML 4.01 Transitional" border="0"></a>&nbsp<a href="http://jigsaw.w3.org/css-validator/check?uri=referer" target="_blank"><img style="border:0" src="pildid/t_liiklus/w3c-valid-css.png" alt="Valid CSS!"></a>&nbsp;<a href="http://feedvalidator.org/check.cgi?url=http://www.liiklus.net/rss.php" target="_blank"><img src="pildid/t_liiklus/w3c-valid-rss.png" alt="[Valid RSS]" title="Validate my RSS feed" border="0" /></a>&nbsp;<a href="http://www.php.net" target="_blank"><img src="php-power2.png" border="0" alt="PHP Powered"></a></div>

24

Page 25: Veebiportaal Liiklus€¦ · Liiklus.net on veebiportaal, mis koondab enda alla erineva liiklusalase info. Esmaseks komponendiks on autode andmebaas, mille kirjed sisaldavad kasutajate

<div align="center"><font face="Arial,Helvetica" size="-2">&copy; 2005-2006Liiklus.net <!--(TD &amp; mmz)--><br>Valminud <a href="http://www.tlu.ee/" target="_blank">Tallinna Ülikooli</a> informaatika osakonnas seminaritööna</font></div></td>

</tr></table></body></html>

16.4.Fail: header.php<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/transitional.dtd"><html><head>

<title>Liiklus.net</title><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><link rel="stylesheet" type="text/css" href="stiil.css"><link rel="alternate" title="Liiklus.net uudised" href="rss.xml"

type="application/rss+xml"><link rel="Shortcut Icon" href="liiklus.ico">

</head>

<body text="#000000" bgcolor="#FFFFFF" link="#666666" vlink="#666666" alink="#999999"><table align="center" border="0" cellspacing="0" cellpadding="0" width="770">

<tr><td colspan="5"><a href="index.php"><?php $pildid = array(11, 11, 22, 33, 11, 22,

33); $paev = date("w"); echo '<img src="pildid/t_liiklus/'.$pildid[$paev].'.png" border="0" alt="Liiklus.net">'; ?></a></td>

</tr>

<tr><td class="taust3" colspan="5"></td>

</tr><tr>

<td class="pikkjoon"></td><td valign="top" class="taust2">

<table align="center" border="0" cellspacing="0" cellpadding="0" width="140"><tr>

<td><b><a href="info.php">Liiklusinfo</a></b><br class="menupoint">&nbsp;&nbsp;<a href="info.php">- Teedeinfo</a><!--br class="menupoint">&nbsp;&nbsp;- Linnadevahelised kaugused<br class="menupoint">&nbsp;&nbsp;- Muu info-->

<br><br><b><a href="autod.php">Autod</a></b><br class="menupoint">&nbsp;&nbsp;<a href="vorm.php">- Lisa auto</a><br class="menupoint">&nbsp;&nbsp;<a href="otsi.php">- Otsing</a><br class="menupoint">&nbsp;&nbsp;<a href="varastatud.php">- Varastatud</a>

<br><br><b><a href="uudised.php">Uudised</a></b><br class="menupoint">&nbsp;&nbsp;<a href="uudised.php?kategooria=1">- Liiklusuudised</a><br class="menupoint">&nbsp;&nbsp;<a href="uudised.php?kategooria=2">- Politseiuudised</a><br class="menupoint">&nbsp;&nbsp;<a href="uudised.php?kategooria=3">- Autouudised</a><br class="menupoint">&nbsp;&nbsp;<a href="uudised.php?kategooria=4">- Ralliuudised</a><br class="menupoint">&nbsp;&nbsp;<a href="uudised.php?kategooria=5">- Muud Uudised</a>

<br><br><b><a href="foorum.php">Foorum</a></b>

<!--br><br>Pildigalerii<br class="menupoint">&nbsp;&nbsp;- Rallipildid<br class="menupoint">&nbsp;&nbsp;- Messipildid<br class="menupoint">&nbsp;&nbsp;- Muud pildid-->

<br><br><b><a href="wap.php">WAP</a></b><br class="menupoint"><b><a href="kontakt.php">Tagasiside</a></b><br class="menupoint"><b><a href="reklaam.php">Reklaam</a></b>

</td></tr>

</table></td>

25

Page 26: Veebiportaal Liiklus€¦ · Liiklus.net on veebiportaal, mis koondab enda alla erineva liiklusalase info. Esmaseks komponendiks on autode andmebaas, mille kirjed sisaldavad kasutajate

<td class="pikkjoon"></td>

<td width="619" valign="top">

16.5.Fail: index.php<?php include "header.php";include "mysql.php";

mysql_connect("localhost", "liiklusn_liiklus", "liiklus");mysql_select_db("liiklusn_liiklus");

echo '<h3>Viimased uudised</h3>';

$lause="SELECT *, UNIX_TIMESTAMP(kuupaev) AS aeg FROM uudised ORDER BY aeg DESC LIMIT 5";$vastus=mysql_query($lause);

while($rida=mysql_fetch_array($vastus)){echo '<table class="raamiga" align=center><tr><td>';echo '<table border=0 cellspacing=0 cellpadding=3 width=550 align=center><tr>';echo '<th class="pealkiri" align=left>'.$rida[pealkiri].'</th></tr>';echo '<tr><td>'.strftime('%d.%m.%Y %H:%M', $rida[aeg]).'</td></tr>';

echo '<tr><td>';

if ($rida[pildiurl] != ''){echo '<IMG src="'.$rida[pildiurl].'" align="right" alt="'.$rida[pealkiri].'">';

}

echo $rida[tekst];

if ($rida[allikas] != ''){echo '<div align="right">';if($rida[allika_url] != ''){

echo '<a href="'.$rida[allika_url].'">';if ($rida[allika_pilt] != ''){

echo '<img src="'.$rida[allika_pilt].'" align="right" alt="'.$rida[allikas].'"></a>';

}else {

echo $rida[allikas].'</a>';}

}echo '</div>';

}

echo '</td></tr></table>';echo '</td></tr></table><br>';

}

echo '<h3>Lisatud autod</h3>';

$lause="SELECT *, UNIX_TIMESTAMP(postaeg) AS kell FROM auto ORDER BY postaeg DESC LIMIT 5";$vastus=mysql_query($lause);

echo '<table class="raamiga" align=center><tr><td>';echo '<table border=0 cellspacing=0 cellpadding=3 width=550 align=center>';

while($rida=mysql_fetch_array($vastus)){echo '<tr><td>'.date("d.m.Y H:i",$rida[kell]).' <b><a

href="leia.php?id='.$rida[ID].'">'.$rida[regnr].'</a></b> '.$rida[mark].' '.$rida[mudel].'</td></tr>';}

echo '</table>';echo '</td></tr></table>';

mysql_close();

include "footer.php";

26

Page 27: Veebiportaal Liiklus€¦ · Liiklus.net on veebiportaal, mis koondab enda alla erineva liiklusalase info. Esmaseks komponendiks on autode andmebaas, mille kirjed sisaldavad kasutajate

?>

16.6.Fail: info.php<?php include "header.php";?>

<h1>Teedeinfo</h1>

<p><a href="http://www.balticroads.net/cgi-bin/frameset?lang=ee,mode=temp,main=ee" target="_blank">Ilmaolud maanteedel</a> (balticroads.net)</p>

<br><?php$body = fopen("http://amet.mnt.ee/maanteeinfo/soidutingimused/op_info/tekst.htm", "r");$asjad = '';while (!feof($body)){

$asjad .= fread($body, 8192);}fclose($body);

echo (strip_tags($asjad, "<p><b><i><u><a><br><meta>"));

?>

<?php include "footer.php";?>

16.7.Fail: kontakt.php<?php include ("header.php");

echo "<h1>Kontakt</h1>

<form method='post' action='$PHP_SELF'><table border=0>

<tr><td>&nbsp;</td><td><select name='tyyp'><option>Küsimus</option><option>Arvamus</option><option>Reklaam</option><option>Muu</option></select></td></tr>

<tr><td>Pealkiri:</td><td><input type='text' name='pealkiri' maxlength='256'></td></tr>

<tr><td>Saatja nimi:</td><td><input type='text' name='saatja' maxlength='256'></td></tr>

<tr><td>Email:</td><td><input type='text' name='saatja_email' maxlength='256'></td></tr>

<tr><td valign='top'>Sisu:</td><td><textarea name='tekst' cols='25' rows='5'></textarea></td></tr>

27

Page 28: Veebiportaal Liiklus€¦ · Liiklus.net on veebiportaal, mis koondab enda alla erineva liiklusalase info. Esmaseks komponendiks on autode andmebaas, mille kirjed sisaldavad kasutajate

<tr><td>&nbsp;</td><td><input type='checkbox' name='vastus' CHECKED>Soovin meilitsi vastust.<input type='hidden' name='saada' value='1'></td></tr>

<tr><td>&nbsp;</td><td><input type='submit' value='Saada'>&nbsp;<input type='reset' value='Katkesta'></td></tr></table></form>";

if (isset($_REQUEST[saada])){

if(($_REQUEST[saatja_email] != '') && (strpos($_REQUEST[saatja_email], "@")===FALSE) && ( strpos($_REQUEST[saatja_email], ".")===FALSE))

{echo '<b><font color="red">VIGA: E-maili aadress on vigane! E-maili aadressi

lisamine pole kohustuslik, kui Te ei soovi vastust.</font></b><br><br>';$viga=TRUE;

}if($_REQUEST[tekst] == ''){echo '<b><font color="red">VIGA: Kirjutage palun midagi ikka kirja sisuks ka!

;)</font></b><br><br>';$viga=TRUE;

}else{

if($_REQUEST[saatja] == ''){$saatja = '(anonüümne)';

}if($_REQUEST[saatja_email] == ''){

$saatja = 'email puudub';}

mail("[email protected],[email protected]", "Liiklus.net: $tyyp: $pealkiri", "$tekst \nSaatja: $saatja ($saatja_email)\nVastus: $vastus", $headers);

$headers = 'From:'.$email.'\r\n';$headers .= 'Reply-To'.$email.'\r\n';$headers .= 'Content-Type: text/plain;\r\n charset=iso-8859-1\r\n';$headers .= 'X-Mailer: Liiklus.net/form';

print 'Teie kiri on edastatud liiklus.net meeskonnale.';}

}

if($viga){echo '<a href="javascript:history.go(-1)">Tagasi</a>';

}

include ("footer.php");?>

16.8.Fail: leia.php<?php include("header.php");

mysql_connect("localhost", "liiklusn_liiklus", "liiklus");mysql_select_db("liiklusn_liiklus");

if (isset($_REQUEST[regnr])){

$sorttulp="id";if($_REQUEST["sortveerg"]=="id"){

$sorttulp="id";}if($_REQUEST["sortveerg"]=="aeg"){

$sorttulp="aeg";}

28

Page 29: Veebiportaal Liiklus€¦ · Liiklus.net on veebiportaal, mis koondab enda alla erineva liiklusalase info. Esmaseks komponendiks on autode andmebaas, mille kirjed sisaldavad kasutajate

if($_REQUEST["sortveerg"]=="nimi"){$sorttulp="nimi";

}if($_REQUEST["sortveerg"]=="tyyp"){

$sorttulp="tyyp";}

$lause="SELECT id, regnr, mark, mudel, varv, aeg, koht, nimi, email, postaeg, text, tyyp, picurl FROM auto WHERE regnr='$_REQUEST[regnr]' ORDER BY $sorttulp";

$vastus=mysql_query($lause);

echo "<p><table border=1 cellspacing=0 cellpadding=3 width='100%'><tr><th><a href='leia.php?regnr=$_REQUEST[regnr]&sortveerg=id'>ID</a></th><th><a href='leia.php?regnr=$_REQUEST[regnr]&sortveerg=aeg'>Aeg</a></th><th><a href='leia.php?regnr=$_REQUEST[regnr]&sortveerg=koht'>Koht</a></th><th>Kommentaar</th><th><a href='leia.php?regnr=$_REQUEST[regnr]&sortveerg=tyyp'>Tüüp</a></th><th>Pilt</th><th><a href='leia.php?regnr=$_REQUEST[regnr]&sortveerg=nimi'>Lisaja nimi</a></th><th>Postituse aeg</th>";

while($rida=mysql_fetch_array($vastus)){

switch ($rida[picurl]) {

case "http://" :$pilt = "&nbsp;";break;

case "" :$pilt = "&nbsp;";break;

default :$pilt = "<a href='$rida[picurl]' target='_blank'>Pilt</a>";break;

}

if ($rida[nimi] == '') {$nimi = '<font size="-1">(anonüümne)</font>';

} else {$nimi = $_REQUEST[nimi];

}

echo '<tr><td><center><a href=leia.php?id='.$rida[id].'>'.$rida[id].'</a></center></td>';

echo '<td>'.$rida[aeg].'</td>';echo '<td>'.$rida[koht].'</td>';echo '<td>'.$rida[text].'</td>';echo '<td><center><img

src="pildid/emotikoonid/'.$rida[tyyp].'.gif"></center></td>';echo '<td>'.$pilt.'</td>';echo '<td>'.$nimi.'</td>';echo '<td>'.$rida[postaeg].'</td>';echo '</tr>';

}echo '</table>';

}else if(isset($_REQUEST[id])){

$lause="SELECT *, UNIX_TIMESTAMP(aeg) AS aeg, UNIX_TIMESTAMP(postaeg) AS postaeg FROM auto WHERE id='$_REQUEST[id]'";

$vastus=mysql_query($lause);

echo "<p><table border=0 cellspacing=0 cellpadding=3>";

while($rida=mysql_fetch_array($vastus)){

switch ($rida[picurl]) {

case "http://" :$pilt = "&nbsp;";

29

Page 30: Veebiportaal Liiklus€¦ · Liiklus.net on veebiportaal, mis koondab enda alla erineva liiklusalase info. Esmaseks komponendiks on autode andmebaas, mille kirjed sisaldavad kasutajate

break;

case "" :$pilt = "&nbsp;";break;

default :$pilt = '<img src="'.$rida[picurl].'" alt="'.$rida[picurl].'">';break;

}

if ($rida[nimi] == '') {$nimi = '<font size="-1">(anonüümne)</font>';

} else {$nimi = $_REQUEST[nimi];

}

echo '<tr><td colspan=2><h3>Sissekanne #'.$rida[ID].'</h3></td></tr>';echo '<tr><td><b>Mark:</b></td><td>'.$rida[mark].' '.$rida[mudel].'</td></tr>';echo '<tr><td><b>Värv:</b></td><td>'.$rida[varv].'</td></tr>';echo '<tr><td><b>Koht:</b></td><td>'.$rida[koht].'</td></tr>';echo '<tr><td><b>Tüüp:</b></td><td><img

src="pildid/emotikoonid/'.$rida[tyyp].'.gif"></td></tr>';echo '<tr><td><b>Aeg:</b></td><td>'.date("d.m.Y H:i",$rida[aeg]).'</td></tr>';echo '<tr><td><b>Kommentaar:</b></td><td>'.$rida[text].'</td></tr>';echo '<tr><td colspan=2>&nbsp;</td></tr>';echo '<tr><td><b>Lisaja:</b></td><td>'.$nimi.'</td></tr>';echo '<tr><td><b>Lisamise aeg:</b></td><td>'.date("d.m.Y

H:i",$rida[postaeg]).'</td></tr>';}echo '</table>';

}else{echo '<font color="red"><b>VIGA! Liiga palju atribuute!</b></font>';

}

mysql_close();

echo '<br><br><a href="autod.php">Tagasi sirvima</a>';

include "footer.php";

?>

16.9.Fail: lisamine.php<?phpinclude ("header.php");

$viga = FALSE;$upload = FALSE;$sel_aeg = date("Y-m-d H:i:s", mktime($sel_tund, $sel_minut, 0, $sel_kuu, $sel_paev, $sel_aasta));$failiaeg = date("YmdHis", mktime($sel_tund, $sel_minut, 0, $sel_kuu, $sel_paev, $sel_aasta));$kuu30 = array("04", "06", "09", "11");$regnr = str_replace(' ','',strtoupper($_REQUEST[regnr]));$kell=date("Y-m-j H:i:s");

echo "<h1>Kirje lisamine</h1>";

define(POSTSEK, 20);

mysql_connect("localhost", "liiklusn_liiklus", "liiklus");mysql_select_db("liiklusn_liiklus");

/* VIIMASEST LISATUD KIRJEST LIIGA VÄHE AEGA MÖÖDAS */

$lause="SELECT id FROM auto WHERE UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(postaeg) < ".POSTSEK;$vastus=mysql_query($lause);$ridu=mysql_num_rows($vastus);

if ($ridu > 0 && $_REQUEST[ip] == $_SERVER["REMOTE_ADDR"]){

30

Page 31: Veebiportaal Liiklus€¦ · Liiklus.net on veebiportaal, mis koondab enda alla erineva liiklusalase info. Esmaseks komponendiks on autode andmebaas, mille kirjed sisaldavad kasutajate

echo '<b><font color="red">VIGA: Eelmisest sisestatud kirjest on möödas alla '.POSTSEK.' sekundi.<br><br>';

if(!$viga) $viga=TRUE;

/* REGISTREERIMISNUMBER JA/VÕI SÜNDMUSE KIRJELDUS PUUDU */

}if ($regnr == '' || $_REQUEST[text] == '' || $_REQUEST[koht] == ''){$korras = FALSE;echo '<b><font color="red">VIGA: Registreerimisnumber, koht ja/või sündmuse kirjeldus

puudub!<br><br>';if(!$viga) $viga=TRUE;

/* REGISTREERIMISNUMBER EI VASTA NÕUETELE */

}if (!eregi("^[a-zA-Z0-9]{2,9}$", $regnr) && $regnr!=''){echo '<b><font color="red">VIGA: Registreerimisnumber "'.$regnr.'" ei vasta

nõuetele!<br><br>';if(!$viga) $viga=TRUE;

/* TULEVIKKU JÄÄV KIRJE */

}if ($sel_aeg > date("Y-m-d H:i:s")){echo '<b><font color="red">VIGA: Kuna veel pole avastatud piisavalt usaldusväärset

tuleviku ennustamise meetodit, siis tulevikku jäävaid kirjeid lisada ei saa!<br><br>';if(!$viga) $viga=TRUE;$tulevik = TRUE;

/* MITTEEKSISTEERIVA KUUPÄEVAGA KIRJE */

}if (($sel_paev==31 && in_array($sel_kuu, $kuu30)) || ($sel_kuu=="02" && $sel_paev>28 && date("L", $sel_aeg)==0) || ($sel_kuu=="02" && $sel_paev>29 && date("L", $sel_aeg)==1) && !$tulevik){

echo '<b><font color="red">VIGA: Sellist kuupäeva ei eksisteeri!<br><br>';if(!$viga) $viga=TRUE;

/* VIGANE MAILIAADRESS */

}if(($_REQUEST[email] != '') && (strpos($_REQUEST[email], "@")===FALSE) && ( strpos($_REQUEST[email], ".")===FALSE)){

echo '<b><font color="red">VIGA: E-maili aadress on vigane! E-maili aadressi lisamine pole kohustuslik.<br><br>';

if(!$viga) $viga=TRUE;

/* KORRAGA NII PILDIURL KUI ARVUTIST */

}if (($_REQUEST[pildiurl]!='' && $_REQUEST[pildiurl]!='http://') && $_FILES['pildifail']['name']!=''){

echo '<b><font color="red">VIGA: Korraga antud nii pildi URL kui ka fail!<br><br>';if(!$viga) $viga=TRUE;

/* UURIME, KUIDAS ON LOOD PILTIDEGA */

}if($pildifail!='' || $_REQUEST[pildiurl]!='http://'){

if($pildifail!=''){$ajutine_fail = $_FILES['pildifail']['tmp_name'];

} else if ($_REQUEST[pildiurl]!='http://'){$ajutine_fail = $_REQUEST[pildiurl]!='http://';

}

define("PILDIPANK", "pildid/autod/");ini_set("upload_tmp_dir", "pildid/autod/");

//Pildi suuruse ümberarvestamiseks$laius = 640; $pikkus = 640;

if(is_uploaded_file($_FILES['pildifail']['tmp_name'])){

31

Page 32: Veebiportaal Liiklus€¦ · Liiklus.net on veebiportaal, mis koondab enda alla erineva liiklusalase info. Esmaseks komponendiks on autode andmebaas, mille kirjed sisaldavad kasutajate

if(!($_FILES['pildifail']['type'] == 'image/jpeg' || $_FILES['pildifail']['type'] == 'image/png')){

echo '<b><font color="red">VIGA: Failivorming ei vasta nõuetele (jpg/jpeg või png)!<br><br>';

if(!$viga) $viga=TRUE;}else{

/* Uute mõõtmete arvutamine */list($laius_orig, $pikkus_orig) = getimagesize($ajutine_fail);

if ($laius && ($laius_orig < $pikkus_orig)) {$laius = ($pikkus / $pikkus_orig) * $laius_orig;

} else {$pikkus = ($laius / $laius_orig) * $pikkus_orig;

}

/* Resampling */$pilt_p = imagecreatetruecolor($laius, $pikkus);

if ($_FILES['pildifail']['type'] == 'image/jpeg'){$pilt = imagecreatefromjpeg($ajutine_fail);

} else if ($_FILES['pildifail']['type'] == 'image/png'){$pilt = imagecreatefrompng($ajutine_fail);

}

imagecopyresampled($pilt_p, $pilt, 0, 0, 0, 0, $laius, $pikkus, $laius_orig, $pikkus_orig);

/* Väljund */$failinimi = PILDIPANK.$regnr.'-'.$failiaeg.'.jpg';imagejpeg($image_p, $failinimi, 100);

//$tulemus = move_uploaded_file($_FILES['pildifail']['tmp_name'], $failinimi);

$pildiaadress = "http://www.liiklus.net/".$failinimi;$upload = TRUE;

if ($_FILES['pildifail']['error'] != 0){echo '<b><font color="red">VIGA: Pildi üleslaadimine

ebaõnnestus!<br><br>';if(!$viga) $viga=TRUE;

}

/*$failinimi = PILDIPANK.$regnr.'-'.$failiaeg.'.jpg';echo "http://www.liiklus.net/".$failinimi;$tulemus = move_uploaded_file($_FILES['pildifail']['tmp_name'], $failinimi);echo "Pikkus: ".imagesy(imagecreatefromjpeg($failinimi))."<br/>";

$pildiaadress = "http://www.liiklus.net/".$failinimi;$upload = TRUE;

if ($tulemus != 1){echo '<b><font color="red">VIGA: Pildi üleslaadimine

ebaõnnestus!<br><br>';if(!$viga) $viga=TRUE;

}*/}

}else{echo '<b><font color="red">VIGA: Potensiaalne turvarisk!<br><br>';if(!$viga) $viga=TRUE;}

/* KÕIK KORRAS! */

}if (!$viga){$korras = TRUE;

$lause="SELECT * FROM auto WHERE ip=$ip AND kuupaev=";

if(!isset($pildiaadress)) $pildiaadress = $_REQUEST[pildiurl];

$lause="INSERT INTO auto (regnr, mark, mudel, varv, aeg, koht, nimi, email, postaeg, IP, text, tyyp, picurl) VALUES ('$regnr', '$_REQUEST[mark]', '$_REQUEST[mudel]',

32

Page 33: Veebiportaal Liiklus€¦ · Liiklus.net on veebiportaal, mis koondab enda alla erineva liiklusalase info. Esmaseks komponendiks on autode andmebaas, mille kirjed sisaldavad kasutajate

'$_REQUEST[varv]', '$sel_aeg', '$_REQUEST[koht]', '$_REQUEST[nimi]', '$_REQUEST[email]', '$kell', '$_REQUEST[ip]', '$_REQUEST[text]', '$_REQUEST[tyyp]', '$pildiaadress')"; mysql_query($lause);

echo mysql_error(); // teade vea puhul$idnumber=mysql_insert_id(); echo "<B>Teie sissekanne on edukalt salvestatud.</B><P><table border=0 cellspacing=3 cellpadding=1><tr><td>Reg.

nr.:</td><td>$_REQUEST[regnr]</td></tr><tr><td>Mark:</td><td>$_REQUEST[mark]</td></tr><tr><td>Mudel:</td><td>$_REQUEST[mudel]</td></tr><tr><td>Värv:</td><td>$_REQUEST[varv]</td></tr><tr><td>Aeg:</td><td>$sel_aeg</td></tr><tr><td>Koht:</td><td>$_REQUEST[koht]</td></tr><tr><td>Nimi:</td><td>$_REQUEST[nimi]</td></tr><tr><td>Email:</td><td><a href='mailto:$email'>$email</a></td></tr><tr><td>Postaeg:</td><td>$kell</td></tr><tr><td>IP:</td><td>$_REQUEST[ip]</td></tr><tr><td>Tekst:</td><td>$_REQUEST[text]</td></tr><tr><td>Tüüp:</td><td>$_REQUEST[tyyp]</td></tr><tr><td valign='top'>Pilt:</td><td><a href='$pildiaadress'>$pildiaadress</a><br><br><img

src='$pildiaadress' alt='$failinimi'></td></tr></table>";

mysql_close();}

if($viga){echo 'Kirje andmebaasi lisamine ebaõnnestus!</b></font><br><br><a

href="javascript:history.go(-1)">Tagasi</a>';}else{

echo '<br><a href="autod.php">Tagasi sirvima</a>';}

include ("footer.php");?>

16.10.Fail: otsi.php<?php include ("header.php");

echo "<h1>Otsing</h1>";

// define (T_LEHEL, 20); //otsingutulemusi ühel lehel

if (!isset($_REQUEST[otsing]) || $_REQUEST[otsing] == ''){

echo "<center><form action='$PHP_SELF' method='post'>

<input name='otsing' type='text'>

<select name='tulp'><option value='koik'>kõik</option><option value='regnr'>reg. nr.</option><option value='mark'>mark</option><option value='varv'>värv</option><option value='koht'>koht</option><option value='nimi'>lisaja nimi</option><option value='text'>tekst</option></select>

<p><input type='submit' value='Otsi'>

</form></center>";

if(isset($_REQUEST[otsing]) && $_REQUEST[otsing] == ''){echo '<p><b><font color="red">VIGA: Palun sisestage otsingu märksõna!</b></p>';

}

}else{

33

Page 34: Veebiportaal Liiklus€¦ · Liiklus.net on veebiportaal, mis koondab enda alla erineva liiklusalase info. Esmaseks komponendiks on autode andmebaas, mille kirjed sisaldavad kasutajate

mysql_connect("localhost", "liiklusn_liiklus", "liiklus");mysql_select_db("liiklusn_liiklus");

/* OTSING KÕIKIDEST TULPADEST */

if($_REQUEST[tulp] == 'koik'){$tulbad = array("regnr", "mark", "varv", "koht", "nimi", "text");

for ($i=0; $i<5; $i++){$lause="SELECT * FROM auto WHERE $tulbad[$i] LIKE '%$_REQUEST[otsing]%'";$vastus=mysql_query($lause);$ridu+=mysql_num_rows($vastus);

}

if ($ridu==0) {echo "<p>Päringule '<b>$_REQUEST[otsing]</b>' kõikidest tulpadest vastavaid

tulemusi andmebaasist ei leitud!<p><a href='otsi.php'>Proovi uuesti!</a>";}else{

/*$lehti=ceil($ridu/ T_LEHEL);if (isset($_REQUEST[leht])){

$leht = $_REQUEST[leht];}else{

$leht=1;}

if ($lehti > 1){for ($i=1; $i <= $lehti; $i++){

if ($i==$leht){echo $i;

}else{echo '<a

href="otsi.php?otsing='.$_REQUEST[otsing].'&leht='.$i.'">'.$i.'</a>';}if ($i>0 && $i<$lehti) echo " | ";

}}

echo "<br>";

$naita_alates=($leht-1)*T_LEHEL;*/

echo "Tulemusi: $ridu<p><table border=0 cellpadding=2 cellspacing=0><tr><th>Reg. nr.:</th><th>Mark:</th><th>Värv:</th><th>Aeg:</th><th>Koht:</th><th colspan='2'>Kommentaar:</th><th>Lisaja:</th><th>Postituse aeg:</th></tr>\n";

for ($i=0; $i<5; $i++){$lause="SELECT * FROM auto WHERE $tulbad[$i] LIKE

'%$_REQUEST[otsing]%'";// LIMIT $naita_alates, ".T_LEHEL;$vastus=mysql_query($lause);

while($rida=mysql_fetch_array($vastus)){

foreach ($rida as $kirje){if ($kirje == '') $kirje = '&nbsp;';

}

if ($rida[picurl] == 'http://'){$pilt = '&nbsp;';

}else{$pilt = "<a href='$rida[picurl]' target='_blank'>Pilt</a>";

}

echo "<tr><td class='raamiga'><b><font face=arial><a

href='leia.php?regnr=$rida[regnr]'>$rida[regnr]</a></font></b></td><td width='100' class='raamiga'>$rida[mark] $rida[mudel]</td>

34

Page 35: Veebiportaal Liiklus€¦ · Liiklus.net on veebiportaal, mis koondab enda alla erineva liiklusalase info. Esmaseks komponendiks on autode andmebaas, mille kirjed sisaldavad kasutajate

<td class='raamiga'>$rida[varv]</td><td class='raamiga'>$rida[aeg]</td><td class='raamiga'>$rida[koht]</td><td width='300' class='raamiga'>$rida[text] $pilt</td><td class='raamiga'><center><img

src='pildid/emotikoonid/$rida[tyyp].gif'></center></td><td class='raamiga'><a

href='mailto:$rida[email]'>$rida[nimi]</a></td><td class='raamiga'>$rida[postaeg]</td></tr>\n";

}}echo "</table>";

}

/* OTSING KINDLAST TULBAST */

}else{$lause="SELECT * FROM auto WHERE $_REQUEST[tulp] LIKE '%$_REQUEST[otsing]%'";$vastus=mysql_query($lause);$ridu=mysql_num_rows($vastus);

if ($ridu==0) {echo "<p>Päringule '<b>$_REQUEST[otsing]</b>' tulbast

'<b>$_REQUEST[tulp]</b>' vastavaid tulemusi andmebaasist ei leitud!<p><a href='otsi.php'>Proovi uuesti!</a>";

} else {echo "Tulemusi: $ridu<p><table border=1 cellpadding=3><tr><th>Reg. nr.:</th><th>Mark:</th><th>Värv:</th><th>Aeg:</th><th>Koht:</th><th colspan='2'>Kommentaar:</th><th>Lisaja:</th><th>Postituse aeg:</th></tr>\n";

while($rida=mysql_fetch_array($vastus)){

foreach ($rida as $kirje){if ($kirje == '') $kirje = '&nbsp;';

}

if ($rida[picurl] == 'http://'){$pilt = '&nbsp;';

}else{$pilt = "<a href='$rida[picurl]' target='_blank'>Pilt</a>";

}

echo "<tr><td><b><font face=arial><a

href='leia.php?regnr=$rida[regnr]'>$rida[regnr]</a></font></b></td><td width='100'>$rida[mark] $rida[mudel]</td><td>$rida[varv]</td><td>$rida[aeg]</td><td>$rida[koht]</td><td width='300'>$rida[text] $pilt</td><td><center><img

src='pildid/emotikoonid/$rida[tyyp].gif'></center></td><td><a href='mailto:$rida[email]'>$rida[nimi]</a></td><td>$rida[postaeg]</td></tr>\n";

}

echo "</table>";

}}mysql_close();

}

include ("footer.php");?>

35

Page 36: Veebiportaal Liiklus€¦ · Liiklus.net on veebiportaal, mis koondab enda alla erineva liiklusalase info. Esmaseks komponendiks on autode andmebaas, mille kirjed sisaldavad kasutajate

16.11.Fail: reklaam.php<?php include ("header.php");

echo '<h1>Reklaam</h1>

Reklaami tellimiseks Liiklus.net veebis võtke ühendust aadressil reklaam(at)liiklus.net või kasutage meie <a href="kontakt.php">tagasiside vormi</a>.';

include ("footer.php");?>

16.12.Fail: rss.php

<?phpheader('Content-type: application/xml');echo '<?xml version="1.0" encoding="ISO-8859-1" ?>';echo '<rss version="2.0">';echo '<channel>';echo '<title>Liiklus.net uudised</title>';echo '<link>http://www.liiklus.net</link>';echo '<description>Liiklus.net uudised</description>';echo '<language>et-ee</language>';echo '<lastBuildDate>'.date("D, d M Y H:i:s O").'</lastBuildDate>';echo '<webMaster>[email protected] (webmaster)</webMaster>';

echo '<image>';echo '<url>http://www.liiklus.net/liiklusnet_s.png</url>';echo '<title>Liiklus.net</title>';echo '<link>http://www.liiklus.net</link>';echo '</image>';

if(isset($_REQUEST[limiit])){$limiit = $_REQUEST[limiit];

}else{$limiit = 25;

}

mysql_connect ("localhost", "liiklusn_liiklus", "liiklus");mysql_select_db ("liiklusn_liiklus");

$lause = "SELECT *, UNIX_TIMESTAMP(kuupaev) AS aeg FROM uudised ORDER BY kuupaev DESC LIMIT $limiit";$vastus=mysql_query($lause);while($rida=mysql_fetch_array($vastus)){

echo '<item>';

if ($rida[tyyp]==1) $tyyp="Liiklus: ";else if ($rida[tyyp]==2) $tyyp="Politsei: ";else if ($rida[tyyp]==3) $tyyp="Auto: ";else if ($rida[tyyp]==4) $tyyp="Ralli: ";else if ($rida[tyyp]==5) $tyyp="Muu: ";else $tyyp="";

echo '<title>'.$tyyp.$rida[pealkiri].'</title>';echo '<link>http://www.liiklus.net/uudised.php?id='.$rida[id].'</link>';echo '<guid

isPermaLink="true">http://www.liiklus.net/uudised.php?id='.$rida[id].'</guid>';//echo '<dc:description>'.$rida[intro].'&lt;a

href="http://www.liiklus.net/uudised.php?id='.$rida[id].'&gt;Loe edasi..&lt;/a&gt;</dc:description>';

echo '</item>';}

echo '</channel>';echo '</rss>';?>

36

Page 37: Veebiportaal Liiklus€¦ · Liiklus.net on veebiportaal, mis koondab enda alla erineva liiklusalase info. Esmaseks komponendiks on autode andmebaas, mille kirjed sisaldavad kasutajate

16.13.Fail: stiil.css<?php include "header.php";

/*Esialgu teen nii, et uudised.php kuvamisel ilma parameetriteta kuvatakse 5 uudist sissejuhatusega ja veel 10 pealkirja. Kui lehega on kaasas atribuut 'kategooria', siis kuvatakse vastava kategooria uudised lehekülgedena (30tk lehel, eristamiseks atribuut 'leht'). Lisaks veel 'id' kui tahetakse vaadata mõnda uudist üksikult. Kui 'id' ja muu atribuut on korraga antud, kuvatakse veateade.*/

define ("U_INTRO", 5); //Mitu uudist introga esilehel?define ("U_PEALKIRI", 10); //Mitu uudist pealkirjana esilehel?define ("U_LEHEL", 3); //Mitu uudist kategoorialeheküljel? (Default: 30)define ("U_RIDA", 20); //Mitme lehekülje järel murda sisukorrarida?

mysql_connect ("localhost", "liiklusn_liiklus", "liiklus");mysql_select_db ("liiklusn_liiklus");

/* KUI ON LIIGA PALJU ATRIBUUTE */

if(isset($_REQUEST[id]) && (isset($_REQUEST[kategooria]) || isset($_REQUEST[leht]))){echo "VIGA! Liiga palju atribuute!";

/* KUI ON ANTUD ID */

}else if(isset($_REQUEST[id])){$lause = "SELECT *, UNIX_TIMESTAMP(kuupaev) AS aeg FROM uudised WHERE id=$_REQUEST[id]";$vastus=mysql_query($lause);

while($rida=mysql_fetch_array($vastus)){echo '<table border=0 width=500 align=center><tr><td>';echo '<div align=right class="pisidate">'.strftime('%d.%m.%Y %H:%M',

$rida[aeg]).'</div></td></tr>';echo '<tr><td>';echo '<table class=raamiga border=0 cellspacing=3 width=498 cellpadding=1

align=center><tr>';echo '<th class="pealkiri" align=left><h2>'.$rida[pealkiri].'</h2></th></tr>';echo '<tr><td>';

if ($rida[pildiurl] != ''){if ($rida[suurepildiurl] != ''){

echo '<a href="'.$rida[suurepildiurl].'" target=_blank><img src="'.$rida[pildiurl].'" align="right" alt="'.$rida[pealkiri].'"></a>';

}else{echo '<img src="'.$rida[pildiurl].'" align="right"

alt="'.$rida[pealkiri].'">';}

}echo '<p><b>'.$rida[intro].'</b></p><p>';echo $rida[tekst].'</p>';

if ($rida[allikas] != ''){echo '<div align="right">';

if($rida[allika_url] != ''){echo '<a href="'.$rida[allika_url].'">'.$rida[allikas].'</a>';if ($rida[allika_pilt] != ''){

echo '<img src="'.$rida[allika_pilt].'" align="right" alt="'.$rida[allikas].'"></a>';

}}else{

echo $rida[allikas];}

echo '</div>';}echo "<p><a href='javascript:history.go(-1)'>Tagasi</A>";echo '</td></tr></table>';echo '</td></tr></table><br>';

}

/* KUI ON ANTUD KATEGOORIA */

37

Page 38: Veebiportaal Liiklus€¦ · Liiklus.net on veebiportaal, mis koondab enda alla erineva liiklusalase info. Esmaseks komponendiks on autode andmebaas, mille kirjed sisaldavad kasutajate

}else if(isset($_REQUEST[kategooria])){$lause = "SELECT COUNT(*) AS kogus FROM uudised WHERE tyyp=$_REQUEST[kategooria]";$vastus=mysql_query($lause);$rida=mysql_fetch_array($vastus);$lehti=ceil($rida[kogus]/ U_LEHEL);

echo '<h1>';switch($_REQUEST[kategooria]){

case 1: $tiitel='Liiklusuudised</h1>';break;

case 2:$tiitel='Politseiuudised</h1>';break;

case 3:$tiitel='Autouudised</h1>';break;

case 4:$tiitel='Autospordiuudised</h1>';break;

case 5:$tiitel='Muud uudised</h1>';break;

default:print "</h1>VIGA: Uudiste kategooria on vale või pole määratud!";

}

echo $tiitel;

echo 'Valitud kategoorias ('.$_REQUEST[kategooria].') on '.$rida[kogus].' uudist '.$lehti.' lehel.<br>';

if (isset($_REQUEST[leht])){$leht = $_REQUEST[leht];

}else{$leht=1;

}

if ($lehti > 1){for ($i=1; $i <= $lehti; $i++){

if ($i==$leht){echo $i;

}else{echo '<a

href="uudised.php?kategooria='.$_REQUEST[kategooria].'&leht='.$i.'">'.$i.'</a>';}if ($i>0 && $i<$lehti) echo " | ";if ($i/U_RIDA==int) echo "<br>";

}}

echo "<br>";

$naita_alates=($leht-1)*U_LEHEL;$limiit=U_LEHEL;

$lause = "SELECT *, UNIX_TIMESTAMP(kuupaev) AS aeg FROM uudised WHERE tyyp=$_REQUEST[kategooria] ORDER BY kuupaev DESC LIMIT $naita_alates, $limiit";

$vastus=mysql_query($lause);while($rida=mysql_fetch_array($vastus)){

//echo '<br>['.date("d-m-Y", $rida[kuupaev]).'] '.$rida[pealkiri].'';echo

'<br>['.substr($rida[kuupaev],8,2).'-'.substr($rida[kuupaev],5,2).'-'.substr($rida[kuupaev],0,4).'] '.'<a href="uudised.php?id='.$rida[id].'">'.$rida[pealkiri].'</a>';

}

/* KUI LEHELE TULLAKSE ILMA ATRIBUUTIDETA */

}else if(!isset($_REQUEST[id]) || !isset($_REQUEST[kategooria])){$limiit=U_INTRO+U_PEALKIRI;$loendur=0;

$lause = "SELECT *, UNIX_TIMESTAMP(kuupaev) AS aeg FROM uudised ORDER BY kuupaev DESC LIMIT $limiit";

38

Page 39: Veebiportaal Liiklus€¦ · Liiklus.net on veebiportaal, mis koondab enda alla erineva liiklusalase info. Esmaseks komponendiks on autode andmebaas, mille kirjed sisaldavad kasutajate

echo '<table border=0 width=500 align=center><tr><td>';

$vastus=mysql_query($lause);while($rida=mysql_fetch_array($vastus)){

$loendur++;if($loendur<=5){

echo '<div align=right class="pisidate">'.strftime('%d.%m.%Y %H:%M', $rida[aeg]).'</div></td></tr>';

echo '<tr><td>';echo '<table class=raamiga border=0 cellspacing=3 width=498 cellpadding=1

align=center><tr>';echo '<th class="pealkiri"

align=left><h2>'.$rida[pealkiri].'</h2></th></tr>';echo '<tr><td>';

if ($rida[pildiurl] != ''){if ($rida[suurepildiurl] != ''){

echo '<a href="'.$rida[suurepildiurl].'" target=_blank><img src="'.$rida[pildiurl].'" align="right" alt="'.$rida[pealkiri].'" border=1></a>';

}else{echo '<img src="'.$rida[pildiurl].'" align="right"

alt="'.$rida[pealkiri].'">';}

}echo '<p>'.$rida[intro].'</p>';

echo '<p><a href="uudised.php?id='.$rida[id].'">Loe edasi</a></p>';echo '</td></tr></table>';

}else{echo '<br><a href="uudised.php?id='.$rida[id].'">'.$rida[pealkiri].'</a>';

}}

echo '</td></tr></table>';}

mysql_close();

include "footer.php";?>

16.14.Fail: wap.php<?php include ("header.php");

echo '<h1>WAP</h1>

Liiklus.net WAP-keskkond on mobiiltelefoni kaudu saadaval aadressil <br><a href="http://wap.liiklus.net">wap.liiklus.net</a>

<br><br>WAPis nähtav Maanteeameti teedeinfo, autode must nimekiri ning uudised.';

include ("footer.php");?>

16.15.Fail: varastatud.php<?php include ("header.php");

echo '<h1>Tagaotsitavad sõidukid</h1>';

if(!isset($_REQUEST[paring]) && (!isset($_REQUEST[oigusorg])) && (!isset($_REQUEST[page]))){echo '

<!--form name="bycarform" action="http://www.pol.ee/webinfo/bytr_search.php" method="post"--><form name="bycarform" action="'.$PHP_SELF.'" method="post"><table border="0" cellspacing="2" cellpadding="2"><tr> <td colspan=2>Reg. nr.:</td>

39

Page 40: Veebiportaal Liiklus€¦ · Liiklus.net on veebiportaal, mis koondab enda alla erineva liiklusalase info. Esmaseks komponendiks on autode andmebaas, mille kirjed sisaldavad kasutajate

<td><input type="text" name="regmark" maxlength="8"></td></tr><tr> <td colspan=2>S&otilde;iduki mark:</td> <td><input type="text" name="mark" maxlength="15"></td></tr><tr> <td colspan=2>Mudel ja modifikatsioon:</td> <td><input type="text" name="mudel" maxlength="20"></td></tr><tr> <td>Kere nr.:

<td><INPUT type="radio" name="kn_select_type" value="0" checked>sisaldab</td> <td rowspan=2><input type="text" name="kerenr" size="20" maxlength="20"><br></td></tr><tr><td>&nbsp;</td><td><INPUT type="radio" name="kn_select_type" value="1">algab</td><td>&nbsp;</td></tr><tr> <td colspan=2>S&otilde;iduki liik:</td>

<td> <select name="liik"> <OPTION value="" selected>(kõik)</option><option value="2">buss</option><option value="30">ekskavaator</option><option value="3">haagis</option><option value="4">hobuveok</option><option value="15">jaht</option><option value="5">jalgratas</option>

<option value="27">jet</option><option value="20">kaater</option><option value="26">kaubik</option><option value="29">kraana</option><!--option value="19">kummipaat</option--><!--option value="12">laev</option--><!--option value="13">lennuk</option--><option value="8">madelauto, veoauto</option><option value="33">mahtuniversaal</option>

<option value="28">metsaveok</option><option value="24">mootorpaat</option><option value="6">mootorratas</option><option value="11">mopeed</option><option value="17">muu sõiduk</option><option value="25">omaehitatud sõiduk</option><option value="14">paat</option><option value="22">roller</option><!--option value="16">rong</option-->

<option value="32">sadulveok</option><option value="31">sihtotstarbeline</option><option value="21">skuuter</option><option value="1">sõiduauto</option><option value="7">traktor</option><!--option value="9">tramm</option--><option value="23">treiler</option><!--option value="10">troll</option--><option value="18">tundmatu sõiduk</option>

</select></td></tr><tr> <td colspan=2>V&auml;rvus:</td> <td> <select name="varv"> <option value="" selected>(kõik)</option><option value="28">beez</option><option value="11">hall</option><option value="13">hallikasroheline</option>

<option value="21">helebeez</option><option value="10">helehall</option><option value="50">helekollane</option>

40

Page 41: Veebiportaal Liiklus€¦ · Liiklus.net on veebiportaal, mis koondab enda alla erineva liiklusalase info. Esmaseks komponendiks on autode andmebaas, mille kirjed sisaldavad kasutajate

<option value="84">helelilla</option><option value="46">heleoranž</option><option value="20">helepruun</option><option value="30">helepunane</option><option value="60">heleroheline</option><option value="70">helesinine</option>

<option value="91">hõbedane</option><option value="55">kollane</option><option value="95">kuldne</option><option value="83">lilla</option><option value="99">must</option><option value="56">ooker</option><option value="44">oranz</option><option value="22">pruun</option><option value="40">punakasoranž</option>

<option value="31">punakaspruun</option><option value="33">punane</option><option value="67">rohekaskollane</option><option value="66">roheline</option><option value="93">roosa</option><option value="12">sinakashall</option><option value="78">sinakasroheline</option><option value="77">sinine</option><option value="200">teadmata</option>

<option value="19">tumehall</option><option value="59">tumekollane</option><option value="29">tumepruun</option><option value="39">tumepunane</option><option value="69">tumeroheline</option><option value="79">tumesinine</option><option value="0">valge</option><option value="85">violett</option></select></td>

</tr><tr> <td colspan=2>&nbsp;</td> <td><input type="hidden" name="paring" value="1"></td></tr><tr> <td>&nbsp;</td> <td><input type="submit" name="enter" value="Saada p&auml;ring" style="nupp"></td>

<td><input type="reset" name="clear" value="Puhasta" style="nupp"></td></tr></table></form>

<script language="JavaScript" type="text/javascript"> document.bycarform.regmark.focus();</script>';

}else if((isset($_REQUEST[paring])) || (isset($_REQUEST[page]))){$sisu =

fopen('http://www.pol.ee/webinfo/bytr_search.php?regmark='.$_REQUEST[regmark].'&mark='.$_REQUEST[mark].'&mudel='.$_REQUEST[mudel].'&kn_select_type='.$_REQUEST[kn_select_type].'&kerenr='.$_REQUEST[kerenr].'&liik='.$_REQUEST[liik].'&varv='.$_REQUEST[varv].'&sortname='.$_REQUEST[sortname].'&sort_direct='.$_REQUEST[sort_direct].'&page='.$_REQUEST[page].'', "r");

echo 'http://www.pol.ee/webinfo/bytr_search.php?regmark='.$_REQUEST[regmark].'&mark='.$_REQUEST[mark].'&mudel='.$_REQUEST[mudel].'&kn_select_type='.$_REQUEST[kn_select_type].'&kerenr='.$_REQUEST[kerenr].'&liik='.$_REQUEST[liik].'&varv='.$_REQUEST[varv].'&sortname='.$_REQUEST[sortname].'&sort_direct='.$_REQUEST[sort_direct].'&page='.$_REQUEST[page].'';

$asjad = '';while (!feof($sisu)){

$tykid .= fread($sisu, 8192);}fclose($sisu);

$tykid=str_replace("Images","http://www.pol.ee/webinfo/Images",$tykid);$tykid=str_replace("<img

src=\"http://www.pol.ee/webinfo/Images/footer1.gif\">","&nbsp;",$tykid);$tykid=str_replace("kontakt.php","varastatud.php",$tykid);

41

Page 42: Veebiportaal Liiklus€¦ · Liiklus.net on veebiportaal, mis koondab enda alla erineva liiklusalase info. Esmaseks komponendiks on autode andmebaas, mille kirjed sisaldavad kasutajate

$tykid=str_replace("<table>", "<table width=600>",$tykid);$tykid=str_replace("<br>Tagaotsitavad s&otilde;idukid<p>","&nbsp;",$tykid);$tykid=str_replace("meile abi olla palume teatada tagaotsivale asutusele.",

"s&otilde;iduki tabamisel abi olla, palume teatada Politseiameti tagaotsivale asutusele.",$tykid);

echo (strip_tags($tykid, "<p><b><i><u><a><br><table><tr><td><img>"));

echo '<br><br><a href="varastatud.php">Tagasi</a>';

}else if (isset($_REQUEST[oigusorg])){$sisu = fopen("http://www.pol.ee/webinfo/kontakt.php?oigusorg=$_REQUEST[oigusorg]",

"r");

$asjad = '';while (!feof($sisu)){

$tykid .= fread($sisu, 8192);}fclose($sisu);

$tykid=str_replace("Kontaktandmed","<B>Kontaktandmed</B>",$tykid);$tykid=str_replace("Images","http://www.pol.ee/webinfo/Images",$tykid);$tykid=str_replace("<img

src=\"http://www.pol.ee/webinfo/Images/footer1.gif\">","",$tykid);$tykid=str_replace("Tagasi...","Tagasi",$tykid);

echo (strip_tags($tykid, "<p><b><i><u><a><br><table><tr><td><img>"));}

include ("footer.php");?>

16.16.Fail: vorm.php

<?php

include ("header.php");

$ip=$_SERVER["REMOTE_ADDR"];

$aasta=date("Y");$kuu=date("m");$paev=date("j");$tund=date("H");$minut=date("i");

$kuud = array( "01" => "jaanuar", "02" => "veebruar", "03" => "märts", "04" => "aprill", "05" => "mai", "06" => "juuni", "07" => "juuli", "08" => "august", "09" => "september", "10" => "oktoober", "11" => "november", "12" => "detsember");

echo "<h1>Sündmuse lisamine</h1><form action='lisamine.php' method='post' enctype='multipart/form-data'><table border=0><tr><td colspan=2><b>Auto</b></td></tr>

<tr><td valign=top>Reg. nr.:</td><td><input type='text' name='regnr' maxlength='9'/><BR>

<font size=1><i>Näide: 123ABC, andmbebaasis ainult Eesti registreerimismärgid.<br>Ära kasuta tühikut, kirjuta suurte tähtedega!</i></font>

</tr>

<tr><td>Mark:</td><td><input type='text' name='mark' /></tr>

<tr><td>Mudel:</td><td><input type='text' name='mudel' maxlength='30'/>

42

Page 43: Veebiportaal Liiklus€¦ · Liiklus.net on veebiportaal, mis koondab enda alla erineva liiklusalase info. Esmaseks komponendiks on autode andmebaas, mille kirjed sisaldavad kasutajate

</tr>

<tr><td>Värv:</td><td><input type='text' name='varv' maxlength='30'/></tr>

<tr><td colspan=2>&nbsp;</td></tr>

<tr><td colspan=2><b>Aeg & koht</b><br><font size=1><i>Ole võimalikult täpne!</i></font></td></tr>

<tr><td>Aeg:</td><td><SELECT name='sel_paev'>";

foreach (range (1, 31) as $paevanr) {echo "<option";if ($paev == $paevanr) echo " selected='selected'";echo " >$paevanr</OPTION>\n";}echo "</select>";

echo "<select name='sel_kuu'>";

// Nii see jama siin valib nimekirjast õige kuu!

foreach ($kuud as $nr => $kuunimi ) {echo "<option";if ($kuu == $nr) echo " selected='selected'";echo " value='$nr'>$kuunimi</OPTION>\n";}echo "</select>\n";

echo"<select name='sel_aasta'>";

foreach (range (2004, $aasta) as $aastanr) {echo "<option";if ($aasta == $aastanr) echo " selected='selected'";echo ">$aastanr</OPTION>\n";}echo "</select>";

echo "&nbsp;<input name='sel_tund' type='text' value='$tund' size='1' maxlength='2'>:<input name='sel_minut' type='text' value='$minut' size='1' maxlength='2'></td></tr>

<tr><td>Koht:</td><td><input type='text' name='koht' maxlength='50' /></td></tr>

<tr><td colspan=2>&nbsp;</td></tr>

<tr><td colspan=2><b>Lisaja</b></td></tr>

<tr><td>Nimi:</td><td><input type='text' name='nimi' maxlength='50' /> </td></tr>

<tr><td>Email:</td><td><input type='text' name='email' maxlength='50' /> </td></tr>

<tr><td>IP:</td><td><input type='hidden' name='ip' value='$ip'>$ip</td>

43

Page 44: Veebiportaal Liiklus€¦ · Liiklus.net on veebiportaal, mis koondab enda alla erineva liiklusalase info. Esmaseks komponendiks on autode andmebaas, mille kirjed sisaldavad kasutajate

</tr>

<tr><td colspan=2>&nbsp;</td></tr>

<tr><td colspan=2><b>Kommentaar</b></td></tr>

<tr><td valign='top'>Sündmus:</td><td><textarea name='text' cols='25' rows='5'></textarea></td></tr>

<tr><td>Tüüp:</td><td><select name='tyyp'><option value='1'>Positiivne</option><option value='2' selected='selected'>Neutraalne</option><option value='3'>Negatiivne</option></select></td></tr>

<tr><td colspan=2>&nbsp;</td></tr>

<tr><td colspan=2><b>Pilt</b></td></tr>

<tr><td>Pildi URL:</td><td><input type='text' name='pildiurl' maxlength='256' value='http://' /></td></tr>

<tr><td><b><i>või</i></b></td><td>&nbsp;</td></tr>

<tr><td valign=top>Pilt arvutist:</td><td><input type='file' name='pildifail' value='' /><br>

<font size=1><i>Pilt taandatakse serveris suurusele 480x320 pikslit. <br>Maksimaalne laaditava faili suurus 8MB.<br>Suurte piltide laadimine võib aega võtta.</i></font></td></tr>

<tr><td>&nbsp;</td><td>&nbsp;</td></tr>

<tr><td valign='top'>&nbsp;</td><td><input type='submit' value='Saada'>&nbsp;<input value='Katkesta' type='reset' onClick='history.go(-1)'></td></tr></table></form>";

include ("footer.php");?>

16.17.Fail: wap / index.wml

<?xml version="1.0" encoding="iso-8859-1"?><!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN""http://www.wapforum.org/DTD/wml_1.1.xml">

<wml>

44

Page 45: Veebiportaal Liiklus€¦ · Liiklus.net on veebiportaal, mis koondab enda alla erineva liiklusalase info. Esmaseks komponendiks on autode andmebaas, mille kirjed sisaldavad kasutajate

<card title="wap.liiklus.net">

<p align="center"> <img src="logo.gif" alt="Liiklus.net"/><br/> <a href="w_info.php">Teedeinfo</a><br/> <a href="w_uudis.php">Uudised</a><br/> <a href="w_auto.php">Autod</a><br/> <a href="w_lisa.php">Lisa auto</a><br/> </p>

</card></wml>

16.18.Fail: wap / w_auto.php

<?phpheader("Content-type: text/vnd.wap.wml");echo '<?xml version="1.0" encoding="iso-8859-1"?><!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN""http://www.wapforum.org/DTD/wml_1.1.xml"><wml>

<card id="auto1" title="Päring"><p><a href="index.wml">Tagasi</a></p>

<p>Regnr: <input name="auto" size="15"/></p><p><small>Vähemalt 3 tähemärki</small></p><p><select name="db">

<option value="1">Liiklus.net</option><option value="2">Varastatud</option>

</select></p><anchor title="Saada">Saada<go href="w_auto2.php" method="post">

<postfield name="regnr" value="$(auto)"/><postfield name="db" value="$(db)"/>

</go></anchor><!--do type="accept" label="Saada">

<go href="w_auto2.php" method="post"><postfield name="regnr" value="$(auto)"/>

</go></do-->

</card></wml>';?>

16.19.Fail: wap / w_auto2.php

<?xml version="1.0" encoding="iso-8859-1"?><!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN""http://www.wapforum.org/DTD/wml_1.1.xml"> <wml><card title="Vastus">';

if(isset($_REQUEST[regnr]) && eregi("^[a-zA-Z0-9]{3,}$", $_REQUEST[regnr])){$korras = true;

}else if((!isset($_REQUEST[regnr])) || (!eregi("^[a-zA-Z0-9]{2,8}$", $_REQUEST[regnr]))){echo '<p>Sisestatud number on vigane või puudub!</p>';$korras = false;

}

if($_REQUEST[db] == 1 && $korras){

echo '<p>Päringu "'.$_REQUEST[regnr].'" tulemus:</p>';

mysql_connect("localhost", "liiklusn_liiklus", "liiklus");mysql_select_db("liiklusn_liiklus");

$lause="SELECT regnr FROM auto WHERE regnr LIKE '%$_REQUEST[regnr]%' GROUP BY regnr";

45

Page 46: Veebiportaal Liiklus€¦ · Liiklus.net on veebiportaal, mis koondab enda alla erineva liiklusalase info. Esmaseks komponendiks on autode andmebaas, mille kirjed sisaldavad kasutajate

$vastus=mysql_query($lause);

while($rida=mysql_fetch_array($vastus)){echo '<p><a href="w_auto3.wml?regnr='.$rida[regnr].'">'.$rida[regnr].'</a></p>';

}

} else if ($_REQUEST[db] == 2 && $korras){$sisu = fopen('http://www.pol.ee/webinfo/bytr_search.php?regmark='.$_REQUEST[regnr],

"r");

$asjad = '';while (!feof($sisu)){

$tykid .= fread($sisu, 8192);}fclose($sisu);

$tykid=strip_tags($tykid, "<td>");$tykid=split("<td", $tykid);

$kuni = count($tykid);

echo '<p>';

for($i=9; $i<$kuni; $i++){$tykid[$i] = str_replace ("nowrap", "", $tykid[$i]);$tykid[$i] = str_replace ("</td>", "", $tykid[$i]);$tykid[$i] = str_replace (">", "", $tykid[$i]);

echo $tykid[$i].'<br/>';

if ($i/8 == (int)($i/8)){echo '</p><p>';

}}echo '</p>';

} else {echo "<p>VIGA: Liiga vähe parameetreid!</p>";

}

echo '<p><a href="index.wml">Tagasi</a></p></card></wml>';?>

16.20.Fail: wap / w_info.php

<?phpheader("Content-type: text/vnd.wap.wml");echo '<?xml version="1.0" encoding="windows-1252"?><!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN""http://www.wapforum.org/DTD/wml_1.1.xml"><wml><card title="Teedeinfo"><p><a href="index.wml">Tagasi</a></p>

<p>';

$body = fopen("http://amet.mnt.ee/maanteeinfo/soidutingimused/op_info/tekst.htm", "r");$asjad = '';while (!feof($body)){

$asjad .= fread($body, 8192);}fclose($body);

$asjad = strip_tags($asjad, "<b><i><u><br>");$asjad = str_replace("<br>", "<br />", $asjad);echo $asjad;

echo '</p><p><a href="index.wml">Tagasi</a></p></card></wml>';

46

Page 47: Veebiportaal Liiklus€¦ · Liiklus.net on veebiportaal, mis koondab enda alla erineva liiklusalase info. Esmaseks komponendiks on autode andmebaas, mille kirjed sisaldavad kasutajate

16.21.Fail: wap / w_lisa.php

<?phpheader("Content-type: text/vnd.wap.wml");echo '<?xml version="1.0" encoding="iso-8859-1"?><!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN""http://www.wapforum.org/DTD/wml_1.1.xml"><wml>

<card id="lisa1" title="Lisa kirje">

<small><p>Tärniga väljad on kohustuslikud!</p><p>Regnr*: <input name="regnr" size="15"/></p><p>Mark: <input name="mark" size="15"/></p><p>Mudel: <input name="mudel" size="15"/></p><p>Värvus: <input name="varv" size="15"/></p><p>Aeg*: <input name="kuupaev" size="15" value="'.date("j.m.Y H:m").'"/></p><p>Koht*: <input name="koht" size="15"/></p><p>Sündmus*: <input name="syndmus" size="15"/></p><p><select name="kommentaar">

<option value="2" checked="checked">Neutraalne</option><option value="1">Positiivne</option><option value="3">Negatiivne</option></select>

</p><p>Lisaja: <input name="nimi" size="15"/></p></small>

<anchor title="Saada">Saada<go href="w_lisa2.php" method="post"><postfield name="regnr" value="$(regnr)"/><postfield name="mark" value="$(auto)"/><postfield name="mudel" value="$(mudel)"/><postfield name="varv" value="$(varv)"/><postfield name="kuupaev" value="$(kuupaev)"/><postfield name="koht" value="$(koht)"/><postfield name="syndmus" value="$(syndmus)"/><postfield name="kommentaar" value="$(kommentaar)"/><postfield name="nimi" value="$(nimi)"/>

</go></anchor>

<p><a href="index.wml">Tagasi</a></p>

</card></wml>';?>

16.22.Fail: wap / w_lisa2.php

<?phpheader("Content-type: text/vnd.wap.wml");echo '<?xml version="1.0" encoding="iso-8859-1"?><!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN""http://www.wapforum.org/DTD/wml_1.1.xml"><wml>

<card id="lisa2" title="Kirje lisamine">';

define (POSTSEK, 20);

mysql_connect("localhost", "liiklusn_liiklus", "liiklus");mysql_select_db("liiklusn_liiklus");

/* VIIMASEST LISATUD KIRJEST LIIGA VÄHE AEGA MÖÖDAS */

$lause="SELECT id FROM auto WHERE UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(postaeg) < ".POSTSEK;$vastus=mysql_query($lause);$ridu=mysql_num_rows($vastus);

47

Page 48: Veebiportaal Liiklus€¦ · Liiklus.net on veebiportaal, mis koondab enda alla erineva liiklusalase info. Esmaseks komponendiks on autode andmebaas, mille kirjed sisaldavad kasutajate

if ($ridu > 0 && $_REQUEST[ip] == $_SERVER["REMOTE_ADDR"]){echo '<b><font color="red">VIGA: Eelmisest sisestatud kirjest on möödas alla '.POSTSEK.'

sekundi.<br><br>';if(!$viga) $viga=TRUE;

/* REGISTREERIMISNUMBER JA/VÕI SÜNDMUSE KIRJELDUS PUUDU */

}if ($regnr == '' || $_REQUEST[text] == '' || $_REQUEST[koht] == ''){$korras = FALSE;echo '<b><font color="red">VIGA: Registreerimisnumber, koht ja/või sündmuse kirjeldus

puudub!<br><br>';if(!$viga) $viga=TRUE;

/* REGISTREERIMISNUMBER EI VASTA NÕUETELE */

}if (!eregi("^[a-zA-Z0-9]{2,9}$", $regnr) && $regnr!=''){echo '<b><font color="red">VIGA: Registreerimisnumber "'.$regnr.'" ei vasta

nõuetele!<br><br>';if(!$viga) $viga=TRUE;

/* TULEVIKKU JÄÄV KIRJE */

}if ($sel_aeg > date("Y-m-d H:i:s")){echo '<b><font color="red">VIGA: Kuna veel pole avastatud piisavalt usaldusväärset

tuleviku ennustamise meetodit, siis tulevikku jäävaid kirjeid lisada ei saa!<br><br>';if(!$viga) $viga=TRUE;

/* KÕIK KORRAS! */

}if (!$viga){$korras = TRUE;

$lause="SELECT * FROM auto WHERE ip=$ip AND kuupaev=";

if(!isset($pildiaadress)) $pildiaadress = $_REQUEST[pildiurl];

$lause="INSERT INTO auto (regnr, mark, mudel, varv, aeg, koht, nimi, email, postaeg, IP, text, tyyp, picurl) VALUES ('$regnr', '$_REQUEST[mark]', '$_REQUEST[mudel]', '$_REQUEST[varv]', '$sel_aeg', '$_REQUEST[koht]', '$_REQUEST[nimi]', '$_REQUEST[email]', '$kell', '$_REQUEST[ip]', '$_REQUEST[text]', '$_REQUEST[tyyp]', '$pildiaadress')"; mysql_query($lause);

echo mysql_error(); // teade vea puhul$idnumber=mysql_insert_id(); echo "<B>Teie sissekanne on edukalt salvestatud.</B><P><table border=0 cellspacing=3 cellpadding=1><tr><td>Reg.

nr.:</td><td>$_REQUEST[regnr]</td></tr><tr><td>Mark:</td><td>$_REQUEST[mark]</td></tr><tr><td>Mudel:</td><td>$_REQUEST[mudel]</td></tr><tr><td>Värv:</td><td>$_REQUEST[varv]</td></tr><tr><td>Aeg:</td><td>$sel_aeg</td></tr><tr><td>Koht:</td><td>$_REQUEST[koht]</td></tr><tr><td>Nimi:</td><td>$_REQUEST[nimi]</td></tr><tr><td>Email:</td><td><a href='mailto:$email'>$email</a></td></tr><tr><td>Postaeg:</td><td>$kell</td></tr><tr><td>IP:</td><td>$_REQUEST[ip]</td></tr><tr><td>Tekst:</td><td>$_REQUEST[text]</td></tr><tr><td>Tüüp:</td><td>$_REQUEST[tyyp]</td></tr><tr><td valign='top'>Pilt:</td><td><a href='$pildiaadress'>$pildiaadress</a><br><br><img

src='$pildiaadress' alt='$failinimi'></td></tr></table>";

mysql_close();}

<p><a href="index.wml">Tagasi</a></p>

</card></wml>';?>

48

Page 49: Veebiportaal Liiklus€¦ · Liiklus.net on veebiportaal, mis koondab enda alla erineva liiklusalase info. Esmaseks komponendiks on autode andmebaas, mille kirjed sisaldavad kasutajate

16.23.Fail: wap / w_uudis.php

<?phpheader("Content-type: text/vnd.wap.wml");echo '<?xml version="1.0" encoding="windows-1252"?><!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN""http://www.wapforum.org/DTD/wml_1.1.xml"><wml><card id="uudis-1" title="Uudised">';

define ("U_LEHEL", 10); //Mitu uudist kategoorialeheküljel? (WAP default: 10)

if(isset($_REQUEST[leht])){$leht = $_REQUEST[leht];

}else{$leht = 0;

}

mysql_connect ("localhost", "liiklusn_liiklus", "liiklus");mysql_select_db ("liiklusn_liiklus");

$lause = "SELECT COUNT(*) AS kogus FROM uudised";$vastus=mysql_query($lause);$rida=mysql_fetch_array($vastus);$lehti=ceil($rida[kogus]/ U_LEHEL);

$limiit=U_LEHEL;$alates=U_LEHEL*$leht;

$lause = "SELECT *, UNIX_TIMESTAMP(kuupaev) AS aeg FROM uudised ORDER BY kuupaev DESC LIMIT $alates, $limiit";

$vastus=mysql_query($lause);while($rida=mysql_fetch_array($vastus)){

echo '<p><a href="w_uudis2.php?id='.$rida[id].'">'.$rida[pealkiri].'</a> ('.substr($rida[kuupaev],8,2).'.'.substr($rida[kuupaev],5,2).'.'.substr($rida[kuupaev],0,4).')<br /></p>';

}

$leht_parem = $leht+1;

if ($leht+1 > 1) {$leht_vasak = $leht-1;echo '<p><a href="w_uudis.php?leht='.$leht_vasak.'">&lt;&lt;Uuemad</a></p>'; }

if ($lehti > $leht+1) echo '<p><a href="w_uudis.php?leht='.$leht_parem.'">Vanemad&gt;&gt;</a></p>';

echo '<p><a href="index.wml">Esilehele</a></p>

</card></wml>';

mysql_close();

?>

16.24.Fail: wap / w_uudis2.php

<?phpheader("Content-type: text/vnd.wap.wml");echo '<?xml version="1.0" encoding="windows-1252"?><!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN""http://www.wapforum.org/DTD/wml_1.1.xml">

49

Page 50: Veebiportaal Liiklus€¦ · Liiklus.net on veebiportaal, mis koondab enda alla erineva liiklusalase info. Esmaseks komponendiks on autode andmebaas, mille kirjed sisaldavad kasutajate

<wml><card id="uudis-2" title="Uudised">';

mysql_connect ("localhost", "liiklusn_liiklus", "liiklus");mysql_select_db ("liiklusn_liiklus");

$lause = "SELECT *, UNIX_TIMESTAMP(kuupaev) AS aeg FROM uudised WHERE id=$_REQUEST[id]";$vastus=mysql_query($lause);

while($rida=mysql_fetch_array($vastus)){

echo '<p>'.$rida[pealkiri].'</p>';echo '<p>'.strftime('%d.%m.%Y %H:%M', $rida[aeg]).'</p>';echo '<p>&nbsp;</p>';echo '<p>'.$rida[intro].'</p>';echo '<p>'.$rida[tekst].'</p>';

if ($rida[allikas] != ''){echo '<p>Allikas: '.$rida[allikas].'</p>';

}

}

echo '<p><a href="index.wml">Tagasi</a></p></card></wml>';

mysql_close();

?>

50