Professional Documents
Culture Documents
08 - As - PHP
08 - As - PHP
08 - As - PHP
PHP
Literatura
Luke Welling, Laura Thomson, PHP i MySQL: Razvoj aplikacija za Web, prevod
Mikro knjiga, 2006.
ta je PHP?
PHP predstavlja jezik za pisanje skriptova koji rade na serveru.
PHP je projektovan za upotrebu na Web-u. Njegovu poetnu verziju je
1994.godine napravio Rasmus Lerdorf. Kasnije je PHP proao kroz
nekoliko verzija dok nije doao do danas aktuelne verzije PHP 5.
PHP je inicijalno bila skraenica za Personal Home Page, ali je znaenje
kasnije izmenjeno, pa sada oznaava PHP Hypertext Preprocessor.
PHP je proizvod otvorenog koda, tj. slobodan je pristup njegovom
izvornom kodu koji moe besplatno da se koristi, menja i dalje distribuira.
Knjizara
Rezultati narudzbe
Narudzbenica je obradjena.
PHP naredbe se ne vide na klijentskoj strani zato to je interpreter PHP koda naredbe
zamenio rezultatom. To znai da se iz PHP koda dobija isti HTML kod koji se moe gledati
pomou svakog itaa, odnosno itai ne moraju da razumeju PHP.
PHP kod se interpretira i izvrava na serveru (za razliku od JavaScript koda koji se izvrava
unutar itaa na klijentskoj strani).
Sintaksa PHP-a
PHP tag, koji pokazuje serveru gde poinje, a gde se zavrava PHP kod u okviru HTML koda,
moe biti napisan na etiri ekvivalentna naina (stila):
XML stil - Ovaj stil se preporuuje. Moe se koristiti sa XML dokumentima. Administrator
servera ga ne moe iskljuiti.
<?php echo <p>Narudzbenica je obradjena.</p>; ?>
Skraeni stil - Da bi se koristio ovaj stil, mora se u konfiguracionoj PHP datoteci setovati
opcija short_tags. Stil se ne preporuuje, jer ga administratori ponekad iskljuuju, to moe da
dovede do pogrenog tumaenja XML dokumenata.
<? echo <p>Narudzbenica je obradjena.</p>; ?>
SCRIPT stil - Ovaj stil je najdui. Moe se koristiti ako HTML editor pravi probleme sa
drugim stilovima.
<SCRIPT LANGUAGE=php> echo <p>Narudzbenica je obradjena.</p>; /script>
.
ASP stil - Ovaj stil se koristi u okruenjima ASP i ASP.NET (opcija asp_tags mora biti
setovana). Standardno je iskljuen.
<% echo <p>Narudzbenica je obradjena.</p>; %>
Naredba echo tampa, tj. ispisuje u itau tekst koji joj se zada.
Beline (white spaces), kao to su novi red i tabulator, koje su ispisane u PHP
kodu se zanemaruju (kao i u HTML kodu). Ipak, beline treba koristiti da bi kod
stranica bio itljiviji.
Primer: Iskazi
echo hello;
echo world;
10
Izgled na stranici
Knjizara
Rezultati narudzbe
Narudzbenica je obradjena u 12:42.
PHP sadri bogatu biblioteku funkcija koje se mogu koristiti u Web aplikacijama.
Veini funkcija ili treba proslediti neke podatke, ili one vraaju neke podatke.
Argument ili parametar funkcije je ulazni podatak koji se prosleuje kao znakovni
niz izmeu zagrada.
11
Srednji stil Ovaj stil podrazumeva uitavanje vrednosti promenljivih forme iz jednog od
nizova: _POST, _GET ili _REQUEST. Vrednosti svih polja forme e se nalaziti u nizu _POST ili
_GET, zavisno od upotrebljene metode za slanje forme. Bez obzira na metodu, sve vrednosti se
nalaze i u nizu _REQUEST.
$_POST[olovkakol]
Dugi stil Ovaj stil omoguava uitavanje vrednosti promenljivih forme preko
$HTTP_POST_VARS ili $HTTP_GET_VARS. Poto je zastareo, ovaj stil e biti ukinut.
$HTTP_POST_VARS[olovkakol]
12
Izgled na stranici
Knjizara
Rezultati narudzbe
Narudzbenica je obradjena u 12:42.
Narucili ste sledece:
2 olovke
3 sveske
Navedeni kod pravi dve nove promenljive $olovkakol i $sveskakol, koje sadre podatke
poslate iz forme metodom POST. U iskazu echo, taka (.) se koristi za nadovezivanje
teksta, tj. konkatenaciju.
U PHP-u, ime promenljive se moe pisati unutar navodnika zajedno sa drugim tekstom i tada ga PHP
zamenjuje odgovarajuom vrednou. Ovo ne vai ako se za predstavljanje teksta koriste apostrofi.
echo $olovkakol olovke<br />;
13
Identifikatori
Identifikatori predstavljaju imena promenljivih, imena funkcija i imena klasa.
Za identifikatore vae sledea pravila:
Identifikatori mogu biti bilo koje duine i mogu se sastojati od slova, brojeva i
podvlaka.
Identifikatori ne mogu da poinju cifrom.
PHP pravi razliku izmeu malih i velikih slova u identifikatorima. Izuzetak su
imena funkcija.
Promenljiva moe imati isto ime kao i funkcija, ali bi to zbog mogue zabune
trebalo izbegavati.
14
Korisnike promenljive
Osim promenljivih koje su prosleene iz forme, u skriptovima se mogu koristiti i
promenljive koje korisnik sam deklarie. U PHP-u ne treba deklarisati promenljive
pre nego to e biti koriene.
Primer: Ako elimo da izraunamo ukupan broj naruenih artikala i njihovu
ukupnu vrednost, moemo uvesti dve promenljive koje e na poetku biti
inicijalizovane na vrednost 0.
<?php
// formira promenljive sa kratkim imenima
$olovkakol = $_POST[olovkakol];
$sveskakol = $_POST[sveskakol];
echo <p>Narucili ste sledece: </p>;
echo $olovkakol. olovke<br />;
echo $sveskakol. sveske<br />;
$totalkol = 0;
$totalsuma = 0;
?>
15
Tipovi promenljivih
PHP podrava sledee osnovne tipove podataka:
integer celobrojni tip, koristi se za predstavljanje celih brojeva
double ili float pokretni zarez, koristi se za predstavljanje realnih brojeva
string znakovni tip, koristi se za predstavljanje znakovnih podataka
boolean logiki tip, koristi se za predstavljanje podataka tipa tano i netano
array niz, koristi se za uvanje vie podataka istog tipa
object objekat, koristi se za uvanje instanci klasa
Postoje i dva specijalna tipa podataka:
NULL ovog tipa su promenljive kojima nije dodeljena vrednost, koje su
nedefinisane ili kojima je izriito dodeljena vrednost NULL.
resurs predstavljaju spoljne resurse, kao to su veze sa bazama podataka.
Neke ugraene funkcije vraaju promenljive ovog tipa.
16
Konstante
Konstanta predstavlja vrednost koja se jednom zadaje i vie se ne moe
menjati.
Da bi se olakalo razlikovanje promenljivih i konstanti, usvojeno je da se
imena konstanti piu velikim slovima (mada nije obavezno).
Ispred konstante se ne pie $.
Ako se eli upotrebiti vrednost konstante, navodi se samo njeno ime.
Konstante mogu sadrati samo podatke skalarnog tipa, tj. logikog tipa,
celobrojnog, znakovnog i numerike podatke s pokretnim zarezom.
U izvrnom PHP okruenju definisan je veliki broj konstanti, koje se mogu
pregledati pomou komande phpinfo().
Primer: Cene artikala se mogu definisati kao konstante.
define(OLOVKACENA, 20);
define(SVESKACENA, 45);
17
Operatori
Operatori su simboli koji omoguavaju izvravanje operacija nad vrednostima i
promenljivama.
U PHP-u postoje sledee vrste operatora:
Aritmetiki operatori
String operator (operator za konkatenaciju, tj. spajanje stringova)
Operatori dodele (na pr. =, +=, -=, i dr.)
Operatori poreenja
Logiki operatori
Operatori nad bitovima
Operatori za rad sa nizovima (na pr. [ ] za pristup elementu niza)
Ostali operatori (na pr. operator zanemarivanja greke, uslovni operator, i dr.)
18
Ime
Primer
sabiranje
$a + $b
oduzimanje
$a - $b
mnoenje
$a * $b
deljenje
$a / $b
moduo
$a % $b
Operatori poreenja
Ime
Primer
==
jednako
$a == $b
!=
razliito
$a != $b
<
manje od
$a < $b
>
vee od
$a > $b
>=
$a >= $b
<=
$a <= $b
Aritmetiki operatori se
obino primenjuju na
brojeve. Ako se primene
na string, pokuae se
njegovo pretvaranje u
broj. Ako string sadri e
ili E, pretvorie se u
float, inae u ceo broj.
Izrazi u kojima se
koriste operatori
poreenja vraaju
logiku vrednost true ili
false.
Operator == se esto
mea sa operatorom
dodele =, to ne vodi
eljenom rezultatu.
19
Ime
Primer
Rezultat
negacija
!$a
&&
konjunkcija
$a && $b
||
disjunkcija
$a || $b
and
konjunkcija
$a and $b
or
disjunkcija
$a or $b
Ime
Primer
Rezultat
&
konjunkcija
$a & $b
disjunkcija
$a | $b
negacija
~ $a
iskljuiva dijunkcija
$a ^ $b
<<
pomeranje ulevo
$a << $b
>>
pomeranje udesno
$a >> $b
20
Ime
Primer
Rezultat
unija
$a + $b
==
jednako
$a == $b
===
identino
$a === $b
!=
razliito
$a != $b
<>
razliito
$a <> $b
!==
21
Upravljake strukture
Upravljake strukture omoguavaju upravljanje tokom izvrenja programa ili
skripta.
Upravljake strukture se mogu grupisati u:
Uslovne strukture sa grananjem konkstrukcije koje programu omoguavaju
donoenje odluka
Iskaz if
Iskaz else
Iskazi elseif
Iskaz switch
Strukture sa ponavljanjem ili petlje konstrukcije za ponavljanje odreenog
bloka koda u programu
Petlja while
Petlja for
Petlja do... while
22
Iskaz else
Definie alternativnu akciju koju treba
preduzeti ako uslov u if iskazu nije ispunjen.
Primeri
if($totalkol == 0) {
echo Niste nista uneli!<br />;
}
else {
echo $olovkakol. olovke<br />;
echo $sveskakol. sveske<br />;
}
if($totalkol < 0)
$popust = 0;
elseif ($olovkakol >=10 && $olovkakol <=49)
$popust = 5;
elseif ($olovkakol >=50 && $olovkakol <=99)
$popust = 10;
elseif ($olovkakol >=100)
$popust = 15;
23
24
Petlja for
Koristi se kada se zna koliko je iteracija potrebno.
Osnovna struktura petlje je:
for (izraz1; uslov; izraz2) izraz3;
izraz1 se izvrava jednom na poetku i zadaje
poetnu vrednost brojaa
uslov se ispituje pre svake iteracije; ako nije
ispunjen, petlja prestaje; uslov obino ispituje da li
je broja doao do neke granice
izraz2 se izvrava na kraju svake iteracije;
obino menja vrednost brojaa
izraz3 se izvrava jednom u svakoj iteraciji; to je
obino blok koda
Primer: prikaz brojeva od 1 do 5
for ($i=1; $i <= 5; $i++) {
echo $i.<br />;
}
25
26
Nizovi
Niz (array) je promenljiva koja sadri skup vrednosti u nekom
redosledu. Jedan niz moe imati vie elemenata, a svaki element
sadri jednu vrednost (na pr. tekst, broj, drugi niz). Svakom elementu
niza pridruen je indeks pomou koga se pristupa elementu.
PHP podrava:
numeriki indeksirane nizove, koji su slini nizovima u drugim
programskim jezicima
asocijativne nizove, kod kojih indeksi mogu biti rei ili druge
informacije
27
28
$proizvodi[0]
Sadraj elementa niza menja se pomou operatora =.
$proizvodi[0] = Lenjir;
Dodavanje novog elementa na kraj niza se obavlja na sledei nain:
$proizvodi[3] = Bojice;
Sadraj niza se moe prikazati sledeim kodom
29
30
31
32
Web browser
Web server
6
Izvrno okruenje
za PHP
3
4
Server baze
podataka
33
34
35
Sadraj skripta
U svakom skriptu koji pristupa bazi podataka sa Web-a treba da postoji
odgovarajui kod za sledee osnovne korake:
1. Provera podataka koje je korisnik uneo.
2. Filtriranje ulaznih podataka.
3. Uspostavljanje veze sa odgovarajuom bazom podataka.
4. Zadavanje upita toj bazi podataka.
5. Uitavanje rezultata.
6. Prikaz rezultata korisniku.
36
37
38
Filtriranje rezultata
Pre prikazivanja korisniku, podatke dobijene iz baze podataka takoe treba
filtrirati, kako bi se iz njih izbacio znak \ unet prilikom filtriranja ulaznih podataka,
i izbegao pogrean rad baze zbog specijanih znakova u HTML-u.
Pre nego to se prikau korisniku, podatke treba obraditi pomou sledeih
funkcija:
a) stripslashes(). Ova funkcija izbacuje znak \ iz zadatog stringa. Njome se
podaci moraju obraditi ukoliko je mehanizam maginih navodnika bio ukljuen.
b) htmlspecialchars(). Ova funkcija se koristi za pretvaranje znakova koji u
HTML-u imaju specijalno znaenje (&, , < i >) u HTML entitete. Na primer, znak
< pretvara se u <.
39
40
41
42
43
$row = mysqli_fetch_assoc($result);
Navedene funkcije itaju svaki red iz skupa rezultata i vraaju podatke u obliku
asocijativnog niza, u kome je svaki klju (indeks) ime jednog atributa, a svaka
vrednost u nizu je odgovarajua vrednost uitana iz baze.
Niz $row omoguava da se svako njegovo polje prikae u odgovarajuem obliku:
echo </strong><br />Author: ;
echo stripslashes($row[author]);
echo <br /> ISBN: ;
echo stripslashes($row[isbn]);
echo <br /> Price: ;
echo stripslashes($row[price]);
44
45
46
<tr>
2
<td>Title</td>
<td><input type=text name=title></td>
</tr>
<tr>
<td>Price</td>
<td><input type=text name=price></td>
</tr>
<tr>
<td colspan=2><input type=submit
value=Register></td>
</tr>
</form>
</body>
</html>
47
48
<html>
1
<head>
<title>Book-O-Rama Book Entry Results</title>
</head>
<body>
<h1>Book-O-Rama Book Entry Results</h1>
<?php
$isbn=$_POST[isbn];
$author=$_POST[author];
$title=$_POST[title];
$price=$_POST[price];
if (!$isbn || !$author || !$title || !$price) {
echo You have not entered all the required details..
Please go back and try again.;
exit;
}
if (!get_magic_quotes_gpc()) {
2
$isbn=addslashes($isbn);
$author=addslashes($author);
$title=addslashes($title);
$price=doubleval($price);
}
@ $db = new mysqli(localhost, bookorama,
bookorama123, books);
if (mysqli_connect_errno()) {
echo Error: Could not connect to database..
Please try again later.;
exit;
}
$query = insert into books values
( .$isbn. , .$author. , .$title. , .$price. );
$result = $db->query($query);
if ($result)
echo $db->affected_rows. book inserted into database.;
$db->close ();
?>
</body>
</html>
49
50