Izgradnja Web Aplikacija: Prof. Dr.sc. Dragutin Kermek

  • Uploaded by: Matija Horvat
  • 0
  • 0
  • June 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Izgradnja Web Aplikacija: Prof. Dr.sc. Dragutin Kermek as PDF for free.

More details

  • Words: 6,659
  • Pages: 103
Izgradnja Web aplikacija

Prof. dr.sc. Dragutin Kermek Sveučilište u Zagrebu Fakultet organizacije i informatike Pavlinska 2, Varaždin 42000 [email protected]

10. dio

Programiranje na strani poslužitelja

Uvod u programiranje na strani poslužitelja/CGI. Programski jezik PHP. Izvršavanje obrade (pretraživanje, zapis podataka i sl.) na strani poslužitelja. Slanje e-mail poruke. Generiranje HTML stranica. Ponovno korištenje koda. Objektna orijentacija. Rad s datumom i vremenom. Korištenje i administriranje baze podataka (MySQL). Realizacija autentikacije i autorizacije korisnika.

Izgradnja Web aplikacija - FOI 2

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Što je PHP PHP je skriptni jezik za programiranje na strani poslužitelja. Za njegovo izvođenje potreban je Web poslužitelj (Apache, IIS i dr.) s ugrađenom instalacijom PHP modula ili kao CGI binary. Kratica: “PHP: Hypertext Preprocessor” Sintaksa PHP sliči jezicima: C, Java i Perl. PHP programski kod ugrađuje se u tekst HTML dokumenta. Svaki programski jezik određen je svojom sintaksom.

Bogatstvo programskog jezika izražava se brojem i raznolikošću biblioteka funkcija ili klasa koje stoje na raspolaganju (besplatno ili se kupuje). Izgradnja Web aplikacija - FOI 3

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Što može PHP 

Sve što i bilo koji drugi CGI program  Preuzimati podatke iz formi  Generirati dinamičke web stranice  Slati i primati cookie  Rad sa bazama podataka (Adabas D, Dbase, FrontBase, Solid, Empress, mSQL, Sybase, FilePro (read-only), Direct MS-SQL, Velocis, IBM DB2, MySQL, Unix dbm, Informix, ODBC, Ingres, Oracle)  Podržava i druge protokole: IMAP, SNMP, NNTP, POP3, HTTP, LDAP  Moguće je korištenje XML (SAX i DOM standardi su podržani) za Web servise, RSS  Generiranje PDF i drugih formata Izgradnja Web aplikacija - FOI

4

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Što je potrebno za PHP Konfigurira se

Konfigurira se

Izgradnja Web aplikacija - FOI 5

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Povijest PHP-a Autor: Rasmus Lerdorf, jesen 1994 Prva verzija koja je bila dostupna za korištenje izašla je negdje početkom 1995 pod imenom “Personal Home Page Tools”. Krajem 1996 odprilike 15,000 web mjesta je koristilo PHP, a sredinom 1997 više od 50,000. Krajem 1999 procjenjeno je da više od 1,000,000 web mjesta koristi PHP.

Izgradnja Web aplikacija - FOI 6

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

