Presentation is loading. Please wait.

Presentation is loading. Please wait.

Internet programiranje PHP

Similar presentations


Presentation on theme: "Internet programiranje PHP"— Presentation transcript:

1 Internet programiranje PHP

2 Uvod HTML i JavaScript se izvršavaju na klijentskoj strani, odnosno na korisničkom računaru PHP je jedan od programskih jezika za izradu dinamičkih veb strana koji se izvršava na serverskoj strani PHP može da memoriše podatke i koristi ih u kasnijem trenutku

3 Istorija PHP (Personal Home Page) jezik je započeo Rasmus Lerdorf za potrebe lične veb strane 1995. Zeev Suraski i Andi Gutmans su dalje razvili PHP 3 (PHP Hypertext Preprocessor) i Zend kompajler kao osnovu za PHP 4. PHP 5 uključuje i objektno programiranje. Trenutno se radi na PHP 6

4 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

5 Popularnost Na tržištu više od 50% veb servera su tipa Apache
Najpopularniji programski jezik za dinamičko programiranje veb strana na serverima Apache je PHP PHP je uopšte jedan od najpopularnijih programskih jezika PHP koriste wikipedia.org, yahoo.com, facebook.com itd.

6 Popularnost (langpop.com)

7 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 uopšte

8 Instalacija WAMP servera
WAMP server se može naći na: Instalacija je jednostavna. Pre instalacije idite na skype > tools > options > advanced > connection i isključite port 80. Zatim zatvorite Skype. Kada je WAMP instaliran, možete otvoriti Skype.

9 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

10 Osobine Platformski neutralan Sličan C-u od koga je nastao
Integrisanost sa (X)HTML-om Nestruktuiran i nekonzistentan

11 Generalije Komande se završavaju ;
Ključne reči (komande), imena funkcija i klasa nisu osetljiva na veličinu slova (case insensitive), dok imena promenljivih jesu. Npr. promenljiva $txt se razlikuje od promenljive $TXT, dok su funkcije sort i SORT iste.

12 Za šta se koristi PHP? Omogućava dinamički HTML sadržaj
Vrši obrade na serveru, npr. prikuplja statistike o posećenosti Obrađuje podatke iz formulara Povezuje korisnike sa bazama podataka na serveru Implementira autentifikaciju i zaštitu komunikacije

13 1. Osnove PHP-a Tag Komentari Prikaz Promenljive i njihovi tipovi
Operatori Funkcije Objekti

14 Izvršavanje koda U okviru HTML koda: <script type=“php">
...PHP kod… </script> Ili u eksternom fajlu: <script type=“php" src="phpkod.php"> Ali češće se koristi uprošćena sintaksa <?php ...PHP kod…?> odnosno <?php include(“phpkod.php”) ?>

15 Direktorijum php fajlova
U konfiguracionom fajlu Apache servera, httpd.conf, se određuje glavni direktorijum u kome su php fajlovi. Kada su Apache, php, i MySQL baza posebno konfigurisani: U fajlu httpd Apache servera je određen defolt direktorijum za dokumente sledećom naredbom: DocumentRoot "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs“ To znači da su fajlovi u direktorijumu: C:\Program Files\Apache Software Foundation\Apache2.2\htdocs

16 Direktorijum php fajlova
U konfiguracionom fajlu Apache servera, httpd.conf, se određuje glavni direktorijum u kome su php fajlovi. Kada je instaliran WAMP, onda je defolt direktorijum sledeći DocumentRoot "C:/wamp/www“ To znači da su fajlovi u direktorijumu: C:\wamp\www Drugi direktorijumi mogu da se odrede ili relativno u odnosu na defolt direktorijum ili pomoću aliasa, npr: Alias /slike /ftp/pub/slike

17 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

18 Pozivanje php ili html fajlova
Pomoću URL adrese localhost/proba/proba.php Fajl proba.php je u direktorijumu wamp\www\proba

19 Komentari Za komentar jedne linije - oznaka // ili # :
// komentar u jednoj liniji ... Za komentar više redova - /* za početak bloka pod komentarom i */ za kraj bloka pod komentarom: /* Komentar u više redova... Drugi red komentara… */ 5

20 Prikaz – echo, print Primer: <?php
echo “<b>Prvi red</b><br /><i>Drugi red</i>”; ?> Ili: echo “<b>Prvi red</b><br />”,”<i>Drugi red</i>”; ?> Rezultat oba primera: Prvi red Drugi red 5

21 Mogućnosti umetanja PHP koda
Može: <?php if ($expression) {      ?>     <strong>This is true.</strong>     <?php  } else {      ?>     <strong>This is false.</strong>     <?php  }?> Preporučivo: <?php if ($expression) {      echo “<strong>This is true.</strong>”;}  else {      echo “<strong>This is false.</strong>”;    } ?>

22 Promenljive Sadrže vrednosti koje program smešta u okviru memorije računara Promenljivoj se dodeljuje: željeno ime vrednost Tip promenljive ne mora da se specificira, određuje ga vrednost promenljive

23 Imena promenljivih Sve promenljive počinju sa $
Drugi znak je slovo ili _

24 Tipovi podataka Skalarni Složeni Specijalni boolean – logički tip
integer – celobrojni tip float – racionalni tip string – znakovni niz Složeni array - niz object - objekat Specijalni resource - resurs Null - ništa

25 Skalarni tipovi podataka
Logički tip uzima vrednosti TRUE ili FALSE Celobrojni tip može biti decimalni, oktalni (počinje sa 0) ili heksadecimalni (počinje sa 0x). Max vrednost zavisi od sistema a može da se odredi konstantnom PHP_INT_MAX Racionalni tip ima razne oblike, npr. <?php $a = 1.234; $b = 1.2e3; $c = 7E-10; ?>

26 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 \’, slično za navodnike. Za duži tekst pod navodnicima, može se koristiti <<< sa nekom promenljivom koja razgraničava tekst (nema razmaka posle EOT): $s=<<<EOT Text EOT; Za duži tekst pod apostrofima $s=<<<‘EOD’ EOD; Primer: echo <<<EOT Primer “dužeg” znakovnog niza koji može zauzimati i “veliki broj redova” i ‘puno’ navodnika itd.

