Professional Documents
Culture Documents
PHP Internet Programiranje
PHP Internet Programiranje
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 uglavnom 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. 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
Popularnost
Na tritu vie od 50% 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.
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 Laura (Author) PHP and MySQL Web Development (4th Edition) (Developer's Library), Addison-Wesley Professional, October 2008 www uopte
Osobine
Platformski neutralan Slian C-u od koga je nastao Integrisanost sa HTML-om Nestruktuiran i nekonzistentan
Generalije
Komande se zavravaju ; 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.
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) ?>
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... */
Mogunosti
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:
Imena promenljivih
Tipovi podataka
Skalarni
Sloeni
boolean logiki tip integer celobrojni tip float racionalni tip string znakovni niz array - niz object - objekat resource - resurs Null - nita
Specijalni
String - primer
Primer: <?php $foo = "foobar";$a=2; echo foo is $foo <br />; echo foo is $foo <br />; Echo a je $a <br />; Echo a je $a <br />; ?> Rezultat: foo is $foo foo is foobar a je $a a je 2
Niz - array
Sintaksa definisanja niza ImeNiza=([indeks1=]vrednost1, ) Indeksi mogu biti celi brojevi ili stringovi Primer <?php $arr=array("Aleks" => "9", "Sanja" =>8 , "Mirko" =>6); echo $arr['Aleks'], "<br />"; echo {$arr['Aleks']} <br />"; echo $arr["Sanja"]; ?> Rezultat: 9 9 8
Multidimenzionalni nizovi
Primer: $familije=array (Simi=> array(Branka,Dejan), Brusin=> array(Mia,Maja,Maja));
Objekat - object
Objekti su slini kao kod JavaScripta, 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
oduzimanje mnoenje deljenje moduo inkrement
+=
-= *= /= %= --
sabiranje dodela
oduzimanje dodela mnoenje dodela deljenje dodela Moduo dodela 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, 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 Logiko I (AND) Logiko ILI (OR) Logiko eksluzivno ILI (XOR) Logiko NE (NOT) Pomeranje ulevo Pomeranje udesno sa znakom Upotreba a&b a|b a^b ~a a << b a >> b Opis Rezultatni bit je 1, jedino ako su oba bita 1 u ostalim sluajevima rezultat je 0. Rezultatni bit je 0, jedino ako su oba bita 0 u ostalim sluajevima rezultat je 1. Rezultatni bit je 1, ako biti imaju razliite vrednosti, u suprotnom je 0. Komplementira bitove operanda a. Pomera binarni sadraj operanda za b mesta ulevo. Prazna mesta popunjava sa vrednou 0. Pomera binarni sadraj operanda za b mesta ulevo. Prazna mesta popunjava sa vrednou najstarijeg bita.
Na nivou bita
15
& 9 rezulat 9 (1111 & 1001 = 1001) 15 | 9 rezulat 15 (1111 | 1001 = 1111) 15 ^ 9 rezulat 6 (1111 ^ 1001 = 0110)
Logiki operatori
Operato r I (&& ili and) Upotreba expr1 && expr2 Opis Rezultat je true, jedino ako su oba operanda true, u ostalim sluajevima rezultat je false.
expr1 || expr2
!expr
Rezultat se dobija false, jedino ako su oba operanda false, u ostalim sluajevima rezultat je true.
Rezultat se dobija komplement od vrednosti operanada. Ako je operand true, rezultat je false, ako je operand false, rezultat je true Rezultat je true, ako su operandi razliiti, i obrnuto, rezultat je false, ako su operandi isti
ILI (xor)
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 Jednakost (==) Nejednakost (!= ili <>) Vee (>) Vee ili jednako (>=) Manje (<) Manje ili jednako (<=) Jednako bez konverzije tipova (===) Razliito bez konverzije tipova (!==) Upotreba Rezultat je true ako su operandi jednaki Rezultat je true ako su operandi razliiti. Rezultat je true ako je levi operand vei od desnog operanda. Rezultat je true ako je levi operand vei ili jednak desnom operandu Rezultat je true ako je levi operand manji od desnog operanda Rezultat je true ako je levi operand manji ili jednak desnom operandu Rezultat je true ako su operandi jednaki bez konverzije podataka Rezultat je true ako su operandi razliiti bez konverzije podataka Opis $x == $y rezultat je true ako su $x i $y jednaki. $x ! = $y rezultat je true ako su $x i $y razliiti. $x > $y ako je $x vee od $y. $x >= $y ako je $x vee ili jednako $y. $x < $y rezultat je true ako je $x manje od $y. $x <= $y rezultat je true ako je $x manje ili jednako $y. $x === $y rezultat je true ako su $x i $y jednaki bez konverzije podataka $x !== $y rezultat je true ako su $x i $y razliiti bez konverzije 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.)
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.
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
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
Pozivanje 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
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 '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
Deklaracije osobine
Deklaracije metode
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
Korienje metoda
Primer korienja metoda iz prethodnog primera: var $testCircle = new myCircle(3,4,5); $testCircle->moveBy(2,3); echo Povrina kruga je , $testCircle->retArea(); echo <br />Obim kruga je , $testCircle->retCirc(); 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; ?>
2. Kontrola toka
Izlazi iz blokova
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: $ratio = $denom ==0 ? 0 : $num/$denom
Kontrole toka - if
Sintaksa: if (logIzraz) {naredbe1;} [else {naredbe2;}]
Primer: if ($x == 8) {
else { }
$y=$x;
$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;
Petlje - while
Sintaksa: [inicijalizacija;] while(logIzraz){ naredbe; }
Primer:
i=i+1; }
Petlje - do-while
Sintaksa: [inicijalizacija;] do { naredbe; } while (logIzraz);
Petlje - for
Sintaksa: for(inicijalizacija; logIzraz; iteracija){ naredbe; }
Petlje - foreach
Sintaksa: foreach (izrazNiza as [index=>] vrednost) { naredbe; } Primer: $a = array(1, 2, 3, 17); foreach ($a as $v) { echo trenutna vrednost \$a je $v.";}
Primer: { { { echo pre break-a; break 2; } echo ovo nee biti prikazano; } echo posle break-a; } Rezultat: pre break-a posle break-a
Primer: { {
Rezultat: 01 23 45 67 89
Primer:
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
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
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
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, element) dopunjava niz do zadate duine zadatim elementima
Funkcije su:
in_array(element,imeNiza) daje TRUE ako je vrednost datog elementa u datom nizu i FALSE u obrnutom sluaju array_keys(niz[,element]) daje sve indekse elemenata, odnosno indekse zadate vrednosti array_values(niz) daje vrednosti svih elemenata niza array_search(element,imeNiza) daje vrednost indeksa zadate vrednosti
Funkcije:
key(imeNiza) daje trenutni indeks value(imeNiza) daje trenutnu vrednost each(imeNiza) daje trenutni indeksvrednost par i pomera pokaziva za jedan
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
Sortiranje niza
Funkcije:
sort(imeNiza[,sortFleg]) sortira niz. sortFleg moe biti SORT_NUMERIC, SORT_REGULAR, 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 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 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
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
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 Bilo kog ASCII definisanog slova, cifre ili _. Bilo kog karaktera koji nije \w. Bilo koje ASCII definisane cifre Bilo kog karaktera koji nije ASCII definisana cifra Blanko znak Koji 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
Primeri uzoraka
/\d{2,4}/ // uzorak koji oznaava 2, 3 ili 4 pojavljivanje cifara /\w{3}\d?/ // uzorak koji oznaava tano tri pojavljivljavanja slova i opciono jedne cifre, npr. string koji odgovara ovom uzorku je abc8 ili qqq. /\s+php\s+/ // uzorak koji oznaava string "java" sa jednim ili vie prostora pre ili posle stringa /["]*/ // uzorak koji oznaava nula ili vie pojavljivanje karaktera navoda /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 /((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
Atributi uzoraka
Atribut i Znaenje Izvravanje case-insensitive ispitivanja. Izvrava globalno ispitivanje, znai pronai e se sva pojavljivanja definisanog uzorka, a nee se ispitivanje zaustaviti posle prvog pronalaska uzorka. Rad sa vie linija. ^ oznaava poetak linije ili stringa, a $ predstavlja kraj linije ili stringa.
Funkcije uzorka
Funkcije: preg_grep(uzorak,imeNiza) daje niz sa svim elementima niza koji u sebi sadre uzorak preg_match(uzorak,imeNiza,nizUzoraka) daje listu uparenih uzoraka u zadatom stringu preg_replace(uzorak,string1,string2) zadati uzorak se zamenjuje zamenom u datom stringu preg_replace(uzorak,imeFunkcije,string) zadati uzorak se zamenjuje zamenom u datom stringu preg_split(uzorak,string) stvara niz delova teksta koji su razdvojeni zadatim uzorkom
Funkcije:
strlen(string) duina stringa strcmp(string1,string2) uporeuje dva stringa, vrednost funkcije je 1{string1>string2} + 1{string2>string1} 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
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 PAD_LEFT,PAD_RIGHT,PAD_BOTH
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 substring_count(string,podstring)
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 autentifikacija
Superglobalne promenljive
Superglobalne promenljive su interfejsi PHP programa sa spoljnom okolinom preko kojih razmenjuju informacije Neke vane superglobalne su sledee: $_SERVER, $_GET, $_POST, $_FILE, $GLOBALS, $_COOKIE, $_SESSION, $_ENV Superglobalne promenljive (superglobals) se mogu nai na: http://us2.php.net/manual/en/reserved.v ariables.php
Superglobalna $_SERVER
$_SERVER[HTTP_REFERER] URL veb adrese sa koje se dolo na datu stranu $_SERVER[REMOTE_ADDR] klijentova IP adresa $_SERVER[REQUEST_URI] putanja do zadatog fajla $_SERVER[HTTP_USER_AGENT] operativni sistem i brauzer klijenta $_SERVER[PHP_SELF] skript koji se izvrava, konstanta __FILE__ jeste fajl koji se trenutno izvrava u okviru zadatog skripta
Superglobalna $_GET
$_GET je niz koji sadri parametre koji su prosleeni metodom get Metoda get se koristi kada se ne menja sadraj na serveru, i njeni parametri se prosleuju kroz URL 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
Supeglobalna $_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>
Superglobalna $_POST
Primer u fajlu upis.php: <? php echo $_POST[emeil], <br />, $_POST[ifra] ?> Rezultat: Aleksa ikpogodi Napomena: U fajlu httpd Apache servera je odreen defolt direktorijum za dokumente sledeom naredbom: DocumentRoot "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs Drugi direktorijumi mogu da se odrede ili relativno u odnosu na defolt direktorijum ili pomou aliasa, npr: Alias /slike /ftp/pub/slike
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
$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 dozvoljeno parametrom upload_max_filesize specificiranu u php.ini UPLOAD_ERR_FORM_SIZE: fajl prelazi max veliinu specificiranu u formularu parametrom MAX_FILE_SIZE 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 ostali atributi kolaia. Kolaii se setuju funkcijom: setcookie ( ime [, vrednost [, rok [, putanja [, domen [, zatita [, httponly ]]]]]] ) Napomena, u php.ini setovati Output buffering On
Superglobalna $_SESSION
$_SESSION je niz indeksa (kljueva) i vrednosti koji se vezuje za korisnika. Sesija se generie pomou funkcije start_session() kojom se kolai sa SID (ID sesije) alje korisniku.
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
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
Rezultat:
Primer:
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 /> <p> <input type="submit" name="posalji" value="Poalji!" /> </form>
<?php define ("fajloviDomaci","C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\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
Mime tipovi
Tip fajla se moe biti bilo koji mime tip, koji se mogu nai npr. na: http://www.w3schools.com/media/ media_mimeref.asp
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 {
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 fwrite (refFajla, string) fread (refFajla, brojBajtova) fclose (refFajla)
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
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
Konfiguracija sesija
Konfiguracija sesija
Komande sesija
Komande
session_start() startovanje sesije session_unset() oslobaanje sve promenljive 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
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']
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'); print('Morate dati ispravne login podatke!'); exit;} echo "Materijal sa restrikcijama ..." ?>
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
Formular za e-meil
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.0/en/ index.html
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
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 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
Host
User Password Select_priv Insert_priv Update_priv
char(60) binary
char(16) binary char(41) binary enum(N, Y) enum(N, Y) enum(N, Y)
No
No No No No No
No
No No N N N
mysql tabela db
Column Datatype Null Default
Host
Db User Select_priv Insert_priv Update_priv
char(60) binary
char(64) binary char(16) binary enum(N, Y) enum(N, Y) enum(N, Y)
No
No No No No No
No
No No N N N
Host
Db Select_priv Insert_priv Update_priv Delete_priv
char(60) binary
char(64) binary enum(N, Y) enum(N, Y) enum(N, Y) enum(N, Y)
No
No No No No No
No
No N N N N
Host
Db User Table_name Grantor Timestamp
char(60)
char(64) Char(16) char(64) Char(77) timestamp
No
No No No No Yes
No
No No No No Current timestamp
Table_priv
Column_priv
skupPrivilegija
skupKolona
No
No
No
No
Host
Db User Table_name Column_name Timestamp Column_priv
char(60)
char(64) Char(16) char(64) Char(64) timestamp skupPrivKolona
No
No No No No Yes No
No
No No No No Null No
Host
Db User Routine_name Routine_type Grantor Proc_priv Timestamp
char(60)
char(64) Char(16) char(64) enum Char(77) binary skupKolona timestamp
No
No No No No No No Yes
No
No No No No No No Null
SELECT dozvoljava korisnicima da selektuju (itaju) zapise iz tabela. INSERT dozvoljava korisnicima da upisuju nove zapise u tabelu. UPDATE dozvoljava korisnicima da menjaju postojee zapise u tabelama. DELETE dozvoljava korisnicima da briu zapise iz tabela INDEX dozvoljava korisnicima da indeksiraju tabele
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
MySQL komande
Najvanije komande: CREATE, DROP, SELECT, INSERT, DELETE, UPDATE Kompletan spisak komandi: http://dev.mysql.com/doc/refman/5. 0/en/sql-syntax.html
Kreiranje tabele
CREATE TABLE [IF NOT EXISTS] imeTabele ( [PRIMARY KEY (imeKolone1[,imeKolone2])] imeKolone1 tipKolone1 [atributiKolone1], [imeKolone1 tipKolone2 [atributiKolone2],]); Primer: CREATE TABLE zaposleni ( id TINYINT UNSIGNED NOT NULL AUTO_INCREMENT, ime VARCHAR(25) NOT NULL, prezime VARCHAR(25) NOT NULL, telefon VARCHAR(45) NOT NULL, PRIMARY KEY(id));
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 emeil VARCHAR(20) AFTER telefon;
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(column) STD(imeKolone) daje standardnu devijaciju SUM(imeKolone) zbir vrednosti kolona
Rad sa bazama
Sintaksa funkcija: mysql_select_db(baza [, link]) mysql_query (upit, [, link]) mysql_db_query (baza, upit [, link])