You are on page 1of 38

Web programiranje

Prof. Dr Milena Stankovi


Mr Ivan Petkovi
Mr Milan Rajkovi

Osnove server-side
programiranja na
jeziku PHP

3. Obrada HTTP
podataka

3.1 HTML obrasci

Obrasci (forms)

Jedan od naina prenoenja HTML


podataka u PHP skript je korienje
form elementa.
U okviru ovog elementa se nalaze
HTML kontrole, meu kojima su
najkorienije
Input kontrole
Select kontrola
Textarea kontrola

Izgled obrasca
<form action=ime php fajla
method=post >
Korisniko ime:
<input type=text name=username/>

<input type=submit name=submit


HTTP metod
value=prosledi/> Odredini php
koji se koristi
fajl
</form>
(post ili get)

Primer 3.1 listing1.html pregled


post1.php
kod

Prosleivanje HTML kontrola u PHP


skript

Nakon to se klikne na dugme iji je tip


submit poziva se odredini PHP skript, a sve
HTML kontrole se preslikavaju u elemente
asocijativnih nizova $_POST ili $_GET, zavisno
od metode koja je koriena.
Nizovi $_GET i $_POST se jednim imenom
nazivaju $_REQUEST
Ukoliko niste sigurni kako je izvreno
preslikavanje, moete koristi php-funkciju
print_r($_POST), odnosno print_r($_GET),
koja tampa sve elemente asocijativnog niza.

Prosleivanje input kontrola u PHP


skript

Input kontrole se prosleuju tako to


njihov name atribut postaje indeks
asocijativnog niza, a value atribut postaje
vrednost elementa asocijativnog niza.
<input type=text name=myControl value = Unesi tekst/>

$_POST[myControl] dobija vrednost koja je uneena u input


kontrolu (default je Unesi tekst)

Input kontrole mogu da sadre vie vredosti, tako


to se iza njihovog imena navedu uglaste zagrade
[ ]. Tada se one preslikavaju u podniz
superglobalnog niza $_POST ili $_GET.
<input type="text" name="address[]">

<input type="text" name="address[]">


<input type="text" name="address[]">

$_POST[address][0] ima vrednost prvog polja


$_POST[address][1] ima vrednost drugog polja
$_POST[address][2] ima vrednost treeg polja

Vrste input kontrola

U formama se najee koriste input kontrole sa


sledeim vrednostima type atributa:

text input kontrola za unos teksta. Value atribut


odgovara vrednosti koja je uneta u polje.
hidden kontrola koja se ne prikazuje u formi, ali se
moe koristiti za prednos nekih vrednosti od klijenta ka
serveru
submit dugme koje kada se pritisne poziva odredini
php fajl. Value atribut odgovara naslovu dugmeta
reset dugme za brisanje svih unetih elemenata
button dugme koje nema unapred definisano
ponaanje
checkbox ekiranje odreene opcije
radio - izbor jedne od nekoliko opcija
file polje koje se koristi za upload fajla

Prosleivanje checkbox
kontrole

Checkbox kontrola se u odgovarajuem


PHP nizu ($_GET ili $_POST) pojavljuje
samo ako je ekirana.

<input type="checkbox" name=remindme


value=do_remind">

(ako je ekirana)
$_POST[remindme] ima vrednost do_remind

Prosleivanje radio kontrole

Radio kontrole koje se meusobno iskljuuju


moraju da imaju isto ime. Iskljuivanje jedne
opcije kada se selektuje druga sa istim
imenom je automatsko.

First <input type="radio" name="Year" value="First" checked><br>


Second <input type="radio" name="Year" value="Second"><br>
Third <input type="radio" name="Year" value="Third">

Samo ekirani radio e se preslikati u PHP


niz.

Prosleivanje Select kontrole

Izgled select kontrole na HTML strani:


<select name="Country" size="1">
<option value="scg">Serbia and Montenegro</option>
<option value="en">England</option>
</select>

Odreuje koliko se opcija prikazuje u


jednom trenutku. Ako je size 1, radi se o
drop-down meniju

Vrednost koja se prikazuje


na HTML strani

Vrednost koja se
prosleuje ako je opcija
izabrana

Select kontrola se prosleuje na isti


nain kao input kontrola. Dakle, u
odgovarajuem superglobalnom nizu
($_GET ili $_POST) se kreira element
iji je indeks naziv select kontrole a
vrednost value atribut izabrane opcije.
Ako select kontrola u nazivu ima
uglaste zagrade i navedena je opcija
multiple, mogue je izabrati vie
opcija odjednom.

Prosleivanje textarea kontrole

Izgled textarea kontrole

<textarea name = ime>Vrednost unesi


ovde</textarea>

Vrednost textarea kontrole se zadaje