27 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

28 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 8

29 Multidimenzionalni nizovi
Primer: $familije=array (“Simić”=> array(“Branka”,”Dejan”), ”Brusin”=> array(“Mića”,”Maja”,”Marija”));

30 Objekat - object Objekti su slični kao kod JavaScript-a, ali se sintaksa razlikuje Objekti se definišu klasama kojima pripadaju Klase imaju definisane atribute i metode Promenljive objekti se dobijaju instanciranjem klase

31 Resurs - resource Promenljive tipa resurs su pokazivači na složene eksterne promenljive Primer su pokazivač na otvoren fajl ili na vezu sa bazom podataka Promenljive tipa resurs se generišu različitim funkcijama u zavisnosti od primene Kompajler automatski briše promenljive tipa resurs koje ne pokazuju na neki resurs

32 NULL vrednost Vrednost NULL je
tip podataka/vrednost koja se može dodeliti promenljivoj Pokazuje da promenljiva ne sadrži nikakvu korisnu vrednost Promenljiva sa vrednošću NULL ima takvu dodeljenu vrednost Vrednost “null” se dodeljuje promenljivoj kada se želi definisati da promenljiva ne sadrži nikakav podatak

33 Operatori Aritmetički Na nivou bita Relacioni Logički

34 Aritmetički operatori
Opis + sabiranje += sabiranje dodela - oduzimanje -= oduzimanje dodela * množenje *= dodela / deljenje /= deljenje dodela % moduo %= Moduo dodela ++ inkrement -- dekrement

35 Aritmetički operatori
$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 izvršavanja prethodnog primera dobija se sledeći tekst na ekranu: a, b, c, d, e, su

36 Na nivou bita Operator Upotreba Opis Logičko I (AND) $a & $b
Rezultatni bit je 1, jedino ako su oba bita 1 u ostalim slučajevima rezultat je 0. Logičko ILI (OR) $a | $b Rezultatni bit je 0, jedino ako su oba bita 0 u ostalim slučajevima rezultat je 1. Logičko eksluzivno ILI (XOR) $a ^ $b Rezultatni bit je 1, ako biti imaju različite vrednosti, u suprotnom je 0. Logičko NE (NOT) ~ $a Komplementira bitove operanda a. Pomeranje ulevo $a << $b Pomera binarni sadržaj operanda za b mesta ulevo. Prazna mesta popunjava sa vrednošću 0. Pomeranje udesno sa znakom $a >> $b Pomera binarni sadržaj operanda za b mesta udesno. Prazna mesta popunjava sa vrednošću najstarijeg bita.

37 Na nivou bita 15 & 9 rezultat 9 (1111 & 1001 = 1001)

38 Logički operatori Operator Upotreba Opis I (&& ili and) expr1 && expr2
Rezultat je true, jedino ako su oba operanda true, u ostalim slučajevima rezultat je false. ILI (|| ili or) expr1 || expr2 Rezultat se dobija false, jedino ako su oba operanda false, u ostalim slučajevima 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 različiti, i obrnuto, rezultat je false, ako su operandi isti

39 Logički $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 izvršavanja prethodnog primera je: a = 1 b = c = 1 d = f = 1 g =

40 Operatori poređenja Operator Upotreba Opis Jednakost (==)
Rezultat je true ako su operandi jednaki $x == $y rezultat je true ako su $x i $y jednaki. Nejednakost (!= ili <>) Rezultat je true ako su operandi različiti. $x ! = $y rezultat je true ako su $x i $y različiti. Veće (>) Rezultat je true ako je levi operand veći od desnog operanda. $x > $y ako je $x veće od $y. Veće ili jednako (>=) Rezultat je true ako je levi operand veći ili jednak desnom operandu $x >= $y ako je $x veće ili jednako $y. Manje (<) Rezultat je true ako je levi operand manji od desnog operanda $x < $y rezultat je true ako je $x manje od $y. Manje ili jednako (<=) Rezultat je true ako je levi operand manji ili jednak desnom operandu $x <= $y rezultat je true ako je $x manje ili jednako $y. Jednako bez konverzije tipova (===) Rezultat je true ako su operandi jednaki bez konverzije podataka $x === $y rezultat je true ako su $x i $y jednaki bez konverzije podataka Različito bez konverzije tipova (!==) Rezultat je true ako su operandi različiti bez konverzije podataka $x !== $y rezultat je true ako su $x i $y različiti bez konverzije podataka

41 Operatori poređenja $a = 4; $b = 1; $c = $a < $b; $d = $a == $b;
echo “ c = “, $c, “<br />“ ; echo “ d = “, $d ; Rezultat izvršavanja prethodnog primera je c = d =

42 String operator . Pomoću 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ć

43 Operator nizova + Pomoću 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

44 Operator Pre izraza (funkcija,promenljivih itd.) može se postaviti operator Uloga ovog operatora je da ignoriše greške koje mogu da nastanu pri izračunavanju izraza (uključujući i izvršavanje funkcije itd.)

45 Operator za izvršni kod
Naredba između dva akcenta `` izvršava naredbe operativnog sistema (npr. kreiranje direktorijuma, listanje direktorijuma itd.) Funkcioniše kada Apache nije u “Safe mode” i kada funkcija shell_exec nije isključena “Safe mode” se uključuje a shell_exec isključuje u fajlu php.ini, zatim se Apache restartuje.

46 Operator za izvršni kod: 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/ :36 . .. 11/20/ :16 44 index.html 04/19/ :51 21 phpinfo.php 04/24/ :28 58 phpproba.php 3 File(s) 123 bytes 2 Dir(s) bytes free

47 Operator za izvršni kod: primer
<?php $new_dir = "Bob"; `mkdir $new_dir` ?> Rezultat: otvoren je novi folder u okviru foldera gde je PHP fajl koji ga kreira

48 Funkcije Funkcije predstavljaju grupu naredbi koja se može izvršiti kao pojedinačna jedinica Funkcije su korisne jer čine program preglednijim i lakšim za ažuriranje Kao i bilo koji drugi PHP kod, funkcije se moraju definisati u okviru <?php … ?> elementa Funkcija se sastoji iz deklaracije funkcije i njenog poziva

