Professional Documents
Culture Documents
Razvoj Aplikacija Za Web
Razvoj Aplikacija Za Web
Većina jezika koji se koriste u web programiranju (PHP, JavaScript, ASP i drugi) su
podskup skriptnih jezika za koje je karakteristično da se program ne čuva u izvršnoj
(executable) datoteci (koja je prevedena samo jednom), već se prevođenje naredbi
obavlja pri svakom izvršavanju programa.
klijent server
Klijent (korisnikov web pretraživač) šalje zahtev, recimo adresu neke stranice, a server
isporučuje odgovor, koji sadrži HTML kod tražene stranice (i zajedno sa njim binarne
datoteke: slike, video, ...), što će klijent interpretirati i prikazati korisniku kao web
stranicu.
4/84
Razvoj aplikacija za WEB. Skripte za server – klijent okruženje.
Komunikacija između servera i klijenta odvija se putem HTTP protokola, koji se sastoji
od HTTP zahteva i odgovora.
klijent server
5/84
Razvoj aplikacija za WEB. Skripte za server – klijent okruženje.
Statičke HTML stranice
Sa statičkim HTML stranicama, web stranica će uvek biti ista, a mogućnosti joj se
svode na prikazivanje teksta i slika, pri čemu je moguće povezivanje, preko linkova, sa
drugim stranicama.
Kad stigne zahtev, zajedno s HTML kodom se šalju klijentu, a na klijentu se izvršavaju
kad budu pozvane (nakon što se stranica učita u pregledač, kad korisnik klikne na
dugme i slično).
Klijentske skripte omogućavaju veliko proširenje mogućnosti web stranica, od kojih je
najkorisnije prikazivanje prozora sa porukama, trenutno prikazivanje i skrivanje
određenih delova na stranici i drugi dinamični vizualni efekti (promena slike pri
prelasku mišem i slično).
6/84
Razvoj aplikacija za WEB. Skripte za server – klijent okruženje.
Serverske skripte, kao i klijentske, nalaze se na serveru i mogu biti ubačene u HTML
kod, ili se mogu nalaziti u zasebnim datotekama.
Kad stigne zahtev od klijenta, skripta se izvršava na serveru, a kao rezultat izvršavanja
dobija se HTML kod koji se šalje klijentu.
Klijentske i serverske skripte nisu alternativa jedno drugom, odnosno, većinu stvari
koje se mogu postići jednim načinom programiranja ne može se postići drugim pa ih je
najbolje koristiti u kombinaciji.
Glavni klijentski skriptni jezik je JavaScript (čija je sintaksa slična programskim jezicima
C i Java), koji je podržan u najvećem broju web pretraživača.
Uz njega postoje još JScript (Microsoftova verzija JavaScripta) i VBScript (skriptni jezik
sa sintaksom sličnom programskom jeziku Visual Basic, takođe Microsoftov).
Razvoj aplikacija za WEB. Skripte za server – klijent okruženje. 9/84
AJAX (Asynchronous JavaScript and XML) je tehnologija koja kombinuje pisanje skripti
za klijenta i servera.
Na određenu korisnikovu akciju klijentska skripta šalje pozadinski zahtev skripti na
serveru koja obavlja preuzimanje podataka iz baze podataka i šalje ih korisnikovom
pretraživaču, bez osvežavanja cele stranice.
Upotrebom tehnologije AJAX web aplikacije postaju brže i imaju bolje korisničko
okruženje od aplikacija koje se zasnivaju samo na serverskim tehnologijama.
Razvoj aplikacija za WEB. PHP i ostale serverske tehnologije. 10/84
Najčešći način instalacije PHP-a je u sklopu tzv. LAMP platforme (Linux, Apache,
MySQL i PHP). Web server Apache prima HTTP zahtev, i ako željena stranica ima
nastavak .php (ili neki od drugih nastavaka koji su podešeni na serveru), poziva
izvršno okruženje PHP-a, koje prevodi i izvršava PHP naredbe.
Ukoliko skripta treba učita neke podatke iz baze podataka, bazi se postavljaju upiti iz
PHP-a.
Taj HTML kod se unutar HTTP odgovora šalje, nazad, klijentu i podaci se prikazuju u
korisnikovom web pretraživaču.
Razvoj aplikacija za WEB. PHP i ostale serverske tehnologije. 12/84
http zahtev
INTERNET
http odgovor web server Izvršno MySQL baza
okruženje podataka
PHP – a
klijent server
Razvoj aplikacija za WEB. PHP i ostale serverske tehnologije. 13/84
Perl je skriptni jezik UNIX sistema, i to jedan od prvih s kojima je započeo razvoj web
aplikacija – ima velike mogućnosti, a njegov razvoj i dalje traje pa se i danas koristi za
razvoj web aplikacija.
PHP naredbe najčešće se nalaze umetnute unutar HTML koda zajedno s HTML
oznakama.
Da bi ih PHP prevodilac mogao prepoznati, moraju se nalaziti unutar posebnih oznaka.
Najčešći i preporučeni način pisanja PHP oznaka je:
<?php
…
?>
Svaka PHP naredba mora završiti sa znakom tačka-zarez (;), inače će se prilikom
izvršavanja javiti greška sintakse .
<?php
echo "Dobar dan";
?>
Razvoj aplikacija za WEB. Osnove PHP sintakse. 17/84
<?php <?php
// naredba koja ispisuje tekst /* naredba koja
echo "Dobar dan"; ispisuje tekst*/
?> echo "Dobar dan";
?>
Razvoj aplikacija za WEB. Promenljive i operacije nad njima. 18/84
Vrednosti koje se čuvaju u promenljivima mogu biti različitog tipa podataka, što znači
da mogu biti tekstualne, brojčane, logičke ili nekog drugog tipa.
objekat – složeni tip podatka koji predstavlja objekat iz stvarnog sveta (može
sadržavati podatke jednostavnog tipa ali i funkcije).
resource – vrednost koju vraća neka funkcija (na primer memorijska adresa,
datoteka, skup zapisa iz baze podataka),
ISPRAVNO NEISPRAVNO
$promenljiva promenljiva
$promenljiva1 $1promenljiva
$n_promenljiva $n promenljiva
$_promenljiva $p@romenljiva
<?php
define('Pi', 3.14);
?>
Pre imena konstante nije potrebno stavljati znak „$“.
Jednom kada se konstanta definiše, ona se u programu ne mož promeniti niti izbrisati.
Razvoj aplikacija za WEB. Pridruživanje vrednosti promenljivi. 23/84
<?php
$promenljiva=vrednost;
?>
= je znak pridruživanja.
<?php <?php
$prva="Web"; $prva=True;
$druga='Web'; $druga=FALSE;
$treca=1; ?>
$cetvrta=10.125; <?php
$peta=2.1e13; → 2.1*1013 $prva=$druga;
$sesta=0.5E-5; → 0.5*10-5 ?>
?>
Razvoj aplikacija za WEB. Aritmetički operatori. 24/84
<?php <?php
$x=$x+1; $x=$x-1;
?> ?>
<?php <?php
$x++; $x--;
?> ?>
Razvoj aplikacija za WEB. Aritmetički operatori. 26/84
<?php <?php
$str_1 = "Dobar"; $str_1 = "Dobar";
$str_2 = "dan"; $str_2 = "dan";
echo $str_1 . $str_2; echo $str_1." ".$str_2;
?> ?>
<?php
$x = 5; Rezultat: 5
echo $x;
?>
<?php
$x = 10;
echo "Uneti broj je ".$x. ". Ispis vrednosti";
?>
Rezultat: Uneti broj je 5. Ispis vrednosti
Razvoj aplikacija za WEB. Ispisivanje vrednosti. 29/84
U PHPu promenljiva se može direktno napisati unutar navodnika, a rezultat će biti isti
kao da je upotrebljen operator spajanja.
<?php
$x = 10;
echo "Uneti broj je $x. Ispis vrednosti";
?>
Rezultat: Uneti broj je 5. Ispis vrednosti
Razvoj aplikacija za WEB. Ispisivanje vrednosti. 30/84
Ali ako se promenljiva napiše unutar apostrofa, ispisaće se doslovni sadržaj stringa.
<?php
$x = 10;
echo 'Uneti broj je $x. Ispis vrednosti';
?>
<?php
$x = 10;
$y = 50;
echo "Spojeni brojevi: {$x}{$y}";
?>
Rezultat: Spojeni brojevi 1050
Razvoj aplikacija za WEB. Ispisivanje vrednosti. 32/84
Unutar navodnika moguće je ispisati i razne specijalne znakove, kao i same znakove "
ili $, navođenjem posebnog niza znakova.
<?php
$x = "Prvi red";
$y = "Drugi red";
echo "$x\n$y";
?>
Rezultat:
Prvi red
Drugi red
Razvoj aplikacija za WEB. Operatori poređenja, logički operatori i uslovne 34/84
strukture.
Operator Značenje Primer Rezultat
== Jednako $x==$y TRUE, ako je $x jednako $y
TRUE, ako je $x jednako $y i ako su
=== Identično $x===$y
$x i $y istog tipa podataka
!= $x!=$y
Nije jednako TRUE, ako je $x nije jednako $y
<> $x<>$y
TRUE, ako $x nije jednako $y ili ako
!== Nije identično $x!==$y
$x i $y nisu istog tipa podataka
< Manje $x<$y TRUE, ako je $x manje od $y
> Veće $x>$y TRUE, ako je $x veće od $y
<= Manje ili jednako $x<=$y TRUE, ako je $x manje ili jednako $y
>= Veće ili jednako $x>=$y TRUE, ako je $x veće ili jednako $y
Razvoj aplikacija za WEB. Operatori poređenja, logički operatori i uslovne 35/84
strukture.
strukture.
<?php
$x = 1;
$y = 7;
$x_str="1";
strukture.
strukture.
<?php
$x = TRUE;
$y = FALSE;
strukture.
Uslovne strukture.
If struktura
<?php <?php
if(<uslov>) if($a>$b)
{ {
naredba1; echo "a je vece od b.";
naredba2; }
} ?>
?>
Razvoj aplikacija za WEB. Operatori poređenja, logički operatori i uslovne 40/84
strukture.
Uslovne strukture.
if struktura
<?php <?php
if(<uslov>) if(<uslov>)
{ naredba1;
naredba1; ?>
naredba2;
}
?>
Razvoj aplikacija za WEB. Operatori poređenja, logički operatori i uslovne 41/84
strukture.
Uslovne strukture.
if - else struktura
<?php
if(<uslov>)
{
naredba1;
}
else
{
naredba2;
}
?>
Razvoj aplikacija za WEB. Operatori poređenja, logički operatori i uslovne 42/84
strukture.
<?php
Uslovne strukture. if(<uslov1>)
if - else – elseif struktura {
naredba1;
}
elseif(<uslov2>)
{
naredba2;
}
else
{
naredba3;
}
?>
Razvoj aplikacija za WEB. Operatori poređenja, logički operatori i uslovne 43/84
strukture.
<?php
Uslovne strukture. if($x>$y)
if - else – elseif struktura {
echo "x je vece od y";
}
elseif($x<$y)
{
echo "x je manje od y";
}
else
{
echo "x je jednako y";
}
?>
Razvoj aplikacija za WEB. Operatori poređenja, logički operatori i uslovne 44/84
strukture.
<?php
Uslovne strukture. switch (<izraz>)
switch struktura {
case vrednost1:
naredba1;
naredba2;
break;
case vrednost2:
naredba3;
naredba4;
break;
default:
naredba5;
naredba6;
}
?>
Razvoj aplikacija za WEB. Operatori poređenja, logički operatori i uslovne 45/84
strukture.
<?php
Uslovne strukture. switch ($a)
switch struktura {
case 0:
echo "a je jednako 0.";
break;
case 1:
echo "a je jednako 1.";
break;
case 2:
echo "a je jednako 2.";
break;
default:
echo "a nije ni 0 ni 1 ni 2";
}
?>
Razvoj aplikacija za WEB. Operatori poređenja, logički operatori i uslovne 46/84
strukture.
Uslovne strukture.
<?php
switch struktura switch ($a)
{
case 0:
case 1:
echo "a je jednako 0 ili 1.";
break;
case 2:
echo "a je jednako 2.";
break;
default:
echo "a nije ni 0 ni 1 ni 2";
}
?>
Razvoj aplikacija za WEB. Operatori poređenja, logički operatori i uslovne 47/84
strukture.
Uslovne strukture.
Ugneždena if struktura <?php
$padakisa=TRUE;
$travaraste=FALSE;
if($padakisa)
{
if($travaraste)
echo "Pada kisa, trava raste.";
else
echo "Pada kisa, trava ne raste.";
}
else
echo "Ne pada kisa.";
?>
Razvoj aplikacija za WEB. POLJA. 48/84
<?php
$predmeti=array("Matematika","Fizika","Racunarstvo",
"Uvod u programiranje", "Objektno
programiranje");
?>
Indeks Vrednost
0 Matematika
1 Fizika
2 Racunarstvo
3 Uvod u programiranje
4 Objektno programiranje
Razvoj aplikacija za WEB. POLJA. 50/84
<?php
echo $predmeti[2]; Rezultat:
?>
Indeks Vrednost
0 Matematika
1 Fizika
2 Racunarstvo
3 Uvod u programiranje
4 Objektno programiranje
Razvoj aplikacija za WEB. POLJA. Indeks Vrednost 51/84
0 Matematika
Formiranje polja (niza) 1 Fizika
Polje ne mora biti prethodno stvoreno pomoću 2 Racunarstvo
ključne riječi array. 3 Uvod u programiranje
<?php 4 Objektno programiranje
$predmeti[0]="Matematika";
$predmeti[1]="Fizika";
$predmeti[2]="Racunarstvo";
$predmeti[3]="Uvod u programiranje";
$predmeti[4]="Objektno programiranje";
?> Već stvoreno polje nema fiksnu veličinu, odnosno moguće mu je
kasnije pridodati proizvoljan broj članova.
<?php
$predmeti[5]="Vizuelno programiranje";
?>
Razvoj aplikacija za WEB. POLJA. 52/84
<?php
$espb=array("Matematika„ => 5,
"Fizika" => 6,
"Racunarstvo" => 7,
"Uvod u programiranje" => 6,
"Objektno programiranje" => 7);
?>
Razvoj aplikacija za WEB. POLJA. 53/84
<?php
echo $espb["Uvod u programiranje"];
?>
Rezultat:
Razvoj aplikacija za WEB. POLJA. 54/84
<?php
$espb["Uvod u programiranje"] = 6;
?>
Razvoj aplikacija za WEB. POLJA. 55/84
<?php
$xox["A"][2] = x;
?>
Razvoj aplikacija za WEB. POLJA. 59/84
<?php
$xox["A"][2] = x;
?>
Razvoj aplikacija za WEB. CIKLUSI. 60/84
Ciklusi su izrazi kojima se ostvaruje ponavljanje određene naredbe ili bloka naredbi.
<?php <?php
while(<uslov>) $i=0;
{ while($i<10)
naredba1; {
naredba2; echo $i . " ";
} $i++;
?> }
?>
Rezultat: 0 1 2 3 4 5 6 7 8 9
Razvoj aplikacija za WEB. CIKLUSI. 61/84
while ciklus.
<?php
<?php
$i=0;
do
do
{
{
naredba1;
echo $i . " ";
naredba2;
$i++;
}
}
while(<uslov>);
while($i<10);
?>
?>
Rezultat: 0 1 2 3 4 5 6 7 8 9
Razvoj aplikacija za WEB. CIKLUSI. 62/84
for ciklus.
<?php
for(<pocetni_izraz>;<uslov>;<pon_izraz>)
{
naredba1;
naredba2;
} <?php
?> for($i=0;$i<10;$i++)
{
echo $i . " ";
$i++;
}
?> Rezultat: 0 1 2 3 4 5 6 7 8 9
Razvoj aplikacija za WEB. CIKLUSI. 63/84
Indeks Vrednost
foreach ciklus. 0 Matematika
1 Fizika
2 Racunarstvo
Klasično 3 Uvod u programiranje
4 Objektno programiranje
<?php
$predmeti=array("Matematika","Fizika","Racunarstvo", "Uvod u
programiranje", "Objektno programiranje");
for ($i=0;$i<5;$i++)
{
echo $predmeti[$i]." ";
}
?>
Rezultat:
Matematika Fizika Racunarstvo Uvod u programiranje Objektno programiranje
Razvoj aplikacija za WEB. CIKLUSI. 64/84
foreach ciklus.
Ovaj ciklus obavlja naredbe unutar tela
<?php
ciklusa jednom za svakog člana polja (za
foreach($polje as $vrednost)
svaki element niza): $polje, a vrednost
{
trenutnog člana polja (elementa niza)
naredba1;
smešta se u promenljivu: $vrednost.
naredba2;
}
?>
<?php
foreach($polje as $kljuc =>$vrednost)
{
naredba1;
naredba2;
}
?> Za dobijanje ključa trenutnog člana.
Razvoj aplikacija za WEB. CIKLUSI. 65/84
Indeks Vrednost
foreach ciklus. 0 Matematika
1 Fizika
2 Racunarstvo
3 Uvod u programiranje
4 Objektno programiranje
<?php
$predmeti=array("Matematika","Fizika","Racunarstvo", "Uvod u
programiranje", "Objektno programiranje");
foreach($predmeti as $predmet)
{
echo $predmet." ";
}
?>
Rezultat:
Matematika Fizika Racunarstvo Uvod u programiranje Objektno programiranje
Razvoj aplikacija za WEB. CIKLUSI. 66/84
Indeks Vrednost
foreach ciklus. 0 Matematika
1 Fizika
2 Racunarstvo
3 Uvod u programiranje
4 Objektno programiranje
<?php
$predmeti=array("Matematika","Fizika","Racunarstvo", "Uvod u
programiranje", "Objektno programiranje");
foreach($predmeti as $predmet)
{
echo $predmet." ";
}
?>
Rezultat:
Matematika Fizika Racunarstvo Uvod u programiranje Objektno programiranje
Razvoj aplikacija za WEB. CIKLUSI. 67/84
Ključ Vrednost
foreach ciklus. Matematika 5
Fizika 6
Računarstvo 7
Uvod u programiranje 6
<?php Objektno programiranje 7
$espb=array("Matematika" => 5,
"Fizika" => 6,
"Racunarstvo" => 7,
"Uvod u programiranje" => 6,
"Objektno programiranje" => 7);
foreach($espb as $predmet=>$bod)
Matematika ESPB: 5
{ Fizika ESPB: 6
echo "$predmet ESPB: $bod </br>"; Racunarstvo ESPB: 7
} Uvod u programiranje ESPB: 6
?> Rezultat: Objektno programiranje ESPB: 7
Razvoj aplikacija za WEB. CIKLUSI. 68/84
Ugnježdeni ciklusi.
<?php
for($i=1; $i<4; $i++)
{
for($j=1; $j<=5; $j++)
{
echo "$i-$j ";
}
echo "<br />";
}
?>
Rezultat: 1-1 1-2 1-3 1-4 1-5
2-1 2-2 2-3 2-4 2-5
3-1 3-2 3-3 3-4 3-5
Razvoj aplikacija za WEB. POLJA. 69/84
<?php 0 1 2
$xox=array(array("O","X","O"),
array("O","X",""),
0 o x o
array("X","O","X")); 1 o x
for($i=0; $i<3; $i++)
{
2 x o x
for($j=0; $j<3; $j++)
{ Rezultat: O X O
O X
echo $xox[$i][$j]." "; X O X
}
echo "<br />";
}
?>
Razvoj aplikacija za WEB. POLJA. 70/84
<?php 0 1 2
$xox=array(array("O","X","O"),
array("O","X",""),
0 o x o
array("X","O","X")); 1 o x
foreach($xox as $red)
{
2 x o x
foreach($red as $element)
{ Rezultat: O X O
O X
echo $element." "; X O X
}
echo "<br />";
}
?>
Razvoj aplikacija za WEB. CIKLUSI. 71/84
<?php
for($i=1; $i<3; $i++)
{ Rezultat: 1-1 1-2
2-1 2-2
for($j=1; $j<=5; $j++)
{
if($j==3)
break;
else
echo "$i-$j ";
}
if($i==2)
break;
else
echo "<br />";
}
?>
Razvoj aplikacija za WEB. Funkcije. 72/84
Funkcije se pišu tako što se navede ključna riječ function, ime funkcije i otvorena i
zatvorena zagrada.
<?php
function ImeFunkcije()
{
naredba1;
naredba2;
}
?>
Za imenovanje funkcija važe ista pravila kao i za imenovanje promenljivih: mogu se
koristiti slova, brojevi i povlaka (_), a ime funkcije može početi slovom ili povlakom.
Razvoj aplikacija za WEB. Funkcije. 73/84
<?php
function Pozdrav()
{
echo 'Dobro dosli na II god. Master studija';
}
?>
<?php
Pozdrav();
?>
Razvoj aplikacija za WEB. Funkcije sa argumentima. 74/84
Prilikom poziva, funkciji se mogu predati određeni podaci koje će ona upotrebiti.
<?php
function ImeFunkcije($arg1, $arg2)
{
naredba1;
naredba2;
}
?>
Razvoj aplikacija za WEB. Funkcije sa argumentima. 75/84
<?php
function Pomnozi($arg1, $arg2)
{
echo $arg1*$arg2;
}
?>
<?php
Pomnozi(15,3);
?>
Rezultat: 45
Razvoj aplikacija za WEB. Prenos argumenata po vrednosti. 76/84
<?php
function Povecaj($a)
{
$a++;
echo "Vrednost u funkciji: $a <br />";
}
$broj = 2;
Povecaj($broj);
echo "Vrednost nakon povratka iz funkcije: $broj";
?>
Razvoj aplikacija za WEB. Prenos argumenata po vrednosti. 77/84
<?php
function Povecaj($a)
{
$a++;
echo "Vrednost u funkciji: $a <br />";
}
$broj = 10;
Povecaj($broj);
echo "Vrednost nakon povratka iz funkcije: $broj";
?>
Rezultat:
Vrednost u funkciji: 11
Vrednost nakon povratka iz funkcije: 10
Razvoj aplikacija za WEB. Prenos argumenata po vrednosti. 78/84
<?php
function Povecaj($a)
{
$a++;
echo "Vrednost u funkciji: $a <br />";
}
$broj = 10;
Povecaj($broj);
echo "Vrednost nakon povratka iz funkcije: $broj";
?>
Razlog tome je što funkcija dobija kopiju vrednosti, a ne originalnu promenljivu, pa
promena vrednosti promenljive u funkciji nema uticaja na vrednost originalne
promenljive.
Razvoj aplikacija za WEB. Vraćanje rezultata funkcije. 79/84
<?php
function Povecaj($a)
{
$a++;
echo "Vrednost u funkciji: $a <br />";
return $a;
}
$broj = 10;
$broj=Povecaj($broj);
echo "Vrednost nakon povratka iz funkcije: $broj";
?>
Rezultat:
Vrednost u funkciji: 11
Vrednost nakon povratka iz funkcije: 11
Razvoj aplikacija za WEB. Rekurzivne funkcije. 80/84
<?php
include("mnozenje.php"); Funkcija se se može uključiti i upotrebom
{ naredbe require:
$c = Mnozi(3, 4); <?php
} require("mnozenje.php");
?> {
$c = Mnozi(3, 4);
}
?>
Ako se prilikom izvođenja skripte dogodi greška iz skripte uključene pomoću naredbe
include, ispisat će se poruka o grešci, ali će skripta nastaviti s izvođenjem.
Upotreba naredbi include i require nije ograničena samo na uključivanje skripti koje
sadrže funkcije, već se mogu uključiti i datoteke koje sadrže HTML kod ili običan tekst.
Promenljiva Opis
$GLOBALS vrednosti globalnih promenljivih iz aktivne skripte
$_SERVER vrednosti postavljene od strane web servera
$_ENV vrednosti iz okruženja u kojem je instaliran PHP
$_GET vrednosti dostupne u URL-u trenutne stranice
$_POST vrednosti prenešene u HTTP zahtevu metodom POST
vrednosti zapisane u kolačićima (tekstualnim datotekama
$_COOKIE
koje web pretraživač čuva na korisnikovom računaru)
$_REQUEST vrednosti iz polja $_GET, $_POST i $_COOKIE
$_FILES vrednosti koje se odnose na datoteke poslane na server