izmeu <textarea> i </textarea>
elemenata, i ona se preslikava na vrednost
elementa asocijativnog superglobala.
Indeks elementa je, kao i do sada, name
atribut textarea elementa.

3.2 Prenoenje
promenljivih kroz
linkove

Prenoenje promenljivih kroz


linkove

Pored obrazaca mogue je kroz linkove


proslediti parove naziv_promenljive =
vrednost i to iza znaka ? na kraju linka
npr:
<a href= nekilink?
prom1=vrednost1&prom2=vrednost2> Naziv linka
</a>

prosleuje metodom GET dve promenljive


prom1 i prom2 ije su vrednosti respektivno
vrednost1 i vrednost 2
Primer 3.2 listing2.html pregled
get2.php
kod

Primer

Sledei primer demonstrira kako se


vri prosleivanje vrednosti sa HTML
strane u PHP skript.

Primer 3.3 mutlivalue.html pregled


displayall.php kod
displayarray.php kod

Primer : Korienje
hidden polja za
prenoenje podatka
Primer 3.8

Primer 3.8

Kreirati dve strane za unos podataka o studentu. Prva


strana (strana1.html) tampa samo polje za unos broja
indeksa. Kada se klikne na dugme Dalje, otvara se druga
strana (strana2.php) na kojoj se unosi ime studenta. Klikom
na dugme Dalje, otvara se strana stampaj.php koja tampa
sve unete podatke o studentu (indeks, ime i przime).
Napomena: Ukoliko je potrebno, za pamenje
parametara koristiti hidden polja.

tampanje podataka

Primer : Aplikacija za
rad sa nizom
studenata
Primer 3.7

Cilj primera

Cilj ovog primera je da se napravi


aplikacija za rad sa listom studenata.
Za svakog studenta se pamte broj
indeksa, ime i prezime i prosek.

Aplikacija treba da omogui:


Dodavanje novog studenta
Brisanje selektovanih studenata
Promenu podataka o studentima

Izgled prozora

Index.php

kod pregled

Arhitektura aplikacije

Aplikacija se sastoji samo od jednog skripta


(index.php). Da bi skript znao koja se akcija zahteva
(dodavanje studenta, brisanje, promena podataka),
njemu se preko $_GET ili $_POST metode prosleuje
promenljiva mode.
deleteStudent
addStudent

editStudent

Index.php

Mogue vrednosti promenljive


mode

addStudent : sa ovom vrednou se ulazi u


skript kada se dodaje novi student, tj. nakon
to je kliknutno na dugme Dodaj
deleteStudents : sa ovom vrednou se
ulazi u skript nakon to je selektovano
nekoliko studenata i kliknuto na dugme Brii
selektovane
editStudent : ova vrednost se postavlja
kada se klikne na link Promeni
updateEdited : Ova vrednost se postavlja
kada se u formi za promenu podataka o
studentu klikne na dugme Prosledi.

Niz students

Svi podaci o studentima se uvaju u


asocijativnom nizu students, gde je indeks
niza zapravo indeks studenta.
Svaki element niza je takoe asocijativni niz
sa samo dva elementa : prvi je ime i prezime
studenta (sa indeksom ime) a drugi je
njegov prosek(sa indeksom prosek). Dakle,
ako elimo da dobijemo ime i prezime i
prosek studenta sa indeksom 1000, potrebno
je da pristupimo elementima:
$students[1000][ime]
$students[1000][prosek]

Ouvanje perzistentnosti niza

Na kraju izvrenja bilo kog PHP skripta, sve


promenljive koje su u njemu koriene se
uklanjaju iz memorije.
Neki od mehanizama za ouvanje
vrednosti promenljive i pri sledeem
startovanju skripta (obezbeivanje njene
perzistentnosti) su:

snimanje vrednosti promenljive u fajl ili bazu


korienje mehanizma sesije
stalno slanje promenljive od servera ka klijentu i od
klijenta ka serveru. (Mehanizam koji e biti korien u
ovom primeru)

Da bi se ouvala vrednost niza, on se stalno alje


klijentu tako to se njegove vrednosti pamte u
hidden poljima forme ili se vezuju za linkove skripta.
Kada se u sledeem koraku forma poalje nazad
klijentu, vrednosti promenlivih se restauriraju na
serveru na osnovu podataka iz $_REQUEST niza.
Funkcija koja od promenljive students pravi i
tampa hidden polja nazvana je printHiddenFields.
Za svaki element niza se kreiraju dva hidden polja.
Ako je npr. broj indeksa studenta 1000, kreirae se
polja sa nazivima ime_1000 i prosek_1000, iji e
value atributi sadrati ime i prezime, odnosno
prosek studenta. (Mogue je kreirati hidden polja i
na bilo koji drugi nain, samo je bitno da se on
potuje i kod restauracije vrednosti promenljive).