49 Deklaracija funkcija Sintaksa za definisanje funkcije je :
function imeFunkcije(parametri) { naredbe; }

50 Pozivanje funkcije Da bi se izvršila funkcija potrebno ju je pozvati sa određenog mesta u okviru programa Funkcija se poziva njenim imenom i specifikacijom argumenata u okviru zagrada Vrednosti argumenata se prosleđuju odgovarajućim parametrima funkcije u skladu sa deklaracijom funkcije

51 Mogućnosti Funkcija može biti pozvana rekurzivno
Funkcija može biti definisana uslovno ili unutar druge funkcije, i onda je deklarisana samo ako je uslov ispunjen odnosno kada je ta druga funkcija pozvana

52 Naredba return Služi da bi se vratio rezultat funkcije pozvanoj naredbi Dodeljuje pozvanoj naredbi vrednost određenog izraza Tip može biti proizvoljan return 8; return $p*$m;

53 Opseg važenja promenljive
Prema opsegu važenja promenljive se dele na superglobalne, globalne ili lokalne Superglobalne promenljive su ugrađene u PHP i važe u bilo kom programu i funkciji Globalne promenljive se deklarišu izvan funkcije, i može im se pristupiti iz bilo kog dela programa Lokalne promenljive se deklarišu u okviru funkcije i jedino su dostupne u okviru funkcije u kojoj su deklarisane Parametri su takođe lokalne promenljive

54 Primer lokalne promenljive
<!DOCTYPE html> <html> <body> <?php $x=5; // globalna   function mojTest() { $x=1; echo $x; // lokalna } mojTest(); ?> </body> </html>

55 Primer globalne promenljive
<?php $x=5; // globalna $y=10; // globalna function mojTest() { global $x,$y; $y=$x+$y; } mojTest(); echo $y; // izbacuje 15 ?>

56 Argumenti funkcije Argumenti funkcije su izrazi koji su razdvojeni zarezom Promenljiva, argument, može biti prosleđena direktno $a ili preko reference &$a. U drugom slučaju može da se menja vrednost argumenta. Promenljivim, argumentima, se može dodeliti defolt vrednost. Primer: function birajKafu($tip = “kapućino") {     return “Izabran je $tip."; } birajKafu(“espreso”);birajKafu();

57 Ugrađene funkcije Postoji veliki broj funkcija koje su ili ugrađene po defoltu ili se uključuju kroz ekstenzije i dodatne biblioteke u PHP Kategorizacija funkcija i potrebne ekstenzije se mogu naći na veb strani Spisak svih funkcija se mogu naći na veb strani:

58 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'.

59 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

60 Objekti PHP podržava objekte kao strukturu podataka
Objekti se definišu pomoću funkcija Za svaki objekat su vezane osobine i metode Osobine su promenljive kojima se dodaju određene vrednosti Metode su funkcije u okviru objekata kojima mogu da se menjaju njihove osobine

61 Kreiranje klase i instance objekta
Klasa objekta ili prototip se definiše klasom čija je sintaksa class mojObjekat { [[deklaracijaOsobine1] osobina1;] [[deklaracijaOsobine2] osobina2;…] [[deklaracijaMetode1] metoda1;] [[deklaracijaMetode2] metoda2;…]} Instanca objekta se definiše pomoću naredbe new mojaInstanca=new mojObjekat Osobine klase mogu biti naknadno definisane

62 Deklaracije osobine Deklaracija osobine može biti
public – može se menjati sa bilo kog mesta direktno private – može se menjati samo pomoću metode objekta protected – nepoznata je van objekta final – ne može se menjati u klasama naslednicima

63 Deklaracije metode Deklaracija metode može biti
public – može 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 može se menjati u klasama naslednicima

64 Rad sa osobinama objekata
Vrednost osobine instance objekta se može koristiti na sledeći način: imePromenljive=mojaInstanca-> Osobina1; Vrednost osobine instance objekta se može promeniti ili naknadno definisati ukoliko nije bila ranije: mojaInstanca->Osobina1=vrednost1;

65 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; }

66 Korišćenje metoda Primer korišćenja metoda iz prethodnog primera:
var $primerKruga = new mojKrug(3,4,5); $primerKruga->pomeriZa(2,3); echo ‘Površina kruga je ‘, $primerKruga->izrPovrsinu(); echo ‘<br />Obim kruga je ‘, $primerKruga->izrObim(); Rezultat prethodnih komandi je: Površina kruga je Obim kruga je

67 Pozivanje konstanti Ne mora se instancirati objekat da bi se pozvala konstanta njegove klase Primer <?php class Math { const pi = ; } echo " Math::pi = “,Math::pi; ?>

68 Pozivanje statičkih osobina i metoda
Statičke osobine i metode se takođe 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 $posete -> izbrojPosetioce(); ?> Rezultat primera: 1 2

69 Nasleđivanje između 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

70 2. Kontrola toka Ternarni operator Naredba if-else Naredba switch
Petlje for petlja while petlja Izlazi iz blokova break continue goto Naredbe include, require

71 Ternarni operator Sintaksa: logIzraz ? izraz1 : izraz2
gde je izraz log_izraz bilo koji izraz čiji rezultat je vrednost logičkog tipa. Ako je rezultat izraza true, onda se izvršava izraz1, u suprotnom izraz2. Primer: $kolicnik = $imenioc ==0 ? 0 : $brojioc/$imenioc

72 Kontrole toka - if Sintaksa: if (logIzraz) {naredbe1;}
[else {naredbe2;}] Primer: if ($x == 8) {                     $y=$x;            } else {                 $z=$x; $y=$y*$x; }

73 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”;

74 Kontrola toka - switch Sintaksa switch (izraz) {
case vr1: naredbe1; [break;] ... case vrN: naredbeN; [break;] [default: naredbeDef;] }

75 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 ”; }

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

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

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

79 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.

