You are on page 1of 238

Internet programiranje

PHP
Uvod
HTML i JavaScript se izvravaju na
klijentskoj strani, odnosno na korisnikom
raunaru
PHP je jedan od programskih jezika za
izradu dinamikih veb strana koji se
izvrava na serverskoj strani
PHP moe da memorie podatke i koristi
ih u kasnijem trenutku
Istorija
1995 - PHP (Personal Home Page) jezik
je zapoeo Rasmus Lerdorf za potrebe
line veb strane 1995.
1999 - Zeev Suraski i Andi Gutmans su
dalje razvili PHP 3 (PHP Hypertext
Preprocessor) i Zend kompajler kao
osnovu za PHP 4.
2004 - PHP 5 ukljuuje i objektno
programiranje.
Trenutno se radi na PHP 6
Alternative PHP-u
Alternative
Python
Perl
ASP Active Server Pages
JSP Java Server Pages
LAMP Linux Apache MySQL PHP (Python,
Perl)
WAMP Windows Apache MySQL PHP
(Python, Perl)
XAMPP Cross-Platform Apache MySQL
PHP Perl
Popularnost
Na tritu vie od 50% veb servera su
tipa Apache
Najpopularniji programski jezik za
dinamiko programiranje veb strana na
serverima Apache je PHP
PHP je uopte jedan od najpopularnijih
programskih jezika
PHP koriste wikipedia.org, yahoo.com,
facebook.com itd.
Popularnost (langpop.com)
Reference
Nije standard
www.php.net
Jason Gilmore, Beginning PHP and MySQL:
From Novice to Professional, Third Edition
(Beginning from Novice to Professional),
Apress, March 2008.
Luke Welling, and Laura Thomson
PHP and MySQL Web Development (4th
Edition) (Developer's Library), Addison-
Wesley Professional, October 2008.
www uopte
Instalacija WAMP servera
WAMP server se moe nai na:
http://www.wampserver.com/en/
Instalacija je jednostavna.
Pre instalacije idite na skype > tools >
options > advanced > connection i
iskljuite port 80. Zatim zatvorite
Skype.
Kada je WAMP instaliran, moete
otvoriti Skype.
Konfiguracija servera
Konfiguracija Apache servera se
obavlja u okviru fajla:
wamp\bin\apache\apache2.2.22\conf\
httpd.conf
Konfiguracija PHP kompajlera se
obavlja u okviru fajla
wamp\bin\php\php5.4.3\php.ini
Kada se promeni konfiguracija, klikne
se na Wamp ikonicu, pa na Restart
Osobine
Platformski neutralan
Slian C-u od koga je nastao
Integrisanost sa (X)HTML-om
Nestruktuiran i nekonzistentan
Generalije
Komande se zavravaju ;
Kljune rei (komande), imena
funkcija i klasa nisu osetljiva na
veliinu slova (case insensitive), dok
imena promenljivih jesu. Npr.
promenljiva $txt se razlikuje od
promenljive $TXT, dok su funkcije
sort i SORT iste.
Za ta se koristi PHP?
Omoguava dinamiki HTML sadraj
Vri obrade na serveru, npr.
prikuplja statistike o poseenosti
Obrauje podatke iz formulara
Povezuje korisnike sa bazama
podataka na serveru
Implementira autentifikaciju i zatitu
komunikacije
1. Osnove PHP-a
Tag
Komentari
Prikaz
Promenljive i njihovi tipovi
Operatori
Funkcije
Objekti
Izvravanje koda
U okviru HTML koda:
<script type=php">
...PHP kod
</script>
Ili u eksternom fajlu:
<script type=php" src="phpkod.php">
</script>
Ali ee se koristi uproena sintaksa
<?php ...PHP kod?>
odnosno
<?php include(phpkod.php) ?>
Direktorijum php fajlova
U konfiguracionom fajlu Apache servera,
httpd.conf, se odreuje glavni direktorijum u
kome su php fajlovi.
Kada su Apache, php, i MySQL baza posebno
konfigurisani: U fajlu httpd Apache servera je
odreen defolt direktorijum za dokumente
sledeom naredbom:
DocumentRoot "C:/Program Files/Apache Software
Foundation/Apache2.2/htdocs
To znai da su fajlovi u direktorijumu:
C:\Program Files\Apache Software
Foundation\Apache2.2\htdocs
Direktorijum php fajlova
U konfiguracionom fajlu Apache servera,
httpd.conf, se odreuje glavni direktorijum u
kome su php fajlovi.
Kada je instaliran WAMP, onda je defolt
direktorijum sledei
DocumentRoot "C:/wamp/www
To znai da su fajlovi u direktorijumu:
C:\wamp\www
Drugi direktorijumi mogu da se odrede ili
relativno u odnosu na defolt direktorijum ili
pomou aliasa, npr:
Alias /slike /ftp/pub/slike
XHTML fajlovi sa php
kodom
Ako elimo da koristimo php kod u fajlu
sa .html ekstenzijom, u httpd fajlu Apache
servera treba ubaciti liniju
(wamp\bin\apache\apache2.2.22\conf\
httpd.conf)
AddType application/x-httpd-php .html
Pozivanje php ili html
fajlova
Pomou URL adrese
localhost/proba/proba.php
Fajl proba.php je u direktorijumu
wamp\www\proba
Komentari
Za komentar jedne linije - oznaka // ili # :
// komentar u jednoj liniji ...

Za komentar vie redova - /* za poetak


bloka pod komentarom i */ za kraj bloka
pod komentarom:
/*
Komentar u vie redova...
Drugi red komentara
*/
Prikaz echo, print
Primer:
<?php
echo <b>Prvi red</b><br /><i>Drugi
red</i>; ?>
Ili:
<?php
echo <b>Prvi red</b><br />,<i>Drugi
red</i>; ?>
Rezultat oba primera:
Prvi red
Drugi red
Mogunosti umetanja PHP
koda
Moe:
<?php
if ($expression) {
?>
<strong>This is true.</strong>
<?php
} else {
?>
<strong>This is false.</strong>
<?php
}?>
Preporuivo:
<?php
if ($expression) {
echo <strong>This is true.</strong>;}
else {
echo <strong>This is false.</strong>;
} ?>
Promenljive
Sadre vrednosti koje program smeta u
okviru memorije raunara
Promenljivoj se dodeljuje:
eljeno ime
vrednost
Tip promenljive ne mora da se specificira,
odreuje ga vrednost promenljive
Imena promenljivih
Sve promenljive poinju sa $
Drugi znak je slovo ili _
Tipovi podataka
Skalarni
boolean logiki tip
integer celobrojni tip
float racionalni tip
string znakovni niz
Sloeni
array - niz
object - objekat
Specijalni
resource - resurs
Null - nita
Skalarni tipovi podataka
Logiki tip uzima vrednosti TRUE ili FALSE
Celobrojni tip moe biti decimalni, oktalni
(poinje sa 0) ili heksadecimalni (poinje
sa 0x). Max vrednost zavisi od sistema a
moe da se odredi konstantnom
PHP_INT_MAX
Racionalni tip ima razne oblike, npr.

<?php
$a = 1.234; $b = 1.2e3; $c = 7E-10;
?>
Znakovni niz - string
Mogu biti pod apostrofima (ab) ili navodnicima (ab)
Kada se koriste apostrofi navodnici se koriste za navodnike u
tekstu i obrnuto. Apostrof unutar apostrofa \, slino za navodnike.
Za dui tekst pod navodnicima, moe se koristiti <<< sa nekom
promenljivom koja razgraniava tekst (nema razmaka posle EOT):
$s=<<<EOT
Text
EOT;
Za dui tekst pod apostrofima
$s=<<<EOD
Text
EOD;
Primer:
echo <<<EOT
Primer dueg znakovnog niza koji moe zauzimati i veliki broj
redova i puno navodnika itd.
EOT;
String - primeri
Primer:
<?php $foo = "foobar";$a=2;
echo foo je $foo <br />;
echo foo je $foo <br />;
Echo a je $a <br />;
Echo a je $a <br />; ?>
Rezultat:
foo je $foo
foo je foobar
a je $a
a je 2
Niz - array
Sintaksa definisanja niza
ImeNiza=array([indeks1=>]vrednost1, )
Indeksi mogu biti celi brojevi ili stringovi. Indeksi koji nisu
specificirani uzimaju vrednosti redom 0,1,2,...
Primer
<?php
$niz=array("Aleks" => "9", "Sanja" =>8 , "Mirko"
=>6);
echo $niz['Aleks'], "<br />";
echo {$niz['Aleks']} <br />";
echo $niz["Sanja"];
?>
Rezultat:
9
9
8
Multidimenzionalni nizovi
Primer:
$familije=array
(Simi=>
array(Branka,Dejan),
Brusin=>
array(Mia,Maja,Marija));
Objekat - object
Objekti su slini kao kod JavaScript-
a, ali se sintaksa razlikuje
Objekti se definiu klasama kojima
pripadaju
Klase imaju definisane atribute i
metode
Promenljive objekti se dobijaju
instanciranjem klase
Resurs - resource
Promenljive tipa resurs su pokazivai na
sloene eksterne promenljive
Primer su pokaziva na otvoren fajl ili na
vezu sa bazom podataka
Promenljive tipa resurs se generiu
razliitim funkcijama u zavisnosti od
primene
Kompajler automatski brie promenljive
tipa resurs koje ne pokazuju na neki
resurs
NULL vrednost
Vrednost NULL je
tip podataka/vrednost koja se moe dodeliti
promenljivoj
Pokazuje da promenljiva ne sadri nikakvu
korisnu vrednost
Promenljiva sa vrednou NULL ima takvu
dodeljenu vrednost
Vrednost null se dodeljuje promenljivoj kada
se eli definisati da promenljiva ne sadri
nikakav podatak
Operatori
Aritmetiki
Na nivou bita
Relacioni
Logiki
Aritmetiki operatori
Operator Opis Operator Opis

+ sabiranje += sabiranje
dodela
- oduzimanje -= oduzimanje
dodela
* mnoenje *= mnoenje
dodela
/ deljenje /= deljenje
dodela
% moduo %= Moduo
dodela
++ inkrement -- dekrement
Aritmetiki operatori
$a = 1 + 1;
$b = $a * 3;
$c = $b / 4;
$d = $b $a;
$e = -$d;
$f = ($g = 4) + 5;
echo a, b, c, d, e, f, g su , ,$a,
,$b, ,$c, ,$d, ,$e, , $f, ,$g;
Nakon izvravanja prethodnog primera dobija se
sledei tekst na ekranu:
a, b, c, d, e, su 2 6 1.5 4 -4 9 4
Na nivou bita
Operator Upotreba Opis
Logiko I (AND) $a & $b Rezultatni bit je 1, jedino ako su oba bita 1 u ostalim
sluajevima rezultat je 0.

Logiko ILI (OR) $a | $b Rezultatni bit je 0, jedino ako su oba bita 0 u ostalim
sluajevima rezultat je 1.

Logiko eksluzivno $a ^ $b Rezultatni bit je 1, ako biti imaju razliite vrednosti, u


ILI (XOR) suprotnom je 0.

Logiko NE (NOT) ~ $a Komplementira bitove operanda a.

Pomeranje ulevo $a << $b Pomera binarni sadraj operanda za b mesta ulevo. Prazna
mesta popunjava sa vrednou 0.

Pomeranje udesno $a >> $b Pomera binarni sadraj operanda za b mesta udesno. Prazna
sa znakom mesta popunjava sa vrednou najstarijeg bita.
Na nivou bita
15 & 9 rezultat 9 (1111 & 1001
= 1001)
15 | 9 rezultat 15 (1111 | 1001
= 1111)
15 ^ 9 rezultat 6 (1111 ^ 1001
= 0110)
Logiki operatori

Operato
r Upotreba Opis
I (&& ili expr1 && expr2 Rezultat je true, jedino ako su oba operanda true, u
and) ostalim sluajevima rezultat je false.
ILI (|| ili expr1 || expr2 Rezultat se dobija false, jedino ako su oba operanda
or) false, u ostalim sluajevima rezultat je true.
NE (!) !expr Rezultat se dobija komplement od vrednosti
operanada. Ako je operand true, rezultat je false,
ako je operand false, rezultat je true
ILI (xor) expr1 xor expr2 Rezultat je true, ako su operandi razliiti, i obrnuto,
rezultat je false, ako su operandi isti
Logiki
$a = true;
$b = false;
$c = $a || $b;
$d = $a && $b;
$f = (!$a && $b) || ($a && !$b);
$g = !$a;
echo " a = ", $a, " <br /> " ;
echo " b = ", $b , "<br />" ;
echo " c = ", $c , "<br />" ;
echo " d = " , $d , "<br />" ;
echo " f = " , $f , "<br />" ;
echo " g = " , $g;
Rezultat izvravanja prethodnog primera je:
a=1
b=
c=1
d=
f=1
g=
Operatori poreenja
Operator Upotreba Opis
Jednakost (==) Rezultat je true ako su operandi $x == $y rezultat je true ako su $x i
jednaki $y jednaki.
Nejednakost (!= ili Rezultat je true ako su operandi $x ! = $y rezultat je true ako su $x i
razliiti. $y razliiti.
<>)
Vee (>) Rezultat je true ako je levi operand $x > $y ako je $x vee od $y.
vei od desnog operanda.
Vee ili jednako Rezultat je true ako je levi operand $x >= $y ako je $x vee ili jednako
(>=) vei ili jednak desnom operandu $y.
Manje (<) Rezultat je true ako je levi operand $x < $y rezultat je true ako je $x
manji od desnog operanda manje od $y.
Manje ili jednako Rezultat je true ako je levi operand $x <= $y rezultat je true ako je $x
(<=) manji ili jednak desnom manje ili jednako $y.
operandu
Jednako bez Rezultat je true ako su operandi $x === $y rezultat je true ako su $x
konverzije jednaki bez konverzije podataka i $y jednaki bez konverzije
tipova (===) podataka
Razliito bez Rezultat je true ako su operandi $x !== $y rezultat je true ako su $x
konverzije razliiti bez konverzije podataka i $y razliiti bez konverzije
tipova (!==) podataka
Operatori poreenja
$a = 4;
$b = 1;
$c = $a < $b;
$d = $a == $b;
echo c = , $c, <br /> ;
echo d = , $d ;
Rezultat izvravanja prethodnog primera
je
c=
d=
String operator .
Pomou string operatora . spajaju se dva
stringa
Primer
$a=Aleksandra; $b=Smiljani;
$c=$a. . $b;
$a.= S;
echo $a, <br />, $c;
Rezultat
Aleksandra S
Aleksandra Smiljani
Operator nizova +
Pomou string operatora + spajaju se
dva niza
Primer

$a=array(0=>1,1=>2,2=>3);
$b=array(3=>4,4=>5);
$c=$a+$b;
echo $c[0],$c[1],$c[3],$c[4];
Rezultat

1245
Operator greke @
Pre izraza (funkcija,promenljivih
itd.) moe se postaviti operator
greke @
Uloga ovog operatora je da ignorie
greke koje mogu da nastanu pri
izraunavanju izraza (ukljuujui i
izvravanje funkcije itd.)
Operator za izvrni kod
Naredba izmeu dva akcenta `` izvrava
naredbe operativnog sistema (npr.
kreiranje direktorijuma, listanje
direktorijuma itd.)
Funkcionie kada Apache nije u Safe
mode i kada funkcija shell_exec nije
iskljuena
Safe mode se ukljuuje a shell_exec
iskljuuje u fajlu php.ini, zatim se
Apache restartuje.
Operator za izvrni kod:
primer
Primer
<?php
$output = `dir`;
echo "<pre>$output</pre>";
?>
Rezultat
Volume in drive C has no label.
Volume Serial Number is E82B-743B

Directory of C:\Program Files\Apache Software Foundation\Apache2.2\htdocs

04/24/2009 00:36
.
04/24/2009 00:36
..
11/20/2004 14:16 44 index.html
04/19/2009 22:51 21 phpinfo.php
04/24/2009 13:28 58 phpproba.php
3 File(s) 123 bytes
2 Dir(s) 78.881.165.312 bytes free
Operator za izvrni kod:
primer
Primer
<?php
$new_dir = "Bob";
`mkdir $new_dir`
?>
Rezultat: otvoren je novi folder u
okviru foldera gde je PHP fajl koji ga
kreira
Funkcije
Funkcije predstavljaju grupu naredbi
koja se moe izvriti kao pojedinana
jedinica
Funkcije su korisne jer ine program
preglednijim i lakim za auriranje
Kao i bilo koji drugi PHP kod, funkcije se
moraju definisati u okviru <?php ?>
elementa
Funkcija se sastoji iz deklaracije funkcije
i njenog poziva
Deklaracija funkcija
Sintaksa za definisanje funkcije je :
function imeFunkcije(parametri) {
naredbe;
}
Pozivanje funkcije
Da bi se izvrila funkcija potrebno ju je
pozvati sa odreenog mesta u okviru
programa
Funkcija se poziva njenim imenom i
specifikacijom argumenata u okviru
zagrada
Vrednosti argumenata se prosleuju
odgovarajuim parametrima funkcije u
skladu sa deklaracijom funkcije
Mogunosti
Funkcija moe biti pozvana
rekurzivno
Funkcija moe biti definisana
uslovno ili unutar druge funkcije, i
onda je deklarisana samo ako je
uslov ispunjen odnosno kada je ta
druga funkcija pozvana
Naredba return
Slui da bi se vratio rezultat funkcije
pozvanoj naredbi
Dodeljuje pozvanoj naredbi vrednost
odreenog izraza
Tip moe biti proizvoljan
return 8;
return $p*$m;
Opseg vaenja promenljive
Prema opsegu vaenja promenljive se dele na
superglobalne, globalne ili lokalne
Superglobalne promenljive su ugraene u PHP i
vae u bilo kom programu i funkciji
Globalne promenljive se deklariu izvan
funkcije, i moe im se pristupiti iz bilo kog dela
programa
Lokalne promenljive se deklariu u okviru
funkcije i jedino su dostupne u okviru funkcije
u kojoj su deklarisane
Parametri su takoe lokalne promenljive
Primer lokalne promenljive
<!DOCTYPE html>
<html>
<body>

<?php
$x=5; // globalna

function mojTest()
{
$x=1;
echo $x; // lokalna
}

mojTest();
?>

</body>
</html>
Primer globalne promenljive

<?php
$x=5; // globalna
$y=10; // globalna

function mojTest()
{
global $x,$y;
$y=$x+$y;
}

mojTest();
echo $y; // izbacuje 15
?>
Argumenti funkcije
Argumenti funkcije su izrazi koji su razdvojeni
zarezom
Promenljiva, argument, moe biti prosleena
direktno $a ili preko reference &$a. U drugom
sluaju moe da se menja vrednost argumenta.
Promenljivim, argumentima, se moe dodeliti
defolt vrednost. Primer:
function birajKafu($tip = kapuino")
{
return Izabran je $tip.";
}
birajKafu(espreso);birajKafu();
Ugraene funkcije
Postoji veliki broj funkcija koje su ili ugraene
po defoltu ili se ukljuuju kroz ekstenzije i
dodatne biblioteke u PHP
Kategorizacija funkcija i potrebne ekstenzije se
mogu nai na veb strani
http://www.php.net/manual/en/funcref.php
Spisak svih funkcija se mogu nai na veb
strani:
http://www.php.net/manual/en/indexes.php
Promenljive funkcije
Primer
<?php
function fu() {
echo Ovo je fu()<br />";}
function bar($arg = ''){
echo Ovo je bar();
argument je bio '$arg'.<br />";}
$funk = 'fu';
$funk();
$funk = 'bar';
$funk('test'); ?>
Rezultat
Ovo je fu()
Ovo je bar(); argument je bio 'test'.
Primer
Primer deklaracije funkcije:
function calculate($a,$b,$c) {
$d = ($a+$b) * $c;
return $d;
}
Primer poziva funkcije:
$x = calculate(4,5,9);
echo "x je ", $x, "<br />;
$y = calculate(($x/3),3,5);
echo "y je ", $y;
Rezultat primera:
x je 81
y je 150
Objekti
PHP podrava objekte kao strukturu
podataka
Objekti se definiu pomou funkcija
Za svaki objekat su vezane osobine i
metode
Osobine su promenljive kojima se dodaju
odreene vrednosti
Metode su funkcije u okviru objekata
kojima mogu da se menjaju njihove
osobine
Kreiranje klase i instance
objekta
Klasa objekta ili prototip se definie klasom ija
je sintaksa
class mojObjekat {
[[deklaracijaOsobine1] osobina1;]
[[deklaracijaOsobine2] osobina2;]
[[deklaracijaMetode1] metoda1;]
[[deklaracijaMetode2] metoda2;]}
Instanca objekta se definie pomou naredbe
new
mojaInstanca=new mojObjekat
Osobine klase mogu biti naknadno definisane
Deklaracije osobine
Deklaracija osobine moe biti
public moe se menjati sa bilo kog
mesta direktno
private moe se menjati samo
pomou metode objekta
protected nepoznata je van objekta

final ne moe se menjati u klasama


naslednicima
Deklaracije metode
Deklaracija metode moe biti
public moe se koristiti van klase
pozivanjem metode instance
private rezultati metoda se koriste samo u
okviru objekta
protected rezultati metoda se koriste samo
u okviru objekta ili nekog naslednika
abstract samo deklarisana u roditeljskoj
klasi
final ne moe se menjati u klasama
naslednicima
Rad sa osobinama objekata
Vrednost osobine instance objekta
se moe koristiti na sledei nain:
imePromenljive=mojaInstanca->
Osobina1;
Vrednost osobine instance objekta
se moe promeniti ili naknadno
definisati ukoliko nije bila ranije:
mojaInstanca->Osobina1=vrednost1;
Kreiranje objekta sa
metodom
Primer metoda objekta:
class mojKrug
{public $xkord;
public $ykord;
public $poluprecnik;
public function _construct ($a,$b,$c){
$this->xkord=$a;$this->ykord=$b;$this->poluprecnik=$c;}
public function izrPovrsinu() {
return ( M_PI * $this->poluprecnik * $this->poluprecnik);}
public function izrObim() {
return ( M_PI * $this->poluprecnik * 2 ); }
public function pomeriZa($xDis,$yDis) {
$this->xkord += $xDis; $this->ykord += $yDis; }
Korienje metoda
Primer korienja metoda iz prethodnog primera:
var $primerKruga = new mojKrug(3,4,5);
$primerKruga->pomeriZa(2,3);
echo Povrina kruga je ,
$primerKruga->izrPovrsinu();
echo <br />Obim kruga je ,
$primerKruga->izrObim();
Rezultat prethodnih komandi je:

Povrina kruga je 78.5398163397


Obim kruga je 31.4159265359
Pozivanje konstanti
Ne mora se instancirati objekat da bi se
pozvala konstanta njegove klase
Primer

<?php
class Math {
const pi = 3.14159;
}
echo " Math::pi = ,Math::pi;
?>
Pozivanje statikih osobina i
metoda
Statike osobine i metode se takoe mogu zvati bez instanciranja objekta
Primer
<?php
class Poseta{
private static $posetioci = 0;
function __construct(){
self::$posetioci++;}
static function izbrojPosetioce(){
return self::$posetioci;}}
$posete = new Poseta();
echo Poseta::izbrojPosetioce()."<br />";
$posete2 = new Poseta();
echo Poseta::izbrojPosetioce()."<br />";
echo $posete -> izbrojPosetioce();
?>
Rezultat primera:
1
2
2
Nasleivanje izmeu klasa
Primer:
<?php
class SimpleClass
{ public $var = 'a default value';
public function displayVar() {
echo $this->var;}
}
class ExtendClass extends SimpleClass
{
public function displayVar()
{echo "Extending class <br />";
parent::displayVar();
}
}
$extended = new ExtendClass();
$extended->displayVar();
?>
Rezultat:
Extending class
a default value
2. Kontrola toka
Ternarni operator
Naredba if-else
Naredba switch
Petlje
for petlja
while petlja
Izlazi iz blokova
break
continue
goto
Naredbe include, require
Ternarni operator
Sintaksa:
logIzraz ? izraz1 : izraz2
gde je izraz log_izraz bilo koji izraz iji
rezultat je vrednost logikog tipa. Ako je
rezultat izraza true, onda se izvrava
izraz1, u suprotnom izraz2.
Primer:

$kolicnik = $imenioc ==0 ? 0 : $brojioc/


$imenioc
Kontrole toka - if
Sintaksa:
if (logIzraz) {naredbe1;}
[else {naredbe2;}]

Primer:
if ($x == 8) {
$y=$x;
}
else {
$z=$x;
$y=$y*$x;
}
Kontrola toka - if
Jo jedan primer:
if ($mesec == 1)
$ime_meseca = Januar;
else if ($mesec == 2)
$ime_meseca = Februar;
else if ($mesec == 3)
$ime_meseca = Mart;
else if ($mesec == 4)
$ime_meseca = Maj;
else
....
else if ($mesec == 12)
$ime_meseca = Decembar;
Kontrola toka - switch
Sintaksa
switch (izraz) {
case vr1: naredbe1; [break;]
...
case vrN: naredbeN; [break;]
[default: naredbeDef;]
}
Kontrola toka - switch
Primer:
switch($mesec) {
case 1: $ime_meseca = Januar; break;
case 3: $ime_meseca = Mart; break;
case 5: $ime_meseca = Maj; break;
case 7: $ime_meseca = Jul; break;
case 8: $ime_meseca = Avgust; break;
case 10: $ime_meseca = Oktobar; break;
case 12: $ime_meseca = Decembar; break;
case 4: $ime_meseca = April ; break;
case 6: $ime_meseca = Jun; break;
case 9: $ime_meseca = Septembar; break;
case 11: $ime_meseca = Novembar; break;
case 2: $ime_meseca = Februar ;
}
Petlje - while
Sintaksa:
[inicijalizacija;]
while(logIzraz){
naredbe;
}

Primer:
$i=1;
while($i<=10){
echo $i, "<br />";
$i=$i+1;
}
Petlje - do-while
Sintaksa:
[inicijalizacija;]
do {
naredbe;
} while (logIzraz);

Primer:
$i=1;
do {
echo $i, "<br />";
$i=$i+1;
} while($i<=10)
Petlje - for
Sintaksa:
for(inicijalizacija; logIzraz; iteracija){
naredbe;
}

Primer:
for($i=1; $i<=10; $i++){
echo $i, "<br />";
}
Petlje - foreach
Sintaksa:
foreach (izrazNiza as [index=>] vrednost) {
naredbe;
}
Primer:
$a = array(1, 2); $b= array(2=>4);
foreach (($a+$b) as $v) {
echo Vrednost \$a je $v. ";}
Rezultat:
Vrednost $a je 1. Vrednost $a je 2. Vrednost
$a je 10.
Kontrola toka - break
Primer:
1:{
2: {
3: {
echo pre break-a;
break 2;
}
echo ovo nee biti prikazano;
}
echo posle break-a;
}

Rezultat:
pre break-a posle break-a
Kontrola toka - break
Primer:
1:{
2: {
3: {
echo pre break-a;
break 3;
}
echo ovo nee biti prikazano;
}
echo posle break-a;
}

Rezultat:
pre break-a ovo nee biti prikazano posle break-a
Kontrola toka - continue
Takoe moe koristiti numeriki argument
Primer:
for($i=0; $i<10; $i++){
echo $i+ ;
if ($i%2 ==0)
continue;
echo <br />;
}

Rezultat:
01
23
45
67
89
Komanda toka goto
Primer:
<?php
goto a;
echo 'Fu';

a:
echo 'Bar';
?>
Komanda include
Primer
poziv.php
<?php
$boja = zelena';
$voce = jabuka';
?>
test.php
<?php
echo Jedna $boja $voce";
include poziv.php';
echo Jedna $boja $voce";
?>
Rezultat skripta test.php
Jedna
Jedna zelena jabuka
Naredba include_once ukljuuje fajl samo ako nije bio prethodno
ukljuen.
Komanda require
Komanda require je ista kao
komanda include samo u njenom
sluaju ukoliko se fajl ne nae
obustavlja se dalje izvrenje
programa.
Komanda require_once ukljuuje
fajl samo ako nije prethodno
ukljuen.
2. PHP funkcije
Funkcije nizova
Funkcije sa uzorcima za
pretraivanje
Funkcije sa stringovima
Matematike funkcije
Funkcije sa datumom i vremenom
Funkcija nizova print_r
Slui za ispisivanje nizova
Primer:
$glavniGradovi
=array(Srbija=>Beograd,
Francuska=> Pariz, Belgija=>
Brisel);
print_r($glavniGradovi);
Rezultat:
Array ( [Srbija] => Beograd [Francuska]
=> Pariz [Belgija] => Brisel )
Funkcija nizova list
Primer:
$glavniGradovi = "Beograd|Pariz|Brisel";
list($a[0],$a[1],$a[2])=explode("|",
$glavniGradovi);
print_r($a);
Rezultat:

Array ([0] => Beograd [1] => Pariz [2] =>


Brisel)
Brojanje elemenata
count(niz[,mod]) daje broj
elemenata niza, a ako je mod=1
onda broji i elemente podnizova
rekurzivno
array_count_values(niz) za
svaku vrednost daje broj
pojavljivanja
Dodavanje i oduzimanje
elemenata niza
Funkcije su
array_push(imeNiza, element)
dodaje vrednost elementa na kraj
niza
array_pop(imeNiza) - daje vrednost
poslednjeg elementa niza
array_shift(imeNiza) daje prvi
element dok se svi elementi niza
pomere za jedan ulevo
Dodavanje i oduzimanje
elemenata niza
Funkcije su dalje:
array_unshift(imeNiza, element1,
[element2]) dodaje vrednost
elementa na poetak niza a ostale
elemente pomera za jedan udesno
array_pad(imeNiza, duzinaNiza,
element1) dopunjava niz do zadate
duine zadatim elementima
Lociranje elementa u nizu
Funkcije su:
in_array(element,imeNiza) daje TRUE ako je
vrednost datog elementa u datom nizu i FALSE
u obrnutom sluaju
array_keys(imeNiza[,element]) daje niz svih
indeksa elemenata, odnosno niz indeksa
zadate vrednosti
array_search(element,imeNiza) daje
vrednost prvog indeksa zadate vrednosti
Funkcije kretanja po nizu
Funkcije:
key(imeNiza) daje trenutni indeks
current(imeNiza) daje trenutnu
vrednost
each(imeNiza) daje trenutni indeks-
vrednost par i pomera pokaziva za
jedan
Funkcije kretanja po nizu
Funkcije:
reset(imeNiza) vraa pokaziva na poetak
niza
next(imeNiza) vraa vrednost sledeeg
elementa u nizu i pomera ga za jedno mesto
unapred
prev(imeNiza) vraa vrednost prethodnog
elementa u nizu i pomera ga za jedno mesto
unazad
end(imeNiza) pomera pokaziva na kraj niza
i vraa vrednost elementa
Sortiranje niza
Funkcije:
sort(imeNiza[,sortFleg]) sortira niz.
sortFleg moe biti SORT_NUMERIC,
SORT_REGULAR (zavisi od tipa
elemenata), SORT_STRING
rsort(imeNiza[,sortFleg]) sortira niz u
opadajuem redosledu
asort(imeNiza[,sortFleg]) sortira niz
zadravajui index-vrednost parove
Sortiranje niza
Funkcije:
usort(imeNiza[,imeFunkcije]) sortira
niz na osnovu zadate funkcije
array_reverse(imeNiza[,fixIndekse])

obrne redosled elemenata, ako su pravi


indeksi numeriki i fixIndekse=TRUE
uvaju se kao indeksi
array_flip (imeNiza) obrne mesta

indeksima i vrednostima
Kombinovanje nizova
Funkcije:
array_combine(niz1,niz2) daje nov niz u
kome vrednosti prvog niza postaju indeksi
drugog niza
array_merge(niz1,niz2) daje novi niz
spajanjem dva niza. Ukoliko su dva indeksa
ista, uzima se indeks drugog niza, kod
operatora + je suprotno.
array_slice(niz1,ofset[,duzina]) daje novi niz
kao deo niza date duine poev od indeksa sa
rednim brojem ofset
array_splice(niz1,ofset[,duzina][,niz2]) daje
niz u kome je obrisan deo niza date duine
poev od ofseta, i eventualno ga zamenjuje
drugim nizom
Kombinovanje nizova
Funkcije:
array_intersect(niz1,niz2) daje niz svih
vrednosti koje su zajednike za dva niza
array_intersect_assoc(niz1,niz2) daje niz
svih parova indeks-vrednost koje su
zajednike za dva niza
array_diff(niz1,niz2[,niz3]) daje vrednosti
prvog niza koje se ne nalaze u narednim
nizovima koji su argumenti funkcije
Pretraivanje pomou
uzoraka
Postoji dve vrste uzoraka
POSIX
PCRE Perl Compatible Regular
Expression
Perl uzorci su najpopularniji, i isti
kao i kod Javascript-a
Uzorak
Uzorak je niz znakova i specijalnih
znakova
Sintaksa:

imeUzorka = /mustra/atributi;
Gde je mustra niz znakova i specijalnih
znakova, a atributi su znakovi koji
specificiraju nain apliciranja mustre.
Sintaksa mustri:
http://www.php.net/manual/en/regexp.re
ference.php
Specijalni znaci u uzorcima
Karakter Predstavlja

Slovo ili broj Istu vrednost

\cx control-x

\t Tab znak

\n Nova linija

\v Vertikalni tab znak

\f Form feed (nova strana)

\r Carriage return (poetak strane)

\xhh Heksadecimalni kod unicode znak


Specijalni znaci u uzorcima
Karakter Predstavlja pojavljivanje

[...] Bilo kog karaktera od onih koji su navedeni izmeu [ i ].

[^...] Bilo kog karaktera koji nije naveden izmeu [ i ].

. Bilo kog karaktera osim nove linije

\w Bilo kog ASCII definisanog slova, cifre ili _.

\W Bilo kog karaktera koji nije \w.

\d Bilo koje ASCII definisane cifre

\D Bilo kog karaktera koji nije ASCII definisana cifra

\s Blanko znak

\S Nije blanko znak


Primeri uzoraka
/[abc]/
predstavlja jedno pojavljivanje simbola a ili
jedno pojavljivanje simbola b ili jedno
pojavljivanje simbola c.
/[^abc]/
predstavlja karakter koji nije simbol a ili b ili c.
/\d\d\d\d\d/
Pomou ovog uzorka se definie broj koji se
sastoji od 5 cifara
Specijalni znaci u uzorcima
Oznaka Znaenje
Ponavljanje prethodne grupe najmanje n puta, ali najvie
{n,m}
m puta.
{n,} Ponavljanje prethodne grupe n ili vie puta.
{n} Ponavljanje prethodne grupe tano n puta.
Ponavljanje prethodne grupe jednom ili nijednom. Isto
?
dejstvo kao i {0,1}.
Ponavljanje prethodne grupe jednom ili vie puta. Isto
+
dejstvo kao i {1,}.
Ponavljanje prethodne grupe nijednom ili vie puta. Isto
*
dejstvo kao i {0,}.
Alternative. Pojavljivanje dela izraza sa desne ili
|
pojavljivanje izraza sa leve strane.
Grupisanje simbola u jedan objekat nad kojim se mogu
(...)
koristiti oznake *, +, ?, |, itd.
^ Pretraga uzorka se obavlja na poetku stringa
$ Pretraga uzorka se obavlja na kraju stringa
Primeri uzoraka
/\d{2,4}/ // uzorak koji oznaava
pojavljivanje 2, 3 ili 4 cifre
/\w{3}\d?/ // uzorak koji oznaava
pojavljivljavanje tano tri znaka i opciono
jedne cifre, npr. string koji odgovara ovom
uzorku je abc8 ili qoq.
/\s+java\s+/ // uzorak koji oznaava string
java " sa jednim ili vie prostora pre ili
posle stringa
/["]*/ // uzorak koji oznaava nula ili
vie pojavljivanje karaktera navoda
Primeri uzoraka
/ab|cd|ef/ // uzorak koji oznaava
pojavljivanje ab ili pojavljivanje cd ili
pojavljivanje ef
/\d{3}|[a-z]{4}/ // uzorak koji oznaava
pojavljivanje tri cifre ili 4 mala slova, npr
123 ili abcd
/((ab|cd)+|ef)/ // uzorak koji oznaava
pojavljivanje stringa ef ili pojavljivanje
jednom ili vie puta stringa ab ili
pojavljivanje jednom ili vie puta stringa
cd, npr. abab
Kada traimo neki od komandnih znakova
onda koristimo \*, a kada traimo \, onda
koristimo \\\
Atributi uzoraka
Atribut Znaenje

Izvravanje case-insensitive
i
ispitivanja.
Izvrava globalno ispitivanje,
znai pronai e se sva
pojavljivanja definisanog
g
uzorka, a nee se ispitivanje
zaustaviti posle prvog
pronalaska uzorka.

m Rad sa vie linija.


Korisni uzorci
DNS
"^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9_\-]
{0,61}[a-zA-Z0-9])(\.([a-zA-Z0-9]|[a-zA-Z0-
9][a-zA-Z0-9_\-]{0,61}[a-zA-Z0-9]))*$"
E-mail

^[a-zA-Z0-9_\.\+\-]+@([a-zA-Z0-9]|[a-zA-
Z0-9][a-zA-Z0-9_\-]
{0,61}[a-zA-Z0-9])(\.([a-zA-Z0-9]|[a-zA-Z0-
9][a-zA-Z0-9_\-]{0,61}[a-zA-Z0-9]))*$
Funkcije uzorka
Funkcije:
preg_grep(imeUzorka,imeNiza) daje niz sa svim
elementima niza koji u sebi sadre uzorak
preg_match(imeUzorka,imeStringa[,nizUzoraka])
daje listu poduzoraka datog uzorka u zadatom
stringu koji se uva u zadatom nizu
preg_replace(imeUzorka,imeStringa,imeNiza)
zadati uzorak se zamenjuje stringom u datom nizu
stringova (ili nizu)
preg_split(imeUzorka,imeStringa) stvara niz
delova teksta koji su razdvojeni zadatim uzorkom
Funkcije uzorka - primer
Primer:
<?php
$delimitedText=+Jason+++++++++++
+Columbus+++OH;
$fields=preg_split(/\+{1,}/,$delimitedText);
foreach($fields as $field) echo $field.<br />;?>
Rezultat:

Jason
Columbus
OH
Funkcije uzorka primer 2
Primer:
<?php
preg_match(/^[0-9a-zA-Z\.]+\.(gif|jpg|png|
jpeg)$/, slika.jpg,$niz); print_r($niz); ?>
Rezultat:

Array([0]=>slika.jpg [1]=>jpg)
Kada bi bila slika.jpge rezultat bi bio prazan niz
Funkcije uporeenja
stringova
Funkcije:
strlen(string) duina stringa
strspn(string1,string2) daje duinu
segmenta u kome se nalaze samo znaci
iz drugog stringa
Manipulacija stringovima
Funkcije:
strtolower(string) sva slova se
menjaju u mala
strtoupper(string) sva slova se
menjaju u velika
ucfirst(string) prvo slovo se menja u
veliko
Dodavanje i oduzimanje od
stringova
Funkcije:
ltrim(string1,string2) oduzimaju se znaci sa
leva prvog stringa koji pripadaju drugom
stringu
rtrim(string1,string2) oduzimaju se znaci sa
desna prvog stringa koji pripadaju drugom
stringu
trim(string1,string2) oduzimaju se znaci s
krajeva prvog stringa koji pripadaju drugom
stringu
str_pad(string1,duzina,string2[,tip]) dodaje
se drugi string prvom stringu dok se ne
dopuni do duine, tip moe biti
STR_PAD_LEFT, STR_PAD_RIGHT,
STR_PAD_BOTH
Jo neke funkcije stringova
Funkcije:
explode(separator,string) daje niz delova
stringa koji su razgranieni znakom koji je
separator
implode (separator,niz) obrnuto od explode
strpos(string,podstring) nalazi prvu poziciju
podstringa u stringu
strrpos(string,podstring) nalazi poslednju
poziciju podstringa u stringu
substr_count(string,podstring) - broji broj
nepreklapajuih podstringova u stringu
Sortiranje niza - primer
Primer:
<? php
function sortirajDatume($a,$b){
If ($a=$b) return 0;
list($adan,$amesec,$agodina)=explode(-,$a);
list($bdan,$bmesec,$bgodina)=explode(-,$b);
$amesec=str_pad($amesec,2,0,STR_PAD_LEFT);
$bmesec=str_pad($bmesec,2,0,STR_PAD_LEFT);
$adan=str_pad($adan,2,0,STR_PAD_LEFT);
$bdan=str_pad($bdan,2,0,STR_PAD_LEFT);
$a=$agodina.$amesec.$adan;
$b=$bgodina.$bmesec.$bdan;
return ($a > $b ? 1 : -1);}
Sortiranje niza - primer
$datumi = array(7-10-2007,6-2-2008,30-12-
2008);
sort($datumi);
print_r($datumi);
echo <br />;
usort($datumi,sortirajDatume);
print_r($datumi);}
Rezultat:
Array ( [0] => 30-12-2008 [1] => 6-2-2008 [2] => 7-10-2007)
Array ( [0] => 7-10-2007 [1] => 6-2-2008 [2] => 30-12-2008)
Matematike funkcije
Veliki broj matematikih funkcija je
na raspolaganju, mogu se nai na:
http://www.php.net/manual/en/book.
math.php
Datum i vreme
Funkcije koje se tiu datuma i
vremena mogu se nai na:
http://www.php.net/manual/en/refs.
calendar.php
3. PHP u praksi
PHP interfejsi preko superglobalnih
promenljivih
Obrada podataka iz formulara
Aploudovanje fajlova
Rad sa fajlovima
PHP sesije i kolaii
PHP e-mail
PHP autentifikacija
Superglobalne promenljive
Superglobalne promenljive su interfejsi
PHP programa sa spoljnom okolinom
preko kojih razmenjuju informacije
Neke vane superglobalne su sledee:
$_SERVER, $_GET, $_POST, $_FILES,
$GLOBALS, $_COOKIE, $_SESSION,
$_ENV
Superglobalne promenljive (superglobals)
se mogu nai na:
http://us2.php.net/manual/en/reserved.va
riables.php
Superglobalna $_SERVER
$_SERVER je niz sa informacijama o hostu i
serveru
Neki elementi niza $_SERVER
$_SERVER[HTTP_REFERER] URL veb adrese sa koje
se dolo na datu stranu
$_SERVER[REMOTE_ADDR] klijentova IP adresa
$_SERVER[REQUEST_URI] relativna putanja do
zadatog fajla, ukljuujui i upite pomou get metode
$_SERVER[HTTP_USER_AGENT] operativni sistem i
brauzer klijenta
$_SERVER[PHP_SELF] skript koji se izvrava, ime
fajla ukljuujui relativnu putanju. Konstanta __FILE__
jeste magina (magic) konstantna i daje kompletno ime
fajla ukljuujui i absolutnu adresu
Superglobalna $_GET
$_GET je niz koji sadri parametre koji su
prosleeni metodom get
HTTP metoda get se koristi kada se preuzima
sadraj sa servera, i njeni parametri se
prosleuju kroz URL
Stranice dobijene get metodom mogu da se
memoriu, i uvaju se u keu
Primer, ukucajmo proba u polje za
pretraivanje na www.naslovi.net:
http://www.naslovi.net/search.php?q=proba
Tada je $_GET[q] jednak proba
Superglobalna $_POST
$_POST je niz parametara koji se prosleuju kroz metod
post, koristei atribute name
Primer:
<html>
<form action=http://localhost/upis.php method=post>
<p> e-meil: <br /> <input type=text name=emeil />
</p>
<p> ifra: <br /> <input type=password name=ifra />
</p>
<input type=submit name=upis value=Upii se! />
</ form>
</html>
U fajlu upis.php
<?php echo $_POST[email]; ?>
Supeglobalna $_POST
Pomou HTTP metode post se alju podaci odvojeno kroz
formular
Podaci poslati post metodom se ne mogu memorisati
(bookmark) niti keirati. Zbog toga pruaju veu
bezbednost prenosa. Podaci nisu ograniene duine kao
kod get metode.
Klijent alje serveru
POST /formulari/upis.php HTTP/1.1
Host: primer.rs
Content-Type: application/x-www-form-urlencoded
ime=Pera&telefon=063-330-754
Server odgovara
HTTP/1.1 201 Created
Date:
Content-Length: 0
Location:http://primer.rs/formulari/upis.php
Superglobalna $_FILE
$_FILE je matrica koja se koristi kod
aploudovanja fajlova.
Elementi ove matrice opisuju zadati fajl:
$_FILE[nameAtribut][name] ime fajla koji
je aploudovan kroz input tag iji je name
atribut jednak nameAtribut
$_FILE[nameAtribut][type] tip fajla
$_FILE[nameAtribut][size] veliina fajla
$_FILE[nameAtribut][tmp_file] privremeno
ime fajla
Superglobalna $_FILE
Jo jedan element ove matrice:
$_FILE[nameAtribut][error] opisuje greku
do koje je dolo pri aploudovanju fajla, moe
imati sledee vrednosti:
UPLOAD_ERR_OK: fajl je uspeno aploudovan
UPLOAD_ERR_INI_SIZE: fajl prelazi maksimalnu
veliinu dozvoljenu parametrom upload_max_filesize
specificiranu u php.ini
UPLOAD_ERR_FORM_SIZE: fajl prelazi max veliinu
specificiranu u formularu parametrom
MAX_FILE_SIZE (ne koristi se)
UPLOAD_ERR_PARTIAL: fajl je samo delimino
aploudovan
UPLOAD_ERR_NO_FILE: fajl nije bio specificiran
Superglobalna $_COOKIE
$_COOKIE je niz koji nosi informacije o
kolaiima.
Indeksi ovog niza su imena kolaia, a
vrednosti su vrednosti kolaia.
Kolaii se setuju funkcijom:
setcookie ( ime [, vrednost [, rok [, putanja [,
domen [, zatita [, httponly ]]]]]] )
U php.ini se definie veliina bafera u kojem
se uva html strana pre slanja, da ne bi
zaglavlje bilo poslato pre setovanja kolaia,
npr:
output_buffering=1024
Superglobalna $_SESSION
$_SESSION je niz indeksa (kljueva)
i vrednosti koji se vezuje za
korisnika.
Sesija se generie pomou funkcije
start_session() kojom se kolai ija
je vrednost jednaka SID (ID sesije)
alje korisniku.
Rad sa formularima
Primer formulara u jednom fajlu upis2.php:
<?php
if (isset($_POST["upis"])){

echo $_POST[emeil"], '<br />', $_POST['sifra'];}

else {

echo <<<EOT
<form action="http://localhost/upis2.php" method="post">
<p> E-meil: <br /> <input type="text" name=emeil" /> </p>
<p> ifra: <br /> <input type="password" name="sifra"/> </p>
<input type="submit" name="upis" value="Upii se!" />
</form>
EOT;
}?>
Rad sa formularima
Prosleivanje promenljivih
od PHP ka JavaScript-u
Primer:
<?php
$user_id = $_GET["uid"]; ?>
<script type=text/javascript">
var user_id = <?php echo($user_id);?>;
alert("Your user ID is:" + user_id);
</script>
Rad sa formularima:
PHP i JavaScript
Primer fajla upis3.php:
<html>
<form action="http://localhost/upis3.php" method=post>
<p> e-meil: <br /> <input type="text" name="emeil" ></p>
<p> ifra: <br /> <input type="password" name="sifra"/>
</p>
<input type="submit" name="upis" value="Upii se!" />
</form>
<?php if (isset($_POST["upis"])){
$x='emeil;?>
<script type="text/javascript">
alert ("Emeil je: <?php echo $_POST[$x]; ?>");
</script>
<?php } ?>
</html>
Rad sa formularima:
PHP i JavaScript
Rad sa formularima:
izbor opcija
Primer formulara sa listom u fajlu checkbox.php, daje niz sa value
atributiima izabranih polja:
<?php
echo <<<EOT
Izaberite omiljene programske jezike? <br />
<form action="checkbox.php" method=post>
<input type="checkbox" name="jezici[]" value="csharp"/> C# <br />
<input type="checkbox" name="jezici[]" value="jscript"/> JavaScript <br />
<input type="checkbox" name="jezici[]" value="perl"/> Perl <br />
<input type="checkbox" name="jezici[]" value="php"/> PHP <br />
<input type="submit" name="upis" value="Poalji!" />
</form>
EOT;
if (isset($_POST['upis']))
{echo "Izabrali ste jezike: <br />";
foreach($_POST['jezici'] AS $jezik) echo "$jezik <br />";}
?>
Rad sa formularima:
izbor opcija
Konfiguracija za
aploudovanje fajlova
U php.ini fajlu se mogu konfigurisati:
file_uploads On|Off
max_execution_time brojSekundi
memory_limit brojMegaBajtaM (za dati
skript)
upload_max_filesize brojMegaBajtaM
upload_tmp_dir imeStringa
post_max_size brojMegaBajtaM (koliina
podataka po jednoj post metodi vei od
upload_max_filesize)
Aploudovanje fajla
Primer fajla aploudFajla.php :
<form action="aploudFajla.php"
enctype="multipart/form-data"
method=post>
Broj indeksa: <br /> <input type="text"
name=brojIndeksa" /> <br />
Domai: <br /> <input type="file"
name="domaci" /> <br />
<input type="submit" name="posalji"
value="Poalji!" />
</form>
Aploudovanje fajla
<?php
define ("fajloviDomaci","C:\Program
Files\wamp\www\domaci\\");
if (isset($_FILES['domaci'])){
if (is_uploaded_file($_FILES['domaci']['tmp_name'])){
if ($_FILES['domaci']['type'] != 'application/pdf'){
echo "<p> Domai moe biti aploudovan samo u *.pdf
formatu </p>";}
else {
$brojIndeksa=$_POST[brojIndeksa'];
$rezultat=move_uploaded_file($_FILES['domaci']
['tmp_name'],fajloviDomaci._$brojIndeksa.pdf");
if ($rezultat==1) echo "<p> Fajl je uspeno aploudovan.
</p>";
else echo "<p> Fajl nije aploudovan, pokuajte ponovo.
</p>";}}}
?>
Aploudovanje fajla

Fajl _05-132.pdf je u folderu domaci


Mime tipovi
Tip fajla se moe biti bilo koji
mime tip, koji se mogu nai npr.
na:
http://www.webmaster-toolkit.com/
mime-types.shtml
Aploudovanje fajlova
sa vremenskim oznakama
Primer aploudFajla2.php:
<form action="aploudFajla2.php" enctype="multipart/form-data" accept-
charset="utf-8" method=post>
Broj indeksa: <br /> <input type="text" name="brojIndeksa" /> <br />
Domai: <br /> <input type="file" name="domaci" /> <br />
<input type="submit" name="posalji" value="Poalji!" />
</form>

<?php
define ("fajloviDomaci","C:\Program Files\Apache Software
Foundation\Apache2.2\htdocs\domaci\\");
if (isset($_FILES['domaci'])){
if (is_uploaded_file($_FILES['domaci']['tmp_name'])){
if ($_FILES['domaci']['type'] != 'application/msword'){
echo "<p> Domai moe biti aploudovan samo u *.doc formatu
</p>";}
else {
Aploudovanje fajlova
sa vremenskim oznakama
Nastavak primera:
$datum=date("d-m-y");
if (!is_dir(fajloviDomaci.$datum)) {
mkdir(fajloviDomaci.$datum);}
$brojIndeksa=$_POST['brojIndeksa'];
$rezultat=move_uploaded_file($_FILES['domaci']
['tmp_name'],fajloviDomaci.
$datum."\\"."_$brojIndeksa.doc");

if ($rezultat==1) echo "<p> Fajl je uspeno aploudovan. </p>";


else echo "<p> Fajl nije aploudovan, pokuajte ponovo.
</p>";}}}
?>
Rezultat: poslat fajl se nalazi u folderu \domaci\03-05-2009
pod imenom _05-132.doc gde je 05-132 broj indeksa
studenta koji je poslao fajl
Rad sa fajlovima
Postoji veliki broj funkcija za rad sa
fajlovima, mogu se nai na
http://www.php.net/manual/en/ref.filesys
tem.php
Najvanije funkcije:
fopen (imeFajla, mod [,ukljuiPutanju])
tipa je resurs na koji se kasnije referie,
mod moe biti w, w+, r Moe se
koristiti putanja specificirana u httpd fajlu sa
komandom include_path
fwrite (refFajla, string)
fread (refFajla, brojBajtova)
fclose (refFajla)
Funkcije za rad sa fajlovima
Primeri:
feof(refFajla) kraj fajla
filesize(imeFajla)
rename(imeFajla1,imeFajla2)
is_readable(imeFajla)
file(imeFajla [,flag]) pretvara fajl u
niz redova, flag moe biti
FILE_IGNORE_NEW_LINES, ili
FILE_SKIP_EMPTY_LINES
Rad sa kolaiima
Sintaksa:
setcookie ( ime [, vrednost [, rok [, putanja
[, domen [, zatita [, httponly ]]]]]] )
ime, vrednost su stringovi
rok je rok trajanja kolaia u sekundama
putanja je direktorijum odakle se moe pristupiti
kolaiu
domen je domen odakle se moe pristupiti
kolaiu
zatita je TRUE ako se za setovanje kolaia trai
sigurna HTTPS konekcija
httponly je TRUE ako se kolai moe menjati
samo kroz HTTP konekciju
Rad sa kolaiima: setovanje
U folderu domaci se nalazi fajl kuki.php:
<?php
$vrednost = Neka vrednost kolaia!';
setcookie("testKolai", $vrednost, time()
+3600, "/domaci/");
/* istie za sat */
if (isset($_COOKIE["testKolai])) {
echo $_COOKIE["testKolai"];}
?>
Rad sa kolaiima: itanje
Primer: U koren (root) direktorijumu
(C:\Program Files\wamp\www) se nalazi
kuki2.php:
<?php
echo $_COOKIE["testKolai"];?>
Rezultat: Kada se pokrene kuki.php, a
zatim kuki2.php, na ekranu nita nije
ispisano, jer kuki2.php nije u dozvoljenom
direktorijumu (folderu)
Rad sa kolaiima: itanje
Primer: U direktorijumu \domaci
(C:\Program Files\wamp\www\domaci) se
sada nalazi kuki2.php:
<?php
echo $_COOKIE["testKolai"];?>
Rezultat: Kada se pokrene kuki.php, a
zatim kuki2.php, na ekranu se pojavi:
Neka vrednost kolaia!
Rad sa kolaiima: brisanje
Za rok vanosti kolaia se setuje proli
trenutak:
<?php
$vrednost = Neka vrednost kolaia!';
setcookie("testKolai", $vrednost, time()-
3600, "/domaci/");
/* isteklo trajanje kolaia */
echo $_COOKIE["testKolai"];
?>
Setovanje kolaia:
Napomena
Kolai se setuje u zaglavlju koje se alje.
Ukoliko se zaglavlje poalje pre nego to
je kolai setovan, kolai nee biti
poslat.
Zato postavljanje polja u zaglavlju mora
ii pre komande sa izlazom (npr. echo).
Alternativno se u fajlu php.ini ukljui
opcija output_buffering da bi HTTP
zaglavlje ekalo i sadraj
output_buffering=x
Kolai niz
Primer:
<?php
setcookie(kuki[tri]", kukitri");
setcookie(kuki[dva]", kukidva");
setcookie(kuki[jedan]", kukijedan");
if (isset($_COOKIE[kuki'])) {
foreach ($_COOKIE[kuki'] as
$indeks => $vrednost) {
echo "$indeks : $vrednost <br />\n};}
?>
Rezultat:
tri : kukitri
dva : kukitri
jedan : kukijedan
Konfiguracija sesija
Parametri koji mogu da se konfiguriu
u php.ini
session.save_handler files|mm|user
(odreuje gde e biti sauvane informacije
o sesiji, na disku, u RAM-u ili u bazi
podataka)
session.save_path putanja putanja do
direktorijuma sa fajlovima sesije
session.use_cookies 0|1
session.use_only_cookies 0|1
session.name string po defoltu je
PHPSESSID (ime kolaia)
Konfiguracija sesija
Parametri koji mogu da se
konfiguriu u php.ini
session.auto_start 0|1
session.cookie_lifetime brojSekundi
po defoltu 0
session.cookie_path string

session.cookie_domain string
Konfiguracija sesija
Parametri koji mogu da se konfiguriu
u php.ini
session.gc_maxlifetime brojSekundi
session.use_trans_sid = 0|1

(omoguava automatsko dodavanje SID-a


URL-ovima)
url_rewriter_tags string po defoltu
a=href, area=href, frame=src, input=src,
form=fakeentry
(ako je prethodni parametar 1, onda se svi
linkovi auriraju da ukljue SID)
Komande sesija
Komande
session_start() startovanje sesije
session_unset() oslobaanje svih
promenljivih pridruene sesiji
session_destroy() unitavanje sesije,
vraa TRUE ako je sesija uspeno
unitena
Komande sesija
Komande
session_id([string]) setovanje ili itanje
ID sesije, SID-a:
session_name([string]) setovanje ili
itanje imena sesije, po defoltu
PHPSESSID, koji je ime kolaia ija je
vrednost SID
session_get_cookie_params()
session_set_cookie_params( rok [, putanja

[, domen [, zatita [, httponly ]]]]]] ) ime


kolaia je ime sesije, a vrednost je SID
Dodeljivanje i brisanje
vrednosti sesija
Dodeljivanje i brisanje vrednosti, primer:
<?php
session_start();
$_SESSION[username]=Jovan;
echo Va username je: .$_SESSION[username].
. <br />;
unset($_SESSION[username]);
echo Va username je sada: .$_SESSION[username].
.;
?>
Rezultat:
Va username je: Jovan.
Va username je sada: .
Primer sesije prosleene
preko URL-a
U fajlu sesija.php:
<?php
session_start();
$_SESSION["username"]="Jovan";
echo "Va username je:" .
$_SESSION["username"].
". <br />";
echo session_name(), "<br />";
echo session_id(), "<br />";
?>
<a href="http://localhost/sesija2.php?<?php
echo SID; ?>"> Link ka drugoj stranici </a>
Primer sesije prosleene
preko URL-a
U fajlu sesija2.php:
<?php
session_start();
echo "Va username je:.
$_SESSION["username"].". <br />";
echo session_name(), "<br />";
echo session_id(), "<br />";
?>
Primer sesije prosleene
preko URL-a
Primer sesije prosleene
preko kolaia
U fajlu sesija3.php:
<?php
session_name('NovoIme');
session_id('jlkfjs624628');
session_start();
$_SESSION["username"]=Pera";
echo "Va username je:" .$_SESSION["username"].
". <br />";
echo session_name(), "<br />";
echo session_id(), "<br />";
?>
Primer sesije prosleene
preko kolaia
U fajlu sesija4.php:
<?php
session_name('NovoIme');
session_start();
echo "Va username je:.
$_SESSION["username"].". <br />";
echo session_name(), "<br />";
echo session_id(), "<br />";
?>
Primer sesije prosleene
preko kolaia
Trajanje sesije prosleene
kolaiima
Ukoliko u prethodnom sluaju ukucamo
u brauzer URL fajla
http://localhost/sesija4.php, dobiemo
isti rezultat u brauzeru. Ukoliko
zatvorimo brauzer, i ukucamo isti URL
izgubie se podaci o sesiji, tj. vrednost
polja username.
Trajanje kolaia se moe produiti ili
konfiguracijom u php.ini fajlu, ili
komandom pre session_start():
session_set_cookie_params(rok);
XHTML e-meil podsetnik
Primer slanja e-meila:
<a href="mailto:aleksandra@etf.rs?subject=Primer
poruke&body=Napiite va komentar"> Poaljite e-
mail poruku! </a>
Slanje formulara e-meilom
Primer:
<html>
<form method="post" action="mailto: aleks@ieee.org?
subject=primer">
Ime i prezime: <input type="text" name="ime_prez"
value="Unesite ime i prezime" size="30" /> <br />
Proizvod: <input type="text" name="proizvod"
value="Unesite proizvod" size="30" /> <br />
Adresa: <br />
<textarea name="adresa" rows="6" cols="30" >
</textarea>
<input type="submit" value="Poalji">
</form>
</html>
Slanje formulara e-meilom
Konfiguracija i-meil servisa
U fajlu php.ini
SMTP string definie SMTP server, po
defoltu localhost
sendmail_from string definie e-meil

poaljioca
smtp_port ceoBroj po defoltu 25

sendmail_path string definie putanju

do sendmail klijenta, koji se povezuje sa


serverom
Konfiguracija i-meil servisa
Da bi se pokrenuo meil servis
potrebno je implementirati meil
server i povezati ga sa wamp
serverom.
PHPMailer implementira siguran
prenos i-meila uz upotrebu SSL/TLS
protokola
http://blog.techwheels.net/send-email-
using-wamp-server/
e-mail pomou PHP
Najvanija funkcija je mail, ija je
sintaksa
mail (to, subject, poruka [,
dodatnaZaglavlja [,
dodatniParametri]])
Jednostavan primer:

mail(aleks@ieee.org , Kratko, Prvi


PHP e-meil);
e-mail pomou PHP
Primer:
$zagl=From:milan@etf.rs\r\n;
$zagl.=Bcc:pera@etf.rs;
$zagl.=Reply-To:milan@etf.rs\r\n;
$zagl.=Content-Type:text/plain;\r\n
charset=iso-8859-1\r\n;
$primaoci=aleks@ieee.org,amarija@etf.rs;

mail($primaoci, Kratko, Drugi PHP e-


meil,$zagl);
Formular za slanje e-meila
Primer formulara za slanje e-meila, u fajlu
emeilform.php
<?php
if (isset($_POST['upis'])){
$zagl="From:".$_POST['emeilPosh]."\r\n";
$zagl.="Content-Type:text/plain;\r\n charset=iso-
8859-2\r\n";
$primaoc=$_POST['emeilPrim'];
$tema=$_POST['imePrez'];
mail($primaoc, $tema, $_POST['poruka'],
$zagl);} ?>
Formular za slanje e-meila
Nastavak fajla emeilform.php:
<html>
<head><meta http-equiv="content-type" content="text/html;
charset=UTF-8"></head>
<form method="post" action="emeilForm.php">
Ime i prezime: <input type="text" name="imePrez" value="Unesite ime i
prezime"
size="30" /> <br />
Od: <input type="text" name="emeilPosh" value="Unesite svoj e-meil"
size="30"
/> <br />
Za: <input type="text" name="emeilPrim" value="Unesite e-meil primaoca"
size="30" /> <br />
Adresa: <br />
<textarea name="poruka" rows="6" cols="30" > Unesite tekst </textarea>
<input type="submit" name='upis' value="Poalji">
</form>
</html>
Formular za e-meil
Autentifikacija
Autentifikacija se zasniva na HTTP
autentifikaciji opisanoj u IETF RFC2617
Pomou funkcije header() se alju
komande brauzeru da treba trai login
podatke od korisnika
Podaci koje je korisnik ukucao se nalaze u
superglobalnoj promenljivoj $_SERVER
['PHP_AUTH_USER'], i
$_SERVER['PHP_AUTH_PW']
Autentifikacija: Primer kada
su lozinke u fajlu
Fajl koji sadri korisnika imena i
lozinke je lozinke.txt
aleks : 12cikpogodi
pera : 3jhkj34
milan : 89kjlkjal
marija : 98nkj32kk
Autentifikacija: Primer kada
su lozinke u fajlu
Kod koji generie fajl sa kriptovanim lozinkama
<?php
$lozinke = file("lozinke.txt");
$fl=fopen("sifrovaneLozinke.txt","w");
foreach ($lozinke as $login){
list($username,$lozinka)=explode(":",$login);
$lozinka=trim($lozinka);
$username=trim($username);
fwrite($fl,$username.":".md5($lozinka)."\n");}
fclose($fl);
?>
Autentifikacija: Primer kada
su lozinke u fajlu
Fajl sa kodom za autentifikaciju:
<?php
$autorizovan = FALSE;
if (isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW']))
{$sifLoz = file("sifrovaneLozinke.txt");

if (in_array($_SERVER['PHP_AUTH_USER'].":"
.md5($_SERVER['PHP_AUTH_PW'])."\n", $sifLoz))
$autorizovan = TRUE;}

if (! $autorizovan) {
header('WWW-Authenticate: Basic Realm');
header('HTTP/1.0 401 Neautorizovan');
/* Ako korisnik ukuca Cancel dobija se sledee */
print('Morate dati ispravne login podatke!');
exit;}
echo "Materijal sa restrikcijama ..."
?>
Autentifikacija: Primer kada
su lozinke u fajlu
PHP i DOM (Document
Object Model)
DOM je interfejs sa veb stranom kao
hijerarhijskom strukturom
Pomou PHP-a se mogu itati,
dopisivati, ili menjati pojedini
elementi veb strane.
Sve klase koje ine DOM:

http://php.net/manual/en/book.dom.p
hp
DOM klasa DOMNode i njeni
metodi
DOMNode::appendChild Dodaje dete
DOMNode::cloneNode Klonira nod (element)
DOMNode::getNodePath Nalazi putanju do
noda
DOMNode::hasAttributes Proverava da li nod
ima atributa
DOMNode::hasChildNodes Provera da li nod
ima dece
DOMNode::insertBefore Dodaje novi vor pre
datog noda
DOMNode::removeChild Uklanja dete
DOMNode::replaceChild Zamenjuje dete
...
Osobine DOMNode klase
nodeName, nodeValue, nodeType,
parentNode, childNodes, firstChild,
lastChild, previousSibling,
nextSibling, attributes,
textContent...
DOM klasa DOMDocument i
njeni metodi
DOMDocument::createElement Kreiraj novi element
DOMDocument::createTextNode Kreiraj novi tekst
element
DOMDocument::getElementById Nadji element sa
datim ID-em
DOMDocument::getElementsByTagName Nadji
elemente sa datim imenom taga
DOMDocument::loadHTML Upii HTML element iz
stringa
DOMDocument::loadHTMLFile Upii HTML element iz
fajla
DOMDocument::saveHTML Sauvaj HTML element u
string
DOMDocument::saveHTMLFile Sauvaj HTML element u
fajl
...
DOM klasa DOMElement i
njene metode
DOMElement::getAttribute Vrednost atributa
DOMElement::getAttributeNode Daje atribut ali
kao element hijerarhijskog dokumenta
DOMElement::getElementsByTagName Daje
elemente sa datim tagom
DOMElement::hasAttribute Proverava da li element
ima dati atribut
DOMElement::removeAttribute Uklanja atribute
DOMElement::removeAttributeNode Uklanja
atribut definisan kao element
DOMElement::setAttribute Dodaje nov atribut
DOMElement::setAttributeNode Dodaje novi
atribut kao element
...
Primer rada sa DOM
klasama
Primer rada sa DOM klasama
<?php
$domDokument = new DOMDocument('1.0', "UTF-8");
$domElement = $domDokument->
createElement(field,neki podaci);
$domAtribut = $domDokument->
createAttribute(ime);
$domAtribut->value = vrednost atributa;
$domElement->appendChild($domAtribut);
$domDokument->appendChild($domElement);
$stringRezultat= $domDokument->saveXML();
echo $stringRezultat;
?>
Rezultat
<?xml version="1.0" encoding="UTF-8"?>
<field ime=vrednost atributa">neki podaci</field>
Primer rada sa vorovima
Primer
<?php
$doc = new DOMDocument();
$foo = $doc->createElement("foo");
$doc->appendChild($foo);
$bar = $doc->createElement("bar");
$foo->appendChild($bar);
$bazz = $doc->createElement("bazz");
$foo->appendChild($bazz);
echo $doc->saveXML();?>

Dobija se:
<foo>
<bar></bar>
<bazz></bazz>
</foo>
Primer rada sa DOM
hijerarhijskom strukturom
<?php
$xml = <<<XML <?xml version="1.0"?>
<userdata>
<name>Jovan</name>
<name>Pera</name>
</userdata> XML;
$doc = new DOMDocument();
$doc->loadXML($xml);
$names = $doc->firstChild->
getElementsByTagName("name");
$myname = $names->item(0)->nodeValue;
echo ($myname);
4. PHP i baze podataka
Uvod
Konfigurisanje privilegija
mySQL komande
PHP komande za rad sa mySQL (my
Structured Query Language)
bazama podataka
MySQL
Najpoznatija i najvie koriena open-sors
baza podataka zasnovana na SQL jeziku
Korienje ove baze podataka je besplatno
MySQL komande su neosetljive na veliinu
slova (case sensitive), ali je praksa se piu
velikim slovima. Promenljive su osetljive na
veliinu slova.
Uputstvo za korienje MySQL baze se moe
nai na:
http://dev.mysql.com/doc/refman/5.6/en/
index.html
Trite baza podataka 2013

www.vertabelo.com
MySQL i druge open-sors
baze 2014

jelastic.com
Baze podataka
Baze podataka se sastoje iz tabela, koje
se sastoje iz kolona
Korisnici mogu pristupati ovim bazama,
tabelama, kolonama u zavisnosti od
svojih privilegija koje se prethodno
konfiguriu
Pristup moe biti radi kreiranja baze,
brisanja baze, dodavanja ili menjanja
informacija u bazi, i brisanja informacija u
bazi
Konfigurisanje MySQL
baza podataka i privilegija
Moe se pristupiti koristei razne klijente:
mysql klijent podrazumeva el komandni
interfejs, i moe da konfigurie baze podataka
i da im pristupa
mysqladmin klijent se fokusira na
administrativne komande
MySQL Administrator je GUI klijent razvijen od
strane mySQL tima
phpMyAdmin je GUI klijent prilagoen PHP-u
Organizacija privilegija
Privilegije se zapravo nalaze u mysql bazi
podataka, koja se sastoji iz sledeih tabela:
user odreuje korisnike koji mogu da se loguju na
server sa bilo kog hosta i njihove privilegije
db odreuje koji korisnici mogu da pristupe kojim
bazama podataka
host odreuje hostove sa kojih se moe pristupiti
kojim bazama
tables_priv: odreuje koji korisnici mogu da pristupe
kojim tabelama date baze
columns_priv: odreuje koji korisnici mogu da
pristupe kojim kolonama date tabele date baze
mysql tabela user
Column Datatype Null Default

Host char(60) binary No No

User char(16) binary No No

Password char(41) binary No No

Select_priv enum(N, Y) No N

Insert_priv enum(N, Y) No N

Update_priv enum(N, Y) No N


mysql tabela db
Column Datatype Null Default

Host char(60) binary No No

Db char(64) binary No No

User char(16) binary No No

Select_priv enum(N, Y) No N

Insert_priv enum(N, Y) No N

Update_priv enum(N, Y) No N


mysql tabela host
Column Datatype Null Default

Host char(60) binary No No

Db char(64) binary No No

Select_priv enum(N, Y) No N

Insert_priv enum(N, Y) No N

Update_priv enum(N, Y) No N

Delete_priv enum(N, Y) No N


mysql tabela tables_priv
Column Datatype Null Default

Host char(60) No No

Db char(64) No No

User Char(16) No No

Table_name char(64) No No

Grantor Char(77) No No

Timestamp timestamp Yes Current


timestamp
Table_priv skupPrivilegija No No

Column_priv skupKolona No No
mysql tabela columns_priv
Column Datatype Null Default

Host char(60) No No

Db char(64) No No

User Char(16) No No

Table_name char(64) No No

Column_name Char(64) No No

Timestamp timestamp Yes Null

Column_priv skupPrivKolona No No
mysql tabela procs_priv
Column Datatype Null Default

Host char(60) No No

Db char(64) No No

User Char(16) No No

Routine_name char(64) No No

Routine_type enum No No

Grantor Char(77) binary No No

Proc_priv skupKolona No No

Timestamp timestamp Yes Null


Kreiranje i brisanje
korisnika baze
Korisnik se kreira bez privilegija
naredbom:
CREATE USER korisnik1 [IDENTIFIED BY
[PASSWORD] lozinka1']
[, korisnik2 [IDENTIFIED BY [PASSWORD]
lozinka2']]
Primer:
mysql> CREATE USER aleks@ localhost
IDENTIFIED BY 12cikpogodi;
Korisnik se brie komandom
DROP USER korisnik1 [, korisnik2]
Dodeljivanje privilegija
korisniku
Privilegije se dodeljuju naredbom
GRANT tipPrivilegije1 [(listaKolona1)] [,
tipPrivilegije2 [(listaKolona2)] ...]
ON {imeTabele | * | *.* | imeBaze.*}
TO korisnik1 [IDENTIFIED BY lozinka1']
[, korisnik2 [IDENTIFIED BY lozinka2'] ...]
[REQUIRE {NONE|SSL|X509|ISSUER
sertifikacionoTelo}]
[WITH opcija]
Primer
mysql> GRANT UPDATE ON knjige.* TO marija@
192.168.1.103;
Oduzimanje privilegija
korisniku
Privilegije se oduzimaju korisniku
naredbom:
REVOKE tipPrivilegije1 [(listaKolona1)] [,
tipPrivilegije2 [(listaKolona2)] ...]
ON {imeTabele | * | *.* | imeBaze.*}
FROM korisnik1 [, korisnik2 ...]
Primer:

mysql> REVOKE INSERT ON knjige.* FROM


marija@192.168.1.102;
Tip korisnikih privilegija
SELECT dozvoljava korisnicima da
selektuju (itaju) zapise iz tabela.
INSERT dozvoljava korisnicima da upisuju
nove zapise (redove) u tabelu.
UPDATE dozvoljava korisnicima da menjaju
postojee zapise u tabelama.
DELETE dozvoljava korisnicima da briu
zapise (redove) iz tabela
INDEX dozvoljava korisnicima da
indeksiraju tabele, to omoguava bre
pretraivanje
Tip korisnikih privilegija
CREATE dozvoljava kreiranje baza ili
tabela
ALTER dozvoljava korisnicima da menjaju
strukturu baze podataka.
Dodavanje novih kolona
Promena imena kolona ili tabela
Promena tipa podataka u okviru tabela
DROP dozvoljava brisanje baza podataka
ili tabela
Tip korisnikih privilegija
USAGE daje minimalne privilegije.
Ova opcija je korisna ako se eli
samo kreirati novi korisnik.
Ima i drugih tipova: CREATE USER,
PROCESS, SHOW DATABASES.
Kompletna lista na:

http://dev.mysql.com/doc/refman/5.6/
en/grant.html
MySQL komande
Najvanije komande: CREATE,
DROP, SELECT, INSERT, DELETE,
UPDATE
Kompletan spisak komandi:

http://dev.mysql.com/doc/refman/5
.6/en/sql-syntax.html
Kreiranje baze i brisanje
baze
Baza podataka se kreira jednostavnom
naredbom:
CREATE DATABASE imeBaze;
Baza podataka se brie naredbom
DROP DATABASE imeBaze;
U bazu se ulazi naredbom
USE imeBaze;
Alternativno tabela i kolone se zovu:
imeBaze.imeTabele i
imeBaze.imeTabele.imeKolone
Kreiranje tabele
CREATE TABLE [IF NOT EXISTS] imeTabele (
imeKolone1 tipKolone1 [atributiKolone1],
[imeKolone1 tipKolone2 [atributiKolone2],]);
Primer:
CREATE TABLE zaposleni (
id INT UNSIGNED NOT NULL AUTO_INCREMENT
PRIMARY KEY,
ime VARCHAR(25) NOT NULL,
prezime VARCHAR(25) NOT NULL,
telefon VARCHAR(45) NOT NULL);
Tip i atributi kolona
Tipovi kolona mogu biti INT, FLOAT, DOUBLE, INT
UNSIGNED, DATE, TIMESTAMP, CHAR, NATIONAL
CHAR CHARACTER SET imeAlfabeta, [NATIONAL]
[CHARACTER SET charset_name] VARCHAR
(duina)
Kompletna lista tipova se moe nai na:
http://dev.mysql.com/doc/refman/5.6/en/data-
type-overview.html
Atributi kolona su: DEFAULT vrednost,
AUTO_INCREMENT, NOT NULL, PRIMARY KEY,
UNIQUE,... Kompletna lista:
http://dev.mysql.com/doc/refman/5.6/en/create-
table.html
Menjanje tabela
Tabela se menja komandom
ALTER TABLE imeTabele [ADD COLUMN|
CHANGE|DROP] [imeKolone1]
imekolone2
[,tipKolone2[,atributiKolone2]] [AFTER
imekolone3]
Primer:

ALTER TABLE zaposleni ADD COLUMN email


VARCHAR(20) AFTER telefon;
itanje podataka iz baze
Sintaksa komande
SELECT izrazKolona1 [,izrazKolona2 ]
[FROM imeTabele1[,imeTabele2]
[GROUP BY {imeKolone3|izrazKolona3}]
[WHERE uslov]][ORDER BY imeKolone
[ASC|DESC]]
Primer:

SELECT name, address FROM customers


ORDER BY name ASC
Funkcije koje koriste kolone
AVG(imeKolone) daje prosenu vrednost
kolona
COUNT(imeKolone) daje broj ne NULL
vrednosti u okviru kolone
COUNT(DISTINCT imeKolone) daje broj
razliitih vrednosti u okviru kolone
MIN(imeKolone), MAX(imeKolone)
STD(imeKolone) daje standardnu devijaciju
SUM(imeKolone) zbir vrednosti kolona
LOCATION(imeKolone,string) lociranje
vrednosti kolone u stringu
Primeri itanja kolona uz
pomo funkcija
Korienje funkcija
SELECT AVG(cena) FROM kupovine;
Korienje funkcija i grupisanja,
nalazi minimalnu cenu koju je platio
svaki kupac
SELECT MIN(cena) FROM kupovine
GROUP BY id_kupca;
Upisivanje podataka u bazu
Sintaksa za upisivanje novog zapisa u
tabelu:
INSERT INTO tabela VALUES (vrednost1,
vrednost2, ..);
Primer:
INSERT INTO proizvodi VALUES
('',Jabuke',1.23);
U primeru za vrednost prve kolone je
korien prazan string jer je kolona
definisana kao AUTO_INCREMENT.
Brisanje podataka iz baze
Opta sintaksa je:
DELETE FROM imeTabele [WHERE
uslov] [ORDER BY ...] [LIMIT broj]
Primer:

DELETE FROM zaposleni WHERE


zaposleni.ime=Marko'
Auriranje podataka u bazi
Opta sintaksa je:
UPDATE tabela SET imeKolone1=izraz1,
imeKolone2=izraz2,... [WHERE uslov]
[ORDER BY ...] [LIMIT broj] ;
Primer

UPDATE studenti SET


email=mnatasa@etf.rs'
WHERE ime=Nataa Maksi';
PHP komande za rad sa
MySQL bazom
Razvijen je skup funkcija za rad sa
MySQL bazama, od kojih su najvanije:
mysqli_connect, mysqli_close,
mysqli_select_db, mysqli_query,
mysqli_db_query, ...
Kompletna lista se moe nai na stranici

http://www.php.net/manual/en/
class.mysqli.php
PHP klase za rad sa MySQL
bazom
Razvijen je skup funkcija za rad sa
MySQL bazama, od kojih su najvanije:
mysqli::query, mysqli_result::fetch_all,
mysqli::close, ...
Kompletna lista se moe nai na stranici

http://www.php.net/manual/en/class.
mysqli.php
Uspostavljanje i raskidanje
veze sa bazom
Sintaksa
link=mysqli_connect(host[,korisnik[,lozinka[
, baza]])
mysqli_close(link)
Primer:

$l=mysqli_connect(localhost, aleks,
12cikpogodi);
mysqli_close($l);
Uspostavljanje i raskidanje
veze sa bazom pomou klasa
Sintaksa
link= new mysqli(host[,korisnik[,lozinka[,
baza]])
link->close()
Primer:

$l=new mysqli(localhost, aleks,


12cikpogodi);
$l->close();
Kreiranje, brisanje i
ispisivanje baza
Sintaksa kreiranja i brisanja baza:
mysqli_query (link [, upit])
Primer kreiranja baze:

$veza=mysqli_connect ('localhost');
$sql='CREATE DATABASE IF NOT EXISTS
katedra DEFAULT COLLATE
utf8_general_ci';
mysqli_query ($veza,$sql);
Kreiranje, brisanje i
ispisivanje baza-klase
Sintaksa kreiranja i brisanja baza:
$veza->query (upit)
Primer kreiranja baze:

$veza=new mysqli('localhost');
$sql='CREATE DATABASE IF NOT
EXISTS katedra DEFAULT
CHARACTER SET utf8';
$veza->query($sql);
Kreiranje, brisanje i
ispisivanje tabele-klase
Primer kreiranja baze:
$veza=new mysqli('localhost, NULL,
NULL, firma);
$sql=CREATE TABLE Zaposleni
(ID int PRIMARY KEY,
Prezime varchar(255),
Ime varchar(255),
Adresa varchar(255),
Grad varchar(255));
$veza->query($sql);
PHP komande za itanje iz
baze
Metode klase mysqli_result na
http://www.php.net/manual/en/class.
mysqli-result.php
Metode:

$rez=$veza->mysqli($upit);
$rez->fetch_all();
$rez->fetch_assoc();
$rez->fetch_array();
itanje iz baze pomou
PHP-a
Primer:
<?php
if isset($_POST[unesi]){
$veza=new mysqli(localhost, aleks, tajna,
kompanija);
$upit=SELECT proizvod,cena FROM proizvodi
WHERE cena<{$_POST[maxcena]};
$rez=$veza->query($upit);
while ($red=$rez->fetch_assoc()){
echo $red[proizvod].:. $red[cena];}}
?>
Brisanje iz baze pomou
PHP-a
Primer:
<?php
if isset($_POST[unesi]){
$veza=new mysqli(localhost, aleks, tajna,
kompanija);
for ($i=0; $i<count($_POST[IDreda]); $i++){
$IDreda=$_POST[IDreda][$i];
$upit=DELETE FROM proizvodi WHERE
IDreda=$IDreda;
$rez=$veza->query($upit);}
if ($rez) echo Podaci izbrisani!
$veza->close();}
?>
Upis u bazu pomou PHP-a
Primer:
<?php
if isset($_POST[submit]){
$veza=new mysqli(localhost, aleks, tajna, kompanija);
$IDproizvoda=$_POST[IDproizvoda];
$naziv=$_POST[naziv];
$cena=$_POST[cena];
$upit=INSERT INTO proizvodi SET
IDproizvoda=$IDproizvoda, naziv=$naziv
cena=$cena;
$rez=$veza->query($upit);
If ($rez) echo Podaci ubaeni!;}
?>
PHPMyAdmin
Users: dodavanje korisnika
Users: dodavanje korisnika
Ide se na Add User
Izabere se korisniko ime, ifra, i
host
Ovi podaci se koriste kada se
konektuje na server pomou
komandi mysqli_connect(), ili new
mysqli()
Rad sa bazama i tabelama
Export: uvanje baze
Export: uvanje baze
Ide se sa localhost-a (NE udje se
ubazu) na Custom opciju za Export
Method
Izabere se baza
Dodaju se komande DROP, CREATE,
USE, baze
Zatim klikne na Go
Domai mogu da se rade i
na
Portabilan XAMPP
http://portableapps.com/apps/develo
pment/xampp
Kodiranje fajla u brauzeru
Na (X)HTML stranici se definie
kodiranje (UTF-8)
Alternativno, u httpd.conf fajlu se doda
komanda
AddDefaultCharset UTF-8
Ili se u .htaccess fajl doda komanda i
onda se u folderu u kome je .htaccess
fajl primenjuje pravilo
AddDefaultCharset UTF-8
Kodiranje znakova u bazi
Pri kreiranju baze, tabela i kolona
definie se njihov alfabet, odnosno
CHARACTER SET i COLLATION
Da bi se u bazi videla slova srpske
azbuke, na primer, potrebno je
poslati podatke bazi koristei utf-8
kodiranje naredbom
mysqli_set_charset($veza,"utf8");

You might also like