Restauracija niza students

Za restauraciju niza students koristi se


funkcija initStudents. Ova funkcija analizira
vrednosti hidden polja koja su primljena od
strane klijenta i kreira niz studenata.
Funkcija initStudents koristi biblioteku
funkciju explode, koja od stringa pravi niz,
koristei separator naveden kao prvi
parametar funkcije. Dakle, naredba
explode(_, ime_1000) , vraa niz, gde prvi
element ima vrednost ime, a drugi ima
vrednost 1000.

Pamenje niza students u


linkovima

Ako korinik eli da promeni podatke o


studentu on koristi link sa nazivom Promeni.
Kako se u sluaju izbora linka hidden polja ne
prosleuju ka serveru, podaci o studentima
e biti izgubljeni. Kako bi se ovaj problem
reio, potrebno je da se niz students prenosi i
kroz linkove, i to tako to se vrednosti ovog
niza dodaju kao parovi klju, vrednost iza
simbola ?. Nain njihove serijalizacije je
slian kao i kod hidden polja, a za njhovo
nadovezivanje na linkove koristi se funkcija
getLinkFromStudents.
U ovom sluaju, vrednosti niza students se
alju korienjem metode $_GET.

3.3 Kolaii

Kolaii

Kolaii (Cookies) su jednostavne tekstualne


datoteke koje se pamte na klijentskom
raunaru
Server moe da setuje kolai na
klijentskom raunaru tako to alje
odgovarajue HTTP zaglavlje u kome se
(izmeu ostalog) navode:

Naziv kolaia
Datum do koga vai
Naziv domena i putanja ova dva parametra se
koriste za izraunavanje da li je kolai
relevantan za URL koji se poseuje

Kada browser otvara neku stranu, on


proverava da li postoji kolai koji je
relevantan za odgovarajui URL i koji
nije istekao. Ako postoji, takava
kolai se automatski alje
serveru.

Svaki browser (IE, Firefox itd.)


posebno pamti kolaie, tako da se
setovanje kolaia u jednom ne odnosi
na drugi browser.

Rad sa kolaiima u PHP-u

Kolaii se u PHP postavljuju funkcijom setcookie(). Ova


funkcija se mora pozvati pre nego to se bilo koji podatak
prosledi itau, a njeni parametri su:

Naziv kolaia
Vrednost
Duina trajanja

Ukoliko se funkcija setcookie pozove samo sa prvim


parametrom (naziv), zapravo se vri brisanje kolaia
ukoliko on postoji.

Kada se otvori neka PHP strana, PHP automatski pokupe sve


kolaie koje je poslao browser i smeta ih u niz $_COOKIE,
gde je indeks naziv kolaia.

Primer 3.4

usingcookies.php

kod pregled

3.4 Prenos datoteka


korienjem obrazaca

Izgled obrasca kojim se moe poslati


fajl
Forma za prenos datoteke obavezno mora imati naveden atribut
enctype ija vrednost mora biti setovana na multipart/form-data
<form action=ascript.php method=post
enctype=multipart/form-data>

<input type=file name=thefile>

</form>

Kada PHP se obrazac presledi PHP-u, kreira se $_FILES niz koji za


svaki poslati fajl sadri sledee elemente:

$_FILES[thefile][tmp_name] privremeno ime fajla, dodeljeno


od strane PHP-a
$_FILES[thefile][name] naziv fajla koji je poslat
$_FILES[thefile][size] veliina fajla
$_FILES[thefile][type] tip fajla (text/plain, image/gif,
image/jpeg)
$_FILES[thefile][error] setuje se ako postoji greka pri slanju

Prihvatanje poslatog fajla

Fajl koji je upload-ovan se privremeno smeta u datoteku


iji je naziv $_FILES[thefile][tmp_name], gde je thefile
zapravo naziv input polja iz pomou koga je fajl poslat. Ovaj
privremeni fajl se brie na kraju skripta.

Da bi se fajl trajno zapamtio na serveru, mora se pozvati


funkcija move_uploaded_file, iji je prvi parametar
privremeni naziv fajla, a drugi putanja na kojoj se fajl snima
Primer 3.5 onefile.htm

upload_single.php

pregled

kod

3. 5 Obrada i reformatiranje podataka


za prikaz

Obavezna provera podataka koje unosi korisnik


pre njihovog ponovnog tampanja

Posebno su vane funkcija htmlentities i


strip_tags koje se koristite za izbacivanje html
oznaka iz unetog teskta

Korisniku treba da se ponude specifine


kontrole (radiobuttons, checkboxes itd) umesto
klasinih polja za unos kad god je to mogue
Primer 3.6 safedisplay_form2.html pregled
safedisplay2.php
kod

You might also like