80 Kontrola toka - break Primer: 1:{ 2: { 3: { echo “pre break-a”;
3: { echo “pre break-a”; break 2; } echo “ovo neće biti prikazano”; echo “posle break-a”; Rezultat: pre break-a posle break-a

81 Kontrola toka - break Primer: 1:{ 2: { 3: { echo “pre break-a”;
2: { 3: { echo “pre break-a”; break 3; } echo “ovo neće biti prikazano”; echo “posle break-a”; Rezultat: pre break-a ovo neće biti prikazano posle break-a

82 Kontrola toka - continue
Takođe može koristiti numerički argument Primer: for($i=0; $i<10; $i++){ echo $i+ “ “; if ($i%2 ==0) continue; echo “<br />“; } Rezultat: 0 1 2 3 4 5 6 7 8 9

83 Komanda toka goto <?php goto a; echo 'Fu'; a: echo 'Bar'; ?>
Primer: <?php goto a; echo 'Fu';   a: echo 'Bar'; ?>

84 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 uključuje fajl samo ako nije bio prethodno uključen.

85 Komanda require Komanda require je ista kao komanda include samo u njenom slučaju ukoliko se fajl ne nađe obustavlja se dalje izvršenje programa. Komanda require_once uključuje fajl samo ako nije prethodno uključen.

86 2. PHP funkcije Funkcije nizova Funkcije sa uzorcima za pretraživanje
Funkcije sa stringovima Matematičke funkcije Funkcije sa datumom i vremenom

87 Funkcija nizova print_r
Služi za ispisivanje nizova Primer: $glavniGradovi =array(“Srbija”=>”Beograd”, “Francuska”=> “Pariz”, “Belgija”=> “Brisel”); print_r($glavniGradovi); Rezultat: Array ( [Srbija] => Beograd [Francuska] => Pariz [Belgija] => Brisel )

88 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)

89 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

90 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

91 Dodavanje i oduzimanje elemenata niza
Funkcije su dalje: array_unshift(imeNiza, element1, [element2…]) – dodaje vrednost elementa na početak niza a ostale elemente pomera za jedan udesno array_pad(imeNiza, duzinaNiza, element1) – dopunjava niz do zadate dužine zadatim elementima

92 Lociranje elementa u nizu
Funkcije su: in_array(element,imeNiza) – daje TRUE ako je vrednost datog elementa u datom nizu i FALSE u obrnutom slučaju array_keys(imeNiza[,element]) – daje niz svih indeksa elemenata, odnosno niz indeksa zadate vrednosti array_search(element,imeNiza) – daje vrednost prvog indeksa zadate vrednosti

93 Funkcije kretanja po nizu
key(imeNiza) – daje trenutni indeks current(imeNiza) – daje trenutnu vrednost each(imeNiza) – daje trenutni indeks-vrednost par i pomera pokazivač za jedan

94 Funkcije kretanja po nizu
reset(imeNiza) – vraća pokazivač na početak niza next(imeNiza) – vraća vrednost sledećeg elementa u nizu i pomera ga za jedno mesto unapred prev(imeNiza) – vraća vrednost prethodnog elementa u nizu i pomera ga za jedno mesto unazad end(imeNiza) – pomera pokazivač na kraj niza i vraća vrednost elementa

95 Sortiranje niza Funkcije:
sort(imeNiza[,sortFleg]) – sortira niz. sortFleg može biti SORT_NUMERIC, SORT_REGULAR (zavisi od tipa elemenata), SORT_STRING rsort(imeNiza[,sortFleg]) – sortira niz u opadajućem redosledu asort(imeNiza[,sortFleg]) – sortira niz zadržavajući index-vrednost parove

96 Sortiranje niza Funkcije:
usort(imeNiza[,imeFunkcije]) – sortira niz na osnovu zadate funkcije array_reverse(imeNiza[,fixIndekse]) – obrne redosled elemenata, ako su pravi indeksi numerički i fixIndekse=TRUE čuvaju se kao indeksi array_flip (imeNiza) – obrne mesta indeksima i vrednostima

97 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 dužine počev od indeksa sa rednim brojem ofset array_splice(niz1,ofset[,duzina][,niz2]) – daje niz u kome je obrisan deo niza date dužine počev od ofseta, i eventualno ga zamenjuje drugim nizom

98 Kombinovanje nizova Funkcije:
array_intersect(niz1,niz2) – daje niz svih vrednosti koje su zajedničke za dva niza array_intersect_assoc(niz1,niz2) – daje niz svih parova indeks-vrednost koje su zajedničke za dva niza array_diff(niz1,niz2[,niz3…]) – daje vrednosti prvog niza koje se ne nalaze u narednim nizovima koji su argumenti funkcije

99 Pretraživanje pomoću uzoraka
Postoji dve vrste uzoraka POSIX PCRE – Perl Compatible Regular Expression Perl uzorci su najpopularniji, i isti kao i kod Javascript-a

100 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 način apliciranja mustre. Sintaksa mustri:

101 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 (početak strane) \xhh Heksadecimalni kod unicode znak

102 Specijalni znaci u uzorcima
Karakter Predstavlja pojavljivanje [...] Bilo kog karaktera od onih koji su navedeni između [ i ]. [^...] Bilo kog karaktera koji nije naveden između [ 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

103 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/ Pomoću ovog uzorka se definiše broj koji se sastoji od 5 cifara

104 Specijalni znaci u uzorcima
Oznaka Značenje {n,m} Ponavljanje prethodne grupe najmanje n puta, ali najviše m puta. {n,} Ponavljanje prethodne grupe n ili više puta. {n} Ponavljanje prethodne grupe tačno n puta. ? Ponavljanje prethodne grupe jednom ili nijednom. Isto dejstvo kao i {0,1}. + Ponavljanje prethodne grupe jednom ili više puta. Isto dejstvo kao i {1,}. * Ponavljanje prethodne grupe nijednom ili više 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 početku stringa $ Pretraga uzorka se obavlja na kraju stringa

105 Primeri uzoraka /\d{2,4}/ // uzorak koji označava pojavljivanje 2, 3 ili 4 cifre /\w{3}\d?/ // uzorak koji označava pojavljivljavanje tačno tri znaka i opciono jedne cifre, npr. string koji odgovara ovom uzorku je „abc8” ili „qoq”. /\s+java\s+/ // uzorak koji označava string “ java " sa jednim ili više prostora pre ili posle stringa /["]*/ // uzorak koji označava nula ili više pojavljivanje karaktera navoda

106 Primeri uzoraka /ab|cd|ef/ // uzorak koji označava pojavljivanje ab ili pojavljivanje cd ili pojavljivanje ef /\d{3}|[a-z]{4}/ // uzorak koji označava pojavljivanje tri cifre ili 4 mala slova, npr “123” ili “abcd” /((ab|cd)+|ef)/ // uzorak koji označava pojavljivanje stringa „ef” ili pojavljivanje jednom ili više puta stringa „ab” ili pojavljivanje jednom ili više puta stringa „cd”, npr. “abab” Kada tražimo neki od komandnih znakova onda koristimo \*, a kada tražimo \’, onda koristimo \\\’

107 Atributi uzoraka Atribut Značenje i
Izvršavanje case-insensitive ispitivanja. g Izvršava globalno ispitivanje, znači pronači će se sva pojavljivanja definisanog uzorka, a neće se ispitivanje zaustaviti posle prvog pronalaska uzorka. m Rad sa više linija.

108 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]))*$" {0,61}[a-zA-Z0-9])(\.([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9_\-]{0,61}[a-zA-Z0-9]))*$”

109 Funkcije uzorka Funkcije:
preg_grep(imeUzorka,imeNiza) – daje niz sa svim elementima niza koji u sebi sadrže 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

110 Funkcije uzorka - primer
<?php $delimitedText=“+Jason Columbus+++OH”; $fields=preg_split(“/\+{1,}/”,$delimitedText); foreach($fields as $field) echo $field.”<br />”;?> Rezultat: Jason Columbus OH

111 Funkcije uzorka – primer 2
<?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

112 Funkcije upoređenja stringova
strlen(string) – dužina stringa strspn(string1,string2) – daje dužinu segmenta u kome se nalaze samo znaci iz drugog stringa

113 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

114 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 dužine, tip može biti STR_PAD_LEFT, STR_PAD_RIGHT, STR_PAD_BOTH

115 Još neke funkcije stringova
explode(separator,string) – daje niz delova stringa koji su razgraničeni 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 nepreklapajućih podstringova u stringu

116 Sortiranje niza - 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);}

117 Sortiranje niza - primer
$datumi = array(“ ”,” ”,” ”); sort($datumi); print_r($datumi); echo “<br />”; usort($datumi,”sortirajDatume”); print_r($datumi);} Rezultat: Array ( [0] => [1] => [2] => ) Array ( [0] => [1] => [2] => )

118 Matematičke funkcije Veliki broj matematičkih funkcija je na raspolaganju, mogu se naći na:

119 Datum i vreme Funkcije koje se tiču datuma i vremena mogu se naći na:

120 3. PHP u praksi PHP interfejsi preko superglobalnih promenljivih
Obrada podataka iz formulara Aploudovanje fajlova Rad sa fajlovima PHP sesije i kolačići PHP PHP autentifikacija

121 Superglobalne promenljive
Superglobalne promenljive su interfejsi PHP programa sa spoljnom okolinom preko kojih razmenjuju informacije Neke važne superglobalne su sledeće: $_SERVER, $_GET, $_POST, $_FILES, $GLOBALS, $_COOKIE, $_SESSION, $_ENV Superglobalne promenljive (superglobals) se mogu naći na:

122 Superglobalna $_SERVER
$_SERVER je niz sa informacijama o hostu i serveru Neki elementi niza $_SERVER $_SERVER[‘HTTP_REFERER’] – URL veb adrese sa koje se došlo na datu stranu $_SERVER[‘REMOTE_ADDR’] – klijentova IP adresa $_SERVER[‘REQUEST_URI’] – relativna putanja do zadatog fajla, uključujući i upite pomoću get metode $_SERVER[‘HTTP_USER_AGENT’] – operativni sistem i brauzer klijenta $_SERVER[‘PHP_SELF’] – skript koji se izvršava, ime fajla uključujući relativnu putanju. Konstanta __FILE__ jeste magična (magic) konstantna i daje kompletno ime fajla uključujući i absolutnu adresu

123 Superglobalna $_GET $_GET je niz koji sadrži parametre koji su prosleđeni metodom get HTTP metoda get se koristi kada se preuzima sadržaj sa servera, i njeni parametri se prosleđuju kroz URL Stranice dobijene get metodom mogu da se memorišu, i čuvaju se u kešu Primer, ukucajmo proba u polje za pretraživanje na Tada je $_GET[‘q’] jednak ‘proba’

124 Superglobalna $_POST $_POST je niz parametara koji se prosleđuju kroz metod post, koristeći atribute name Primer: <html> <form action=“ 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=“Upiši se!” /> </ form> </html> U fajlu upis.php <?php echo $_POST[‘ ’]; ?>

125 Supeglobalna $_POST Pomoću HTTP metode post se šalju podaci odvojeno kroz formular Podaci poslati post metodom se ne mogu memorisati (bookmark) niti keširati. Zbog toga pružaju veću bezbednost prenosa. Podaci nisu ograničene dužine 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= Server odgovara HTTP/ Created Date: … Content-Length: 0 Location:

126 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’] – veličina fajla $_FILE[nameAtribut][‘tmp_file’] – privremeno ime fajla