PHP i FOI Rasmus Lerdorf, 19. travanj 2006. predavanje na FOI u sklopu suradnje s Danima otvorenih računarskih sustava u Zagrebu (http://www.open.hr/dc2006/) http://old.foi.hr/novosti_informacije/2006/04/predavanja_19.html PHP Presentation System, http://talks.php.net/index.php/PHP Web 2.0 and PHP 5, http://talks.php.net/show/varazdin

Izgradnja Web aplikacija - FOI 7

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

PHP, Lerdorf i FOI

Izgradnja Web aplikacija - FOI 8

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

PHP primjer Example

Korisnik nakon izvođenja prima čisti HTML PHP - Primjer 01 Opa, ovo je PHP!

Primjer01 – Ispis poruke Izgradnja Web aplikacija - FOI 9

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Sintaksa jezika Instrukcije su odvojene kao u jezicima C i Perl (točka-zarez): ILI

Primjer02 – Ispis poruka Izgradnja Web aplikacija - FOI 10

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Sintaksa jezika / 1. Izlazak iz HTML-a i ulaz u “PHP kod”. Postoje nekoliko načina prijelaza iz HTMLa u PHP: 1.



2.

- ovisi o konfiguraciji PHP-a

Primjer03 – Sintaksa Izgradnja Web aplikacija - FOI 11

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Sintaksa jezika / 2. Naziv varijable počinje znakom $. Kasnije slijedi detaljnije o varijablama. Postoji razlika između jednostrukih i dvostrukih navodnika! Jednostruki navodnici doslovno prikazuju tekst dok dvostruki provode zamjenu varijable s njenom vrijednošću. $a = 1; $b = 7;





Primjer04 – Primjena navodnika Izgradnja Web aplikacija - FOI 12

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Komentari Php koristi ‘C’, ‘C++’ i ‘Unix shell’ tipove komentara.


Nije dozvoljeno ugnjezditi višelinijske komentare npr. /* ovo je u redu /* ovo nije u redu */ */ Primjer05 – Komentari Izgradnja Web aplikacija - FOI 13

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Tipovi podataka PHP podržava sljedeće tipove podataka: » » » » »

Arrays - niz Floating-point numbers – decimalni brojevi Integer - cjelobrojni Object - objekt String - znakovni

Izgradnja Web aplikacija - FOI 14

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Integer Integer možemo specificirati na jedan od sljedećih načina: $a = 1234; # decimalni broj $a = -123; # negativan broj $a = 0123; # oktalni broj (83 decimalno) $a = 0x12; # heksadecimalni broj (18 decimalno)

Veličina integer-a zavisi od platforme na kojoj se izvodi PHP, iako je obično 32-bitan.

Izgradnja Web aplikacija - FOI 15

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Floating point – decimalni tip Sintaksa: $a = 1.234; $a = 1.2e3;

Izgradnja Web aplikacija - FOI 16

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Polja/nizovi Nizovi se u PHPu ponašaju:  kao hash tablice odnosno asocijativni nizovi i  kao vektori odnosno indeksirani nizovi

Izgradnja Web aplikacija - FOI 17

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Jednodimenzionalni nizovi Niz možemo kreirati koristeći list() i array() funkcije ili možeme eksplicitno pridružiti vrijednost svakom elementu niza $a[0] = "abc"; $a[1] = "def"; $b["foo"] = 13;

Možemo koristiti i prazne zagrade pa će element biti automatski dodan na kraj zagrade $a[] = "hello"; // $a[2] == "hello" $a[] = "world"; // $a[3] == "world"

Izgradnja Web aplikacija - FOI 18

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Jednodimenzionalni nizovi / 1. Funkcije za sortiranje nizova: asort() – sortira niz i održava redoslijed pridruživanja arsort() – sortira niz u obrnutom redoslijedu i zadržava redoslijed pridruživanja ksort() – sortira niz po ključu rsort() – sortira niz u obrnutom redoslijedu (od najvećeg prema najmanjem sort() – sortira niz od najmanjeg prema najvećem elementu uasort(), usort(), uksort() - sortiraju nizove po funkcijama koje im se zadaju

Izgradnja Web aplikacija - FOI 19

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Višedimenzionalni nizovi / 1. Za svaku novu dimenziju dodamo novi [indeks] ili [ključ]. $a[1][0] = $f; # dvodmenzionalni niz $a["foo"][2] = $f; # ( možemo miješati numeričke i) $a[3]["bar"] = $f; # ( asocijativne ključeve) $a["foo"][4]["bar"][0] = $f; # četiri dimenzionalni niz!

Višedimenzionalne nizove ne možemo direktno referencirati unutra stringova echo “Ovo neće raditi: $a[3][bar]"; echo " Ovo hoće raditi : " . $a[3][bar]; echo " Ovo hoće raditi : {$a[3][bar]}";

Izgradnja Web aplikacija - FOI 20

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

// PHP3 // PHP4

Višedimenzionalni nizovi / 2. Nizove možemo puniti na slijedeće načine: Prvi način: $a["color"] = "red"; $a["taste"] = "sweet"; $a["name"] = "apple"; $a[3] = 4;

Drugi način: $a = array(

"color" => "red", "taste" => "sweet", "name" => "apple", 3 => 4 );

Izgradnja Web aplikacija - FOI 21

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Višedimenzionalni nizovi / 3. Funkcija array() može biti ugnježđena kod višedimenzionalnih nizova: array("boja" => "plava", "okus" => "slano"), "jezero" => array("boja" => "zelena", "okus" => "slatko"), "bara" => array( "boja" => "smeđa", "okus" => "bljutavo")); echo $a["more"]["boja"]; ?>

Primjer06 – Višedimenzionalni nizovi Izgradnja Web aplikacija - FOI 22

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Objekti Da bi instancirali klasu (kreirali njen objekt) u varijablu koristi se new: probaj(); ?>

Primjer07 – Objekti Izgradnja Web aplikacija - FOI 23

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Rukovanje tipovima podataka PHP, kao i drugi skriptni jezici, ne zahtjeva deklariranje tipa podatka. Postupak se provodi automatski: $foo = "0"; // $foo je string (ASCII 48) $foo++; // $foo je string "1" (ASCII 49) $foo += 1; // $foo je integer (2) $foo = $foo + 1.3; // $foo sada je double (3.3) $foo = 5 + "10 Little Piggies"; // $foo je integer (15) $foo = 5 + "10 Small Pigs"; // $foo je integer (15) $foo = 5 + "Small Pigs"; // $foo je integer (5) $foo = "Small Pigs" + 5; // $foo je integer (5) $foo = 5 . "Small Pigs"; // $foo je string ("5Small Pigs") $foo = "Small Pigs" . 5; // $foo je string ("Small Pigs5")

Primjer08 – Tipovi podataka Izgradnja Web aplikacija - FOI 24

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Rukovanje tipovima podataka / 1. Još malo primjera: $foo $foo $foo $foo $foo $foo $foo $foo $foo $foo

= = = = = = = = = =

1 + "10.5"; // $foo is double (11.5) 1 + "-1.3e3"; // $foo is double (-1299) 1 + "bob-1.3e3"; // $foo is integer (1) 1 + "bob3"; // $foo is integer (1) 1 + "10 Small Pigs"; // $foo is integer (11) 1 + "10 Little Piggies"; // $foo is integer (11) 1 + "10.7 Small Pigs"; // $foo is double (11.7) 1 + "10.7 Little Piggies"; // $foo is double (11.7) "10.7 pigs " + 1; // $foo is double (11.7) "10.7 pigs " + 1.0; // $foo is double (11.7)

Primjer09 – Rukovanje tipovima podataka Izgradnja Web aplikacija - FOI 25

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Pretvaranje tipova podataka Ako se strogo želi koristiti određeni tip podataka to se čini funkcijom int settype (string var, string type)

Pretvara varijablu ‘var’ u tip podataka ‘type’, koji može imati sljedeće vrijednosti: “integer“, “string“,

”double“, “array“,

“object"

Funkcija vraća ‘true’ ako je promjena uspješna u suprotnom vraća ‘false’. Suprotno radi funkcija: string gettype (mixed var)

Izgradnja Web aplikacija - FOI 26

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Pretvaranje tipova podataka / 1. "; settype($foo, "string"); print $foo . " " . gettype($foo) . "
"; settype($foo, "int"); print $foo . " " . gettype($foo) . "
"; ?>

Primjer10 – Pretvaranje tipova podataka Izgradnja Web aplikacija - FOI 27

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Testiranje tipa podatka Ako se strogo želi ispitati određeni tip podataka to se čini funkcijom is_array() is_double(), is_float(), is_real() is_long, is_int(), is_integer() is_string() is_object()

Izgradnja Web aplikacija - FOI 28

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Testiranje tipa podatka / 1.

= 10.5; "int? " . is_int($foo) . "
"; "double? " . is_double($foo) . "
"; "string? " . is_string($foo) . "
";

Primjer10_1 – Testiranje tipa podatka Izgradnja Web aplikacija - FOI 29

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Testiranje statusa varijable Provjera postojanja varijable, njeno brisanje i imali li vrijednost: isset() - postoji li unset() - brisanje empty() - nema pridruženu vrijednost – prazna       

"" (prazan string) 0 (0 kao broj) "0" (0 kao string) NULL FALSE array() (prazno polje) var $var; (deklarirana varijabla bez vrijednosti)

Izgradnja Web aplikacija - FOI 30

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Testiranje statusa varijable / 1.

" . isset($foo) . "
";

" . isset($foo) . "
"; " . isset($foo) . "
"; " . empty($foo) . "
";

Primjer10_2 – Testiranje statusa varijable Izgradnja Web aplikacija - FOI 31

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

String Označavamo ih navodnicima. Ako koristimo obične navodnike ( " ) varijable unutar stringa će biti zamijenjene pravim vrijednostima. Drugi način za označavanje stringova su jednostruki navodnici ( '). Unutar jednostrukih navodnika varijable se ne zamjenjuju svojim vrijednostima. Za specijalne znakove koristi se \ (backslash): Slijed \n \r \t \\ \$ \“ \[0-7]{1,3} \x[0-9A-Fa-f]{1,2}

Značenje linefeed (LF or 0x0A in ASCII) carriage return (CR or 0x0D in ASCII) horizontal tab (HT or 0x09 in ASCII) backslash dollar sign double-quote znak u oktalnaj notaciji znak u heksadecimalnoj notaciji

Izgradnja Web aplikacija - FOI 32

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

String / 1. "; $num = 9; $str = "Broj: $num
"; // 'Broj: 9
' print $str; $num = 9; $str = 'Broj: $num
'; // 'Broj: $num
' print $str; $str = 'Ovo je test.'; print $str . "
"; $first = $str[0]; // Uzimanje prvog $last = $str[strlen($str)-1]; // i zadnjeg znaka print $first . " " . $last; ?>

Primjer11 – String Izgradnja Web aplikacija - FOI 33

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

String u više redova Još jedan način je korištenje (<<<) oznake:

Primjer12 – String u više redova Izgradnja Web aplikacija - FOI 34

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Varijable Imena varijabli se mogu kreirati po sljedećem pravilu: $[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*
$foo echo $bar $bar echo echo $bar echo

= 'Bob'; // Pridružujemo vrijednost 'Bob' $foo . "
"; = &$foo; // Referenciramo $foo preko $bar. = "Pero"; // Mijenjamo $bar i $foo je promijenjen. $foo . "
"; // 'Pero ' $bar . "
"; // 'Pero ' = "Moje ime je $bar"; $foo . "
"; // 'Moje ime je Pero '

?>

Primjer13 – Varijable Izgradnja Web aplikacija - FOI 35

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Unaprijed definirane varijable U PHP-u postoji veliki broj unaprijed definiranih varijabli. Sljedeće varijable vezane su uz Apache server Varijabla

Opis

SERVER_NAME

naziv servera

REQUEST_METHOD

koja metoda je korištena za pristup stranici; npr. 'GET', 'HEAD', 'POST', 'PUT‘

SCRIPT_NAME

sadrži put do skripte koja se trenutno izvršava

REMOTE_ADDR

IP korisnika koji gleda stranicu

SERVER_PROTOCOL

ime i revizija protokola preko kojeg je dan zahtjev za stranicom npr. HTTP/1.0

Izgradnja Web aplikacija - FOI 36

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Unaprijed definirane varijable / 1. -

Varijabla

Opis

argv

niz argumenata proslijeđenih skripti

argc

ako je skripta pozvana iz komandne linije

PHP_SELF

ime skripte koja se izvrašava

HTTP_COOKIE_VARS

asocijativni niz varijabli proslijeđenih skripti preko HTTP cookie-ja

HTTP_GET_VARS

asocijativni niz varijabli proslijeđenih skripti preko HTTP GET metode

HTTP_POST_VARS

asocijativni niz varijabli proslijeđenih skripti preko HTTP POST metode

Izgradnja Web aplikacija - FOI 37

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Konstante Konstante definiramo sa define() funkcijom. U PHPu postoje i predefinirane konstante: TRUE FALSE __FILE__ __LINE__

- istina - laž - ime skripte - linija u skripti

PHP_VERSION E_ERROR E_PARSE E_ALL

PHP_OS E_WARNING E_NOTICE

Izgradnja Web aplikacija - FOI 38

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Konstante / 1. Primjer za definiciju konstante:

Primjer15 – Konstante Izgradnja Web aplikacija - FOI 39

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Konstante kontrole programa Primjer za __FILE__ i __LINE__ :

Primjer16 – Konstante kontrole programa Izgradnja Web aplikacija - FOI 40

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Operatori U PHP-u postoje sljedeće vrste operatora: 1. 2. 3. 4. 5. 6. 7. 8. 9.

Aritmetičke operatore Operatore pridruživanja Operatore uspoređevanja Operatore na razini bitova Operatore za kontrolu grešaka Operatore izvršavanja Operatore za povećavanje i smanjivanje Logičke operatore Operatore za rad sa stringovima

Izgradnja Web aplikacija - FOI 41

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Aritmetički operatori +, -, /, *, %, ++, --

Izgradnja Web aplikacija - FOI 42

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Operatori uspoređivanja Primjer $a == $b $a === $b $a != $b $a !== $b tipa. $a < $b

Naziv Jednako Identično Nije jednako Nije jedinično

Rezultat True ako je $a jdnak $b. True ako je $a jednak $b i istog su tipa. True ako $a nije jednak $b. True ako $a nije jednak $b ili nisu istog

Manji od

True ako je $a strogo manji od $b.

$a > $b $a <= $b $a >= $b

Veći od

True ako je $a strogo veći od $b.

Manji ili jednak True ako je $a manje ili jednako $b. Veći ili jednak True ako je $a veći ili jednak $b.

Izgradnja Web aplikacija - FOI 43

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Logički operatori Primjer $a and $b $a or $b

$a xor $b ! $a $a && $b

$a || $b

Naziv I Ili Eks. ili Ne I Ili

Rezulat True ako su $a i $b true. True ako je ili $a ili $b true. True ako je ili $a ili $b true, ali ne oba. True ako $a nije true. True ako su $a i $b true. True ako je ili $a ili $b true.

Izgradnja Web aplikacija - FOI 44

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Operatori tipa PHP podržava samo jedan operatora tipa, a to je: instanceof

instanca klase

Izgradnja Web aplikacija - FOI 45

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

String operatori PHP podržava samo dva string operatora, a to su: . .=

Operator spajanja stringova Operator pridruživanja stringova

Izgradnja Web aplikacija - FOI 46

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

if instrukcija "; if ($a > $b) { print "a > b"; } elseif ($a == $b){ print "a == b"; } else { print "a < b"; } ?>

Primjer17 – if instrukcija Izgradnja Web aplikacija - FOI 47

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

switch instrukcija

Primjer18 – switch instrukcija Izgradnja Web aplikacija - FOI 48

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

while instrukcija "; $a++; } do { print "$a
"; $a--; } while ($a > 0); ?>

Primjer19 – while, do-while instrukcija Izgradnja Web aplikacija - FOI 49

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

for instrukcija "; if($i == 7) break; } ?>

Primjer20 – for instrukcija Izgradnja Web aplikacija - FOI 50

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

foreach instrukcija
foreach ($arr as $i) { echo "$i
\n"; } ?>

Primjer21 – foreach instrukcija Izgradnja Web aplikacija - FOI 51

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

foreach instrukcija / 1. $vr) { echo "$k=$vr
\n"; } ?>

Primjer22 – foreach instrukcija Izgradnja Web aplikacija - FOI 52

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Funkcije Funkcije možemo definirati na slijedeći način: Bez

argumenata: function foo() { ... } S argumentima: function foo ($arg_1, $arg_2, ..., $arg_n) { ... } S

pretpostavljenim vrijednostima argumenata: function foo ($arg_1 = pretpostavljena vrijednost) { ... }

Izgradnja Web aplikacija - FOI 53

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Funkcije / 1.

Primjer23 – Funkcije Izgradnja Web aplikacija - FOI 54

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Funkcije / 2.
// nema argument

function square ($num) { echo $num * $num; } ?>

Primjer23_1 – Funkcije Izgradnja Web aplikacija - FOI 55

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Funkcije / 3. "; square(3);

// nema argument

function square ($num = 7) { echo $num * $num; } ?>

Primjer23_2 – Funkcije Izgradnja Web aplikacija - FOI 56

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Funkcije / 4. Kod funkcije kojima nisu definirani argumenati: function foo() { ...

}

broj argumenata i same argumente možemo dobiti preko posebnih funkcija: func_num_args()

// broj argumenata

func_get_arg()

// preuzimanje argumenta

Izgradnja Web aplikacija - FOI 57

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Funkcije / 5. \n"; if ($numargs >= 2) { echo "2. argument je: " . func_get_arg(1) . "
\n"; } } ?>

Primjer23_3 – Funkcije Izgradnja Web aplikacija - FOI 58

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Vraćena vrijednost funkcije Funkcije mogu vraćati: Vrijednost:

function square ($num) { return $num * $num; }

Niz:

function small_numbers() { return array (0, 1, 2); }

Izgradnja Web aplikacija - FOI 59

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Vraćena vrijednost funkcije / 1. "; $b = small_numbers(); foreach ($b as $i) { echo $i . "
"; } function square ($num) { return $num * $num; } function small_numbers() { return array (0, 1, 2); } ?>

Primjer24 – Vraćene vrijednosti funkcije Izgradnja Web aplikacija - FOI 60

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Vraćena vrijednost funkcije / 2. ";

function small_numbers() { return array (0, 1, 2); } ?>

funkciom list(...) varijablama iz liste argumenata pridružuju se korespondirajuće vrijednosti niza. Skraćuje se postupak jer zamjenjuje veći broj pridruživanja prema indesiranim pozicijama iz niza.

Primjer24_1 – Vraćene vrijednosti funkcije Izgradnja Web aplikacija - FOI 61

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Vidljivost varijabli U PHP-u postoje 4 vrste vidljivosti varijabli: 1. Ugrađene superglobalne varijable koje su vidljive bilo gdje u skripti 2. Globalne varijable definirane u skripti vidljive su kroz cijelu skriptu ali ne u funkcijama 3. Varijable definirane u funkcijama su lokalne varijable funkcije 4. Varijable definirane u funkcijama kao globalne odnose se na globalne varijable istog imena

Izgradnja Web aplikacija - FOI 62

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Vidljivost varijabli / 1. Superglobalne varijable (njihov popis je u $GLOBALS): $vr) { echo $k . "
"; } ?>

Primjer26 – Vidljivost varijabli Izgradnja Web aplikacija - FOI 63

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Vidljivost varijabli / 2. "; foo();

function foo() { echo "foo: a=" . $a . "
"; $a = 2; echo "foo: a=" . $a . "
"; }

// varijaba a nije definirana

echo "a=" . $a . "
"; ?>

Primjer26_1 – Vidljivost varijabli Izgradnja Web aplikacija - FOI 64

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Vidljivost varijabli / 3. "; foo(); echo "a=" . $a . "
"; function foo() { global $a; echo "foo: a=" . $a . "
"; $a = 2; echo "foo: a=" . $a . "
"; } ?>

Primjer27 – Vidljivost varijabli Izgradnja Web aplikacija - FOI 65

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

CGI varijable okoline Variable Name

Value

DOCUMENT_ROOT korijenski direktorij na poslužitelju HTTP_COOKIE kolačići koje je postavio korisnik HTTP_HOST naziv računala HTTP_REFERER URL stranice koja je pozvala skriptu HTTP_USER_AGENT tip korisnikovog preglednika HTTPS "on" ako je skripta zvana preko sigurnog poslužitelja PATH putanja na kojoj je izvršen poslužitelj QUERY_STRING lista parametara (kod GET poziva) REMOTE_ADDR IP adresa korisnika REMOTE_HOST naziv računala korisnika (ako se može dobiti) ili IP adresa REMOTE_PORT port preko kojeg je korisnik povezan na poslužitelj REMOTE_USER korisničko ime (ako je stranica zaštićena putem poslužitelja REQUEST_METHOD GET ili POST REQUEST_URI putanja do zahtjevanog dokumenta ili skripte (relativno do korijenskog direktorija dokumenta) SCRIPT_FILENAME puni naziv važećeg sktipte SCRIPT_NAME putanja do važeće skripte (relativno do korijenskog direktorija dokumenta)

Izgradnja Web aplikacija - FOI 66

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

CGI varijable okoline / 1. Variable Name

Value

SERVER_ADMIN SERVER_NAME SERVER_PORT SERVER_SOFTWARE

email adres webmastera puno ime poslužitelja port kojeg prisluškuje poslužitelj software koji se koristi na poslužitelju (npr Apache/2.0.52)

WWW poslužitelj automatski postavlja asocijativni niz $HTTP_SERVER_VARS za svaki CGI – stara verzija php < 4.1.0 $_SERVER za svaki CGI – nova verzija 4.1.0. Platforma određuje koje su varijable okoline.

netstat –a da vidimo koji su na otvoreni portovi

Izgradnja Web aplikacija - FOI 67

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

CGI varijable okoline / 2. $vr) { echo "$k=$vr
\n"; } ?>

Primjer28 – CGI varijable okoline Izgradnja Web aplikacija - FOI 68

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Prijenos podataka iz formulara - GET Za prijenos podataka iz formulara također se koristi varijabla okoline QUERY_STRING u koju su upisani podaci svih kontrola iz formulara. Skripta sama obrađuje tu varijablu ali sada je jednostavnije jer se zna format po kojem su upisani podaci. NIJE sigurna metoda slanja podataka jer se podaci šalju kao dio URL-a! U PHP-u postoji asocijativni niz $HTTP_GET_VARS, a u novim verzijama $_GET koji sadrži podatke.





Izgradnja Web aplikacija - FOI 69

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Prijenos podataka iz formulara - GET / 1. $vr) { echo "$k=$vr
\n"; } ?>

Primjer29 – Prijenos podataka metodom GET Izgradnja Web aplikacija - FOI 70

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Prijenos podataka iz formulara - POST Za prijenos podataka iz formulara koristi se standardni ulaz. Skripta čita podatke sa standardnog ulaza i puni varijable (obično tip hash) podacima iz formulara. Sigurnija metoda slanja podataka od GET.





Izgradnja Web aplikacija - FOI 71

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Prijenos podataka iz formulara - POST / 1. WWW poslužitelj provodi određeno pretvaranje nekih znakova: •alfanumeričke prenosi bez promjene •praznine pratvara u + •ostale znakove pretvara u oblik %HH gdje je HH ASCII kod znaka u bazi 16. To znači da CGI skripta treba provesti vraćanje u izvorni oblik. U PHP-u postoji asocijativni niz $HTTP_POST_VARS, a u novim verzijama $_POST koji sadrži podatke.

Izgradnja Web aplikacija - FOI 72

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Prijenos podataka iz formulara - POST / 2. $vr) { echo "$k=$vr
\n"; } ?>

Primjer30 – Prijenos podataka metodom POST Izgradnja Web aplikacija - FOI 73

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Prijenos podataka iz formulara Prijenos podataka iz formulara različit je za pojedine vrste kontrole kao što su checkbox, radio button i sl. kada se koriste u grupi.

Odaberi omiljeni programski jezik:
C/C++
Basic
PHP
Java
C#



Primjer30_1 – Prijenos podataka iz formulara Izgradnja Web aplikacija - FOI 74

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Prijenos podataka iz formulara Prijenos podataka iz formulara različit je za pojedine vrste kontrole kao što su checkbox, radio button i sl. kada se koriste u grupi.

Odaberi omiljeni programski jezik:
C/C++
Basic
PHP
Java
C#



Primjer30_2 – Prijenos podataka iz formulara Izgradnja Web aplikacija - FOI 75

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Prijenos podataka iz formulara Prijenos podataka iz formulara različit je za pojedine vrste kontrole kao što su checkbox, radio button i sl. kada se koriste u grupi.

Odaberi omiljeni programski jezik:
C/C++
Basic
PHP
Java
C#



Primjer30_3 – Prijenos podataka iz formulara Izgradnja Web aplikacija - FOI 76

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Prijenos podataka iz formulara Prijenos podataka iz formulara različit je za pojedine vrste kontrole kao što su checkbox, radio button i sl. kada se koriste u grupi.

Odaberi omiljeni programski jezik:
C/C++
Basic
PHP
Java
C#



Primjer30_4 – Prijenos podataka iz formulara Izgradnja Web aplikacija - FOI 77

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Rad s datotekama Aplikacijska logika najčešče traži da WWW poslužitelj pohranjuje i čita podatke iz datoteke (razne postavke npr. vezanu uz pristup do baze podataka, aktivnost pojedinih modula i sl.). Danas se sve više koristi zapis u XML formatu. Postoje glavne funkcije: •fopen - otvaranje •fclose - zatvaranje •fread - čitanje • file - učitavanje u polje • fwrite - upisivanje •flock - zaključavanje •fseek - pozicioniranje

Izgradnja Web aplikacija - FOI 78

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Otvaranje datoteke Datoteka može biti otvorena za jednu ili više vrsta operacija: $fp = fopen ("podaci.txt", "r");

- čitanje

$fp = fopen ("podaci.txt", "w+");

- upisivanje tj. prepisivanje

$fp = fopen ("podaci.txt", “a+");

-dodavanje na kraj

Izgradnja Web aplikacija - FOI 79

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Otvaranje datoteke / 1.





Izgradnja Web aplikacija - FOI 80

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Otvaranje datoteke / 2.

Primjer31 – Otvaranje datoteke Izgradnja Web aplikacija - FOI 81

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Čitanje datoteke Datoteka se može čitati: •zapis po zapis ili •cijela. čitanje svih znakova u string $contents

Primjer32 – Čitanje datoteke Izgradnja Web aplikacija - FOI 82

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Čitanje datoteke / 1. Datoteka se može čitati: •zapis po zapis ili •cijela.

čitanje zapisa u polje $fcontents

Line $line_num: " . htmlspecialchars ($line) . "
\n"; } ?>

Primjer33 – Čitanje datoteke Izgradnja Web aplikacija - FOI 83

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Upisivanje u datoteku

Primjer31 – Upisivanje u datoteku Izgradnja Web aplikacija - FOI 84

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Zatvaranje datoteke

Izgradnja Web aplikacija - FOI 85

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Zaključavanje datoteke Simultano korištenje datototeke od strane 2 ili više skripata koji može dovesti do nekonzistentnosti podataka datoteke ukoliko se ne ograniči pristup samo jednoj skripti u datom vremenu. To znači da ostale skripte trebaju čekati dok prva ne završi svoj rad s datotekom. Zaključavanje datoteke biti će pouzdano rješenje samo u slučaju kada sve skripte traže zaključavanje datoteke. Ukoliko jedna skripta ne koristi taj princip nego direktno pristupa podacima, cijeli koncept gubi smisao jer u slučaju paralelnog rada neće postojati mehanizam međusobnog isključivanja. Ovisi o operacijskom sustavu! Funkcija zaključavanje ima sintaksu: flock(broj_veze_datoteke, operacija); Uglavnom se koriste dvije operacije zaključavanja: •ekskluzivno zaključavanje (LOCK_EX ) •otključavanje ranijeg zaključavanja (LOCK_UN )

Izgradnja Web aplikacija - FOI 86

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Pozicioniranje u datoteci Kod otvaranja datoteke važeće pozicija datoteke je njen početak. Moguće je realizirati datoteku sa zapisima fiksne duljine kod koje je moguće ažuriranje podataka. Za to je potrebno postaviti važeću poziciju u datoteci na početak zapisa koji se ažurira i nakon toga provesti zapis podataka. Drugi slučaj kod kojeg je potrebno primjeniti pozicioniranje u datoteci odnosi se na zaključavanje datoteke. Kod poziva zaključavanja datoteke može se čekati dok druga skripta ne završi svoj posao, a ona može promijeniti neke podatke u datoteci kao npr. dodati novi zapis(e). Ako se dodaje na kraj datoteke potrebno je postaviti važeću poziciju u datoteci na njen novi kraj. Ovisi o operacijskom sustavu! Funkcija pozicioniranja u datoteci ima sintaksu: fseek (broj_veze_datoteke, pomak, [, odakle]); Pomak je broj bajtova, a odakle može biti: SEEK_SET – početak datoteke SEEK_CUR - važeća pozicija u datoteci SEEK_END - kraj datoteke. Izgradnja Web aplikacija - FOI 87

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Obrada pogreške u radu s datotekama Rad s datotekama temelji se na određenim pretpostavkama koje mogu biti ispunjenje, ali i ne. Različiti utjecaji uvjetuju da pretpostavke mogu biti pogrešne zbog čega bi izvršavanje skripte krenulo u neželjenom smjeru. Kao primjer može poslužiti otvaranje datoteke za čitanje koja ne postoji ili nisu ispravno podešena prava za tu operaciju, otvaranje datoteke za upisivanje kada nije dozvoljeno upisivanje, izvršavanje operacije koja nije u skladu s modom otvaranja datoteke i sl. PHP u slučaju pojavljivanja pogreške u nekoj liniji nastavlja sa sljedećom kao da nije došlo do pogreške. Potrebno je uključiti obradu pogrešaka kod većine U/I operacija s datotekama. Za obradu pogreške U/I funkcija povezuje se operatorom or s funkcijom za obradu pogreške. Kada U/I funkcija završi s kodom neuspješnosti tada se aktivira funkcija za obradu pogreške.

U/I_funkcija(...) or funkcija_za_obradu_pogreske(...);

Izgradnja Web aplikacija - FOI 88

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Obrada pogreške / 1. Line $line_num: " . htmlspecialchars ($line) . "
\n"; } function pogreska($poruka) { echo "$poruka \n"; exit; } ?>

Primjer34 – Obrada pogreške Izgradnja Web aplikacija - FOI 89

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Razina izvještaja o pogreškama / 1. int error_reporting ( [int level] ) Funkcijom error_reporting može se postaviti ili utvrditi važeća razina izvještavanja o pogreškama u skriptama. Pretpostavljena razina izvještavanja postavljena je varijablom error_reporting u konfiguracijskoj datoteci PHP-a – php.ini

Izgradnja Web aplikacija - FOI 90

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Razina izvještaja o pogreškama / 2. "; switch ($vrsta) { case 0: $razina = E_ALL; break; case 1: $razina = E_ALL ^ E_NOTICE; break; case 2: $razina = E_ERROR | E_WARNING | E_PARSE | E_NOTICE; break;

Izgradnja Web aplikacija - FOI 91

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Razina izvještaja o pogreškama / 3. case 3: $razina = E_ERROR | E_WARNING | E_PARSE; break; case 4: $razina = E_ERROR | E_WARNING; break; case 5: $razina = E_ERROR; break; default: $razina = 0; break; } error_reporting($razina); echo "Postavljena razina: " . error_reporting() . "
"; echo $varijabla; echo 3/0; ?>

Primjer01 – Razina izvještaja o pogreškama Izgradnja Web aplikacija - FOI 92

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Rukovanje s pogreškama / 1. mixed set_error_handler ( callback error_handler [, int error_types] ) Funkcijom set_error_handler može se preusmjeriti izvržavanje skripte na definiranu funkciju za rukovanje s pogreškama u slučaju određene razine pogreške u skriptama. Pretpostavljena razina izvještavanja postavljena je varijablom error_reporting u konfiguracijskoj datoteci PHP-a – php.ini

Izgradnja Web aplikacija - FOI 93

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Rukovanje s pogreškama / 2. Funkcija za rukovanje s pogreškama ima sljedeći format: handler ( int errno, string errstr [, string errfile [, int errline [, array errcontext]]] ) errno – razina pogreška koja se desila errstr – poruka pogreške errfile – naziv datoteke u kojoj se desila pogreška errline – broj linije u kojoj se desila pogreška errcontext – vektor varijabli koje postoje u pogledu dešavanja pogreške. NE smiju se mijenjati!

Izgradnja Web aplikacija - FOI 94

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Rukovanje s pogreškama / 3. function obradaPogresaka($errno, $errstr, $errfile, $errline, $errcontext) { echo "Desila se pogreška kod izvršavanja!
"; echo "Datoteka: $errfile
"; echo "Linija: $errline
"; echo "Opis: $errstr
"; echo "Kod: $errno
"; exit; } if($_SERVER["REQUEST_METHOD"] != "GET") { echo "Samo za GET metodu!"; exit; } if(! isset($_GET["vrsta"])) { $vrsta = 99; } else { $vrsta = $_GET["vrsta"]; }

Izgradnja Web aplikacija - FOI 95

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Rukovanje s pogreškama / 3. switch ($vrsta) { case 0: $razina = E_ALL; break; case 1: $razina = E_ALL ^ E_NOTICE; break; case 2: $razina = E_ERROR | E_WARNING | E_PARSE | E_NOTICE; break; case 3: $razina = E_ERROR | E_WARNING | E_PARSE; break; case 4: $razina = E_ERROR | E_WARNING; break; case 5: $razina = E_ERROR; break; default: $razina = 0; break; } error_reporting($razina); echo "Postavljena razina: " . error_reporting() . "
";

Izgradnja Web aplikacija - FOI 96

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Rukovanje s pogreškama / 3. set_error_handler(obradaPogresaka);

echo $varijabla; echo 3/0;

Primjer02 – Rukovanje s pogreškama Izgradnja Web aplikacija - FOI 97

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Ignoriranje pogrešaka / 1. Operatorom @ može se ignorirati pogreška u izrazu koji slijedi operator

Primjer03 – Ignoriranje pogrešaka Izgradnja Web aplikacija - FOI 98

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Generiranje pogrešaka / 1. bool trigger_error( string error_msg [, int error_type] ) Funkcijom trigger_error može se generirati pogreška željene poruke i razine te preusmjeriti izvržavanje skripte na postavljenog rukovatelja pogrešaka.

Izgradnja Web aplikacija - FOI 99

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Generiranje pogrešaka / 2. if($_SERVER["REQUEST_METHOD"] != "GET") { echo "Samo za GET metodu!"; exit; } if(! isset($_GET["a"])) { $a = 5; } else { $a = $_GET["a"]; } if(! isset($_GET["b"])) { $b = 1; } else { $b = $_GET["b"]; } if($b == 0) { trigger_error("Djeljenje s nulom!", E_USER_ERROR); } echo "Rezultat: " . $a / $b;

Primjer04 – Generiranje pogrešaka Izgradnja Web aplikacija - FOI 100

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Evidencija pogrešaka / 1. bool error_log ( string message [, int message_type [, string destination [, string extra_headers]]]

Funkcijom error_log može se evidentirati pogreška u dnevniku web poslužitelja, poslati na TCP port ili u datoteku. Vrste: 0 – poruka se šalje PHP sistemskom dnevniku 1 – poruka se šalje kao email na adresu 2 - poruka se šalje na vezu PHP debugera 3 – poruka se dodaje na kraj datoteke

Izgradnja Web aplikacija - FOI 101

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Evidencija pogrešaka / 2. if($_SERVER["REQUEST_METHOD"] != "GET") { echo "Samo za GET metodu!"; exit; } if(! isset($_GET["a"])) { $a = 5; } else { $a = $_GET["a"]; } if(! isset($_GET["b"])) { $b = 1; } else { $b = $_GET["b"]; } if($b == 0) { error_log("Djeljenje s nulom!"); error_log("Djeljenje s nulom!", 3, "dnevnik_pogresaka.txt"); exit; } echo "Rezultat: " . $a / $b

Primjer05 – Evidencija pogrešaka Izgradnja Web aplikacija - FOI 102

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Korištena i dodatna literatura   

   

    

http://www.php.net/ http://www.php.org/ http://perl.about.com/library/phpCR/bl_index.htm?PM=ss14_perl http://linuxdocs.org/HOWTOs/PHP-HOWTO.html http://www.php.net/manual/en/install.apache2.php http://www.thesitewizard.com/archive/phpvscgi.shtml http://www.thesitewizard.com/archive/feedbackphp.shtml http://php.resourceindex.com/Documentation/ http://phpmyadmin.sourceforge.net/ http://www.oreilly.com/catalog/phpckbk/chapter/ch08.pdf http://www.oreilly.com/catalog/progphp/chapter/ch05.html http://www.devshed.com/Server_Side/PHP

Izgradnja Web aplikacija - FOI 103

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin

Related Documents

Dragutin Lerman.docx
November 2019 4
Prof
June 2020 19
Prof
November 2019 62

More Documents from ""