127 Superglobalna $_FILE Još jedan element ove matrice:
$_FILE[nameAtribut][‘error’] – opisuje grešku do koje je došlo pri aploudovanju fajla, može imati sledeće vrednosti: UPLOAD_ERR_OK: fajl je uspešno aploudovan UPLOAD_ERR_INI_SIZE: fajl prelazi maksimalnu veličinu dozvoljenu parametrom upload_max_filesize specificiranu u php.ini UPLOAD_ERR_FORM_SIZE: fajl prelazi max veličinu specificiranu u formularu parametrom MAX_FILE_SIZE (ne koristi se) UPLOAD_ERR_PARTIAL: fajl je samo delimično aploudovan UPLOAD_ERR_NO_FILE: fajl nije bio specificiran

128 Superglobalna $_COOKIE
$_COOKIE je niz koji nosi informacije o kolačićima. Indeksi ovog niza su imena kolačića, a vrednosti su vrednosti kolačića. Kolačići se setuju funkcijom: setcookie ( ime [, vrednost [, rok [, putanja [, domen [, zaštita [, httponly ]]]]]] ) U php.ini se definiše veličina bafera u kojem se čuva html strana pre slanja, da ne bi zaglavlje bilo poslato pre setovanja kolačića, npr: output_buffering=1024

129 Superglobalna $_SESSION
$_SESSION je niz indeksa (ključeva) i vrednosti koji se vezuje za korisnika. Sesija se generiše pomoću funkcije start_session() kojom se kolačić čija je vrednost jednaka SID (ID sesije) šalje korisniku.

130 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=" 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="Upiši se!" /> </form> EOT; }?>

131 Rad sa formularima

132 Prosleđivanje 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>

133 Rad sa formularima: PHP i JavaScript
Primer fajla upis3.php: <html> <form action=" 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="Upiši se!" /> </form> <?php if (isset($_POST["upis"])){ $x='emeil‘;?> <script type="text/javascript"> alert ("Emeil je: <?php echo $_POST[$x]; ?>"); </script> <?php } ?> </html>

134 Rad sa formularima: PHP i JavaScript

135 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="Pošalji!" /> </form> EOT; if (isset($_POST['upis'])) {echo "Izabrali ste jezike: <br />"; foreach($_POST['jezici'] AS $jezik) echo "$jezik <br />";} ?>

136 Rad sa formularima: izbor opcija

137 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 (količina podataka po jednoj post metodi veći od upload_max_filesize)

138 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 /> Domaći: <br /> <input type="file" name="domaci" /> <br /> <input type="submit" name="posalji" value="Pošalji!" /> </form>

139 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> Domaći može 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 uspešno aploudovan. </p>"; else echo "<p> Fajl nije aploudovan, pokušajte ponovo. </p>";}}} ?>

140 Aploudovanje fajla Fajl _ pdf je u folderu domaci

141 Mime tipovi Tip fajla se može biti bilo koji mime tip, koji se mogu naći npr. na:

142 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 /> Domaći: <br /> <input type="file" name="domaci" /> <br /> <input type="submit" name="posalji" value="Pošalji!" /> </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> Domaći može biti aploudovan samo u *.doc formatu </p>";} else {

143 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 uspešno aploudovan. </p>"; else echo "<p> Fajl nije aploudovan, pokušajte ponovo. </p>";}}} ?> Rezultat: poslat fajl se nalazi u folderu \domaci\ pod imenom _ doc gde je broj indeksa studenta koji je poslao fajl

144 Rad sa fajlovima Postoji veliki broj funkcija za rad sa fajlovima, mogu se naći na Najvažnije funkcije: fopen (imeFajla, mod [,uključiPutanju]) – tipa je resurs na koji se kasnije referiše, mod može biti “w”, “w+”, “r”… Može se koristiti putanja specificirana u httpd fajlu sa komandom include_path fwrite (refFajla, string) fread (refFajla, brojBajtova) fclose (refFajla)

145 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 može biti FILE_IGNORE_NEW_LINES, ili FILE_SKIP_EMPTY_LINES

146 Rad sa kolačićima Sintaksa:
setcookie ( ime [, vrednost [, rok [, putanja [, domen [, zaštita [, httponly ]]]]]] ) ime, vrednost su stringovi rok je rok trajanja kolačića u sekundama putanja je direktorijum odakle se može pristupiti kolačiću domen je domen odakle se može pristupiti kolačiću zaštita je TRUE ako se za setovanje kolačića traži sigurna HTTPS konekcija httponly je TRUE ako se kolačić može menjati samo kroz HTTP konekciju

147 Rad sa kolačićima: setovanje
U folderu domaci se nalazi fajl kuki.php: <?php $vrednost = ‘Neka vrednost kolačića!'; setcookie("testKolačić", $vrednost, time()+3600, "/domaci/"); /* ističe za sat */ if (isset($_COOKIE["testKolačić”])) { echo $_COOKIE["testKolačić"];} ?>

148 Rad sa kolačićima: čitanje
Primer: U koren (root) direktorijumu (C:\Program Files\wamp\www) se nalazi kuki2.php: <?php echo $_COOKIE["testKolačić"];?> Rezultat: Kada se pokrene kuki.php, a zatim kuki2.php, na ekranu ništa nije ispisano, jer kuki2.php nije u dozvoljenom direktorijumu (folderu)

149 Rad sa kolačićima: čitanje
Primer: U direktorijumu \domaci (C:\Program Files\wamp\www\domaci) se sada nalazi kuki2.php: <?php echo $_COOKIE["testKolačić"];?> Rezultat: Kada se pokrene kuki.php, a zatim kuki2.php, na ekranu se pojavi: Neka vrednost kolačića!

150 Rad sa kolačićima: brisanje
Za rok važnosti kolačića se setuje prošli trenutak: <?php $vrednost = ‘Neka vrednost kolačića!'; setcookie("testKolačić", $vrednost, time()-3600, "/domaci/"); /* isteklo trajanje kolačića */ echo $_COOKIE["testKolačić"]; ?>

151 Setovanje kolačića: Napomena
Kolačić se setuje u zaglavlju koje se šalje. Ukoliko se zaglavlje pošalje pre nego što je kolačić setovan, kolačić neće biti poslat. Zato postavljanje polja u zaglavlju mora ići pre komande sa izlazom (npr. echo). Alternativno se u fajlu php.ini uključi opcija output_buffering da bi HTTP zaglavlje čekalo i sadržaj output_buffering=x

152 Kolačić 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

153 Konfiguracija sesija Parametri koji mogu da se konfigurišu u php.ini
session.save_handler files|mm|user (određuje gde će biti sačuvane 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 kolačića)

154 Konfiguracija sesija Parametri koji mogu da se konfigurišu u php.ini
session.auto_start 0|1 session.cookie_lifetime brojSekundi – po defoltu 0 session.cookie_path string session.cookie_domain string

155 Konfiguracija sesija Parametri koji mogu da se konfigurišu u php.ini
session.gc_maxlifetime brojSekundi session.use_trans_sid = 0|1 (omogućava 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 ažuriraju da uključe SID)

156 Komande sesija Komande session_start() – startovanje sesije
session_unset() – oslobađanje svih promenljivih pridružene sesiji session_destroy() – uništavanje sesije, vraća TRUE ako je sesija uspešno uništena

157 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 kolačića čija je vrednost SID session_get_cookie_params() session_set_cookie_params( rok [, putanja [, domen [, zaštita [, httponly ]]]]]] ) – ime kolačića je ime sesije, a vrednost je SID

158 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: .

159 Primer sesije prosleđene 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=" echo SID; ?>"> Link ka drugoj stranici </a>

160 Primer sesije prosleđene 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 />"; ?>

161 Primer sesije prosleđene preko URL-a

162 Primer sesije prosleđene preko kolačića
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 />"; ?>

163 Primer sesije prosleđene preko kolačića
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 />"; ?>

164 Primer sesije prosleđene preko kolačića

165 Trajanje sesije prosleđene kolačićima
Ukoliko u prethodnom slučaju ukucamo u brauzer URL fajla dobićemo isti rezultat u brauzeru. Ukoliko zatvorimo brauzer, i ukucamo isti URL izgubiće se podaci o sesiji, tj. vrednost polja username. Trajanje kolačića se može produžiti ili konfiguracijom u php.ini fajlu, ili komandom pre session_start(): session_set_cookie_params(rok);

166 XHTML e-meil podsetnik
Primer slanja e-meila: <a poruke&body=Napišite vaš komentar"> Pošaljite poruku! </a>

167 Slanje formulara e-meilom
Primer: <html> <form method="post" action="mailto: 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="Pošalji"> </form> </html>

168 Slanje formulara e-meilom

169 Konfiguracija i-meil servisa
U fajlu php.ini SMTP string – definiše SMTP server, po defoltu localhost sendmail_from string– definiše e-meil pošaljioca smtp_port ceoBroj – po defoltu 25 sendmail_path string – definiše putanju do sendmail klijenta, koji se povezuje sa serverom

170 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

171 e-mail pomoću PHP Najvažnija funkcija je mail, čija je sintaksa
mail (to, subject, poruka [, dodatnaZaglavlja [, dodatniParametri]]) Jednostavan primer: , “Kratko”, “Prvi PHP e-meil”);

172 e-mail pomoću PHP Primer: $zagl=“From:milan@etf.rs\r\n”;
$zagl.=“Content-Type:text/plain;\r\n charset=iso \r\n”; mail($primaoci, “Kratko”, “Drugi PHP e-meil”,$zagl);

173 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 \r\n"; $primaoc=$_POST['emeilPrim']; $tema=$_POST['imePrez']; mail($primaoc, $tema, $_POST['poruka'],$zagl);} ?>

174 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" Adresa: <br /> <textarea name="poruka" rows="6" cols="30" > Unesite tekst </textarea> <input type="submit" name='upis' value="Pošalji"> </form> </html>

175 Formular za e-meil

176 Autentifikacija Autentifikacija se zasniva na HTTP autentifikaciji opisanoj u IETF RFC2617 Pomoću funkcije header() se šalju komande brauzeru da treba traži login podatke od korisnika Podaci koje je korisnik ukucao se nalaze u superglobalnoj promenljivoj $_SERVER ['PHP_AUTH_USER'], i $_SERVER['PHP_AUTH_PW']

177 Autentifikacija: Primer kada su lozinke u fajlu
Fajl koji sadrži korisnička imena i lozinke je lozinke.txt aleks : 12cikpogodi pera : 3jhkj34 milan : 89kjlkjal marija : 98nkj32kk

178 Autentifikacija: Primer kada su lozinke u fajlu
Kod koji generiše 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); ?>

179 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/ Neautorizovan'); /* Ako korisnik ukuca Cancel dobija se sledeće */ print('Morate dati ispravne login podatke!'); exit;} echo "Materijal sa restrikcijama ..." ?>

180 Autentifikacija: Primer kada su lozinke u fajlu

181 PHP i DOM (Document Object Model)
DOM je interfejs sa veb stranom kao hijerarhijskom strukturom Pomoću PHP-a se mogu čitati, dopisivati, ili menjati pojedini elementi veb strane. Sve klase koje čine DOM:

182 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 ...

183 Osobine DOMNode klase nodeName, nodeValue, nodeType, parentNode, childNodes, firstChild, lastChild, previousSibling, nextSibling, attributes, textContent...

184 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 — Upiši HTML element iz stringa DOMDocument::loadHTMLFile — Upiši HTML element iz fajla DOMDocument::saveHTML — Sačuvaj HTML element u string DOMDocument::saveHTMLFile — Sačuvaj HTML element u fajl ...

185 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 ...

186 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>

187 Primer rada sa čvorovima
<?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>

188 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);

189 4. PHP i baze podataka Uvod Konfigurisanje privilegija mySQL komande
PHP komande za rad sa mySQL (my Structured Query Language) bazama podataka

190 MySQL Najpoznatija i najviše korišćena open-sors baza podataka zasnovana na SQL jeziku Korišćenje ove baze podataka je besplatno MySQL komande su neosetljive na veličinu slova (case sensitive), ali je praksa se pišu velikim slovima. Promenljive su osetljive na veličinu slova. Uputstvo za korišćenje MySQL baze se može naći na: index.html

191 Tržište baza podataka 2013

192 MySQL i druge open-sors baze 2014
jelastic.com

193 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 konfigurišu Pristup može biti radi kreiranja baze, brisanja baze, dodavanja ili menjanja informacija u bazi, i brisanja informacija u bazi

194 Konfigurisanje MySQL baza podataka i privilegija
Može se pristupiti koristeći razne klijente: mysql klijent podrazumeva šel komandni interfejs, i može da konfiguriše 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 prilagođen PHP-u

195 Organizacija privilegija
Privilegije se zapravo nalaze u mysql bazi podataka, koja se sastoji iz sledećih tabela: user – određuje korisnike koji mogu da se loguju na server sa bilo kog hosta i njihove privilegije db – određuje koji korisnici mogu da pristupe kojim bazama podataka host – određuje hostove sa kojih se može pristupiti kojim bazama tables_priv: određuje koji korisnici mogu da pristupe kojim tabelama date baze columns_priv: određuje koji korisnici mogu da pristupe kojim kolonama date tabele date baze

196 mysql tabela user Column Datatype Null Default Host char(60) binary No
Password char(41) binary Select_priv enum(‘N’, ‘Y’) N Insert_priv Update_priv

197 mysql tabela db Column Datatype Null Default Host char(60) binary No
User char(16) binary Select_priv enum(‘N’, ‘Y’) N Insert_priv Update_priv

198 mysql tabela host Column Datatype Null Default Host char(60) binary No
Db char(64) binary Select_priv enum(‘N’, ‘Y’) N Insert_priv Update_priv Delete_priv

199 mysql tabela tables_priv
Column Datatype Null Default Host char(60) No Db char(64) User Char(16) Table_name Grantor Char(77) Timestamp timestamp Yes Current timestamp Table_priv skupPrivilegija Column_priv skupKolona

200 mysql tabela columns_priv
Datatype Null Default Host char(60) No Db char(64) User Char(16) Table_name Column_name Char(64) Timestamp timestamp Yes Column_priv skupPrivKolona

201 mysql tabela procs_priv
Column Datatype Null Default Host char(60) No Db char(64) User Char(16) Routine_name Routine_type enum Grantor Char(77) binary Proc_priv skupKolona Timestamp timestamp Yes

202 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 ‘localhost’ IDENTIFIED BY “12cikpogodi”; Korisnik se briše komandom DROP USER korisnik1 [, korisnik2…]

203 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 ‘ ’;

204 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

205 Tip korisničkih 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 postojeće zapise u tabelama. DELETE dozvoljava korisnicima da brišu zapise (redove) iz tabela INDEX dozvoljava korisnicima da indeksiraju tabele, što omogućava brže pretraživanje

206 Tip korisničkih 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

207 Tip korisničkih 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:

208 MySQL komande Najvažnije komande: CREATE, DROP, SELECT, INSERT, DELETE, UPDATE Kompletan spisak komandi:

209 Kreiranje baze i brisanje baze
Baza podataka se kreira jednostavnom naredbom: CREATE DATABASE imeBaze; Baza podataka se briše naredbom DROP DATABASE imeBaze; U bazu se ulazi naredbom USE imeBaze; Alternativno tabela i kolone se zovu: imeBaze.imeTabele i imeBaze.imeTabele.imeKolone

210 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);

211 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 (dužina) Kompletna lista tipova se može naći na: Atributi kolona su: DEFAULT vrednost, AUTO_INCREMENT, NOT NULL, PRIMARY KEY, UNIQUE,... Kompletna lista:

212 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 VARCHAR(20) AFTER telefon;

213 Č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

214 Funkcije koje koriste kolone
AVG(imeKolone) daje prosečnu vrednost kolona COUNT(imeKolone) daje broj ne NULL vrednosti u okviru kolone COUNT(DISTINCT imeKolone) daje broj različitih 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

215 Primeri čitanja kolona uz pomoć funkcija
Korišćenje funkcija SELECT AVG(cena) FROM kupovine; Korišćenje funkcija i grupisanja, nalazi minimalnu cenu koju je platio svaki kupac SELECT MIN(cena) FROM kupovine GROUP BY id_kupca;

216 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 korišćen prazan string jer je kolona definisana kao AUTO_INCREMENT.

217 Brisanje podataka iz baze
Opšta sintaksa je: DELETE FROM imeTabele [WHERE uslov] [ORDER BY ...] [LIMIT broj] Primer: DELETE FROM zaposleni WHERE zaposleni.ime=‘Marko'

218 Ažuriranje podataka u bazi
Opšta sintaksa je: UPDATE tabela SET imeKolone1=izraz1, imeKolone2=izraz2,... [WHERE uslov] [ORDER BY ...] [LIMIT broj] ; Primer UPDATE studenti SET WHERE ime=‘Nataša Maksić';

219 PHP komande za rad sa MySQL bazom
Razvijen je skup funkcija za rad sa MySQL bazama, od kojih su najvažnije: mysqli_connect, mysqli_close, mysqli_select_db, mysqli_query, mysqli_db_query, ... Kompletna lista se može naći na stranici class.mysqli.php

220 PHP klase za rad sa MySQL bazom
Razvijen je skup funkcija za rad sa MySQL bazama, od kojih su najvažnije: mysqli::query, mysqli_result::fetch_all, mysqli::close, ... Kompletna lista se može naći na stranici mysqli.php

221 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);

222 Uspostavljanje i raskidanje veze sa bazom pomoću klasa
Sintaksa link= new mysqli(host[,korisnik[,lozinka[, baza]]) link->close() Primer: $l=new mysqli(“localhost”, “aleks”, “12cikpogodi”); $l->close();

223 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);

224 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);

225 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);

226 PHP komande za čitanje iz baze
Metode klase mysqli_result na Metode: $rez=$veza->mysqli($upit); $rez->fetch_all(); $rez->fetch_assoc(); $rez->fetch_array();

227 Čitanje iz baze pomoću 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’];}} ?>

228 Brisanje iz baze pomoću 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();} ?>

229 Upis u bazu pomoću 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 ubačeni!”;} ?>

230 PHPMyAdmin

231 Users: dodavanje korisnika

232 Users: dodavanje korisnika
Ide se na Add User Izabere se korisničko ime, šifra, i host Ovi podaci se koriste kada se konektuje na server pomoću komandi mysqli_connect(), ili new mysqli()

233 Rad sa bazama i tabelama

234 Export: čuvanje baze

235 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

236 Domaći mogu da se rade i na
Portabilan XAMPP

237 Kodiranje fajla u brauzeru
Na (X)HTML stranici se definiše 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

238 Kodiranje znakova u bazi
Pri kreiranju baze, tabela i kolona definiše se njihov alfabet, odnosno CHARACTER SET i COLLATION Da bi se u bazi videla slova srpske azbuke, na primer, potrebno je poslati podatke bazi koristeći utf-8 kodiranje naredbom mysqli_set_charset($veza,"utf8");


Download ppt "Internet programiranje PHP"

Similar presentations


Ads by Google