1.kolokvij Flashcards

(142 cards)

1
Q

Komponente svetovnega spleta

A
  1. Naslovi URL / URI
  2. Protokol DNS
  3. Odjemalci
  4. Strežniki
  5. Protokol HTTP
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

primer osnovnega spletnega naslova in primer dinamičnega spletnega naslova-označi vse dele

A

protokol
spletni naslov (naziv gostitelja, naziv domene)
absolutna pot (pot do imenika, dokument)

parametri

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Protokol DNS

A

Prevaja domene v IP naslove

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

kateri spletni brskalnik je najbolj uporabljen

A

chrome

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Kaj so spletni brskalniki

A

Programska oprema na strani uporabnika, ki uporabniku omogoča dostop do spletnih strani, njihovih vsebin in aplikacij.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

vrste spletnih brskalnikov

A

grafični (prevladujoči)
tekstovni(Lynx, W3m)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Sodobni spletni brskalniki:

A

 DuckDuckGo
 Google Chrome
 MS Edge
 Mozilla Firefox
 Brave
 Wave Browser
 Opera
 Vivaldi
 Apple Safari
 Tor

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Kako deluje spletni brskalnik

A
  1. vpišemo URL naslov ali kliknemo na povezavo v brskalniku
  2. brskalnik pošlje http zahtevo (http zahteva—index.html)
  3. server poišče zahtevano stran (vsebina serverja: index.html, slika.gif) (če stran na serverju ne obstaja, vrne obvestilo), server pošlje v brskalnik zahtevano stran - HTTP odgovor
  4. brskalnik (parsira) preveri, če vsebuje dokument slike, se za vsako od njih ponovno poveže s serverjem
  5. server vrne slike slika.gif in stran se pokaže v oknu brskalnika
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

težave s spletnimi brskalniki

A

1-nove različice brskalnikov
Nove različice imajo dodane podpore za nove funkcije, starejše pa jih ne podpirajo, zato bo pri njih stran prikazana slabše, drugače

2-različni spletni brskalniki imajo različne mehanizme upodabljanja (browser engine) in nastanejo razlike oziroma odstopanja pri prikazu spletnih strani
1 Blink (Google Chrome, MS Edge, Brave, Vivaldi, Samsung Internet, Opera)
2 WebKit (Apple Safari)
3 Gecko(Mozilla Firefox)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Različne platforme

A

Z različnimi platformami so mišljeni različni operacijski sistemi in naprave, na katerih uporabniki dostopajo do spletnih strani. Operacijske sisteme (npr. Windows, macOS, Linux, Android, iOS)
Vrste naprav (npr. namizni računalniki, prenosniki, tablice, pametni telefoni)

 Težave:
Prikaz pisav (manjkajoča pisava, prikaz pisave)
Prikaz elementov obrazca (različni prikazi drsnikov, “drop-down” seznamov, ipd.)
Vtičniki (plug-ins)

 Razreševanje težav:
dovolite določene razlike
uporaba „standardnih“ pisav in ponudba alternativ

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Spletni strežniki

A

Program, ki ustvarja in prenaša odgovore odjemalcem spletnih virov. Omogoča, da uporabniki prek brskalnika dostopajo do spletnih strani
Delovanje (koraki):
 Obdelava (parsing) poslanega sporočila (zahteve)
 Preverjanje avtorizacije zahteve
 Povezava URL naslova z ustrezno datoteko
 Ustvarjanje odgovora
 Prenos odgovora odjemalcu

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Naloge spletnega strežnika:

A

 Sprejemanje HTTP zahtev iz omrežja
 Ustvarjanje HTTP odgovor za odjemalce
 Beleženje (logging)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Dva tipa odgovorov

Prevajanje poti

A

Dva tipa odgovorov
 Statični
 Dinamični
Prevajanje poti
 Pretvori komponente URL naslova v ustrezen vir v lokalnem datotečnem sistemu

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Najbolj razširjeni spletni strežniki

A

 Nginx /engine X/
 Apache HTTP Server
 Cloudflare server
 Microsoft Internet Information Services (IIS)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Osnove delovanja

A

Odjemalci in strežniki komunicirajo prek protokola HTTP (HyperText Transfer Protocol)
 Odjemalec in strežnik vzpostavita povezavo TCP
 Stranka zahteva vsebino
 Strežnik se odzove z zahtevano vsebino
 Odjemalec in strežnik zapreta povezavo (sčasoma)
Trenutna različica je HTTP/3
 RFC 9110, junij 2022.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

3 protokoli:

A

HTTP
Spletna vsebina (HTML,
CSS, JS, slike, videi,…)

TCP
Zanesjiv prenos podatkov med
dvema računalnikoma

IP
Način pošiljanja podatkov po
omrežju.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Spletna vsebina

A

Spletni strežniki odjemalcem vračajo vsebino.
 vsebina: zaporedje bajtov s pripadajočo vrsto MIME (Multipurpose Internet Mail Extensions)

Primer vrst podatkov, ki jih MIME omogoča pošiljati:
 besedilo/html Dokument HTML
 text/plain Neoblikovano besedilo
 image/gif Binarna slika, kodirana v formatu GIF
 image/png Binarna slika, kodirana v formatu PNG
 image/jpeg Binarna slika, kodirana v formatu JPEG

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Statična in dinamična vsebina

A

Vsebina, vrnjena v odzivih HTTP, je lahko statična ali dinamična.
 Statična vsebina: vsebina, ki je shranjena v datotekah in se prikliče kot odgovor na zahtevo
HTTP.
 Primeri: Datoteke HTML, slike, zvočni posnetki
 Zahteva določa, katera datoteka z vsebino
 Dinamična vsebina: vsebina, ki je pripravljena sproti kot odgovor na zahtevo HTTP.
 Primer: vsebina, ki jo ustvari program, ki ga strežnik izvaja v imenu odjemalca.
 Zahteva identificira datoteko, ki vsebuje izvršljivo kodo.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Kako naslove URL uporabljajo odjemalci in strežniki?

A

Edinstveno ime za datoteko: URL (Uniform Resource Locator)
Primer URL: http://feri.um.si:80/index.html
Odjemalci za sklepanje uporabljajo predpono (http://feri.um.si:80):
 s katero vrsto (protokolom) strežnika želite vzpostaviti stik (HTTP)
 kje je strežnik (feri.um.si)
 na katerih vratih posluša (80)

Strežniki uporabljajo končnico (/index.html)za:
 določitev, ali gre za zahtevo za statično ali dinamično vsebino.
 Za to ni strogih pravil
 Ena od konvencij: izvršljivi programi se nahajajo v imeniku cgi-bin
 iskanje datotek v datotečnem sistemu:
 Začetni “/” v končnici označuje domači imenik za zahtevano vsebino.
 Minimalna končnica je “/”, ki jo strežnik razširi na nastavljeno privzeto ime datoteke (običajno
index.html).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

HyperText Transfer Protocol (HTTP)

A

 osnova svetovnega spleta
 protokol aplikacijskega sloja
 Deluje po principu
zahteva/odgovor
 HTTP je protokol brez stanja, ker
deluje v načinu zahteva/odgovor

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Delovanje zahteva/odgovor

A

nariši

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

HTTP: Protokol brez stanja (stateless protocol)

A

 Neodvisne transakcije
 ne obstaja avtomatski način vzdrževanja seje

 Posledica:
 Ni mogoče slediti uporabniku
To pomeni, da HTTP ne ohranja informacij o prejšnjih interakcijah med odjemalcem (npr. brskalnikom) in strežnikom. Vsaka HTTP zahteva in odgovor sta neodvisna transakcija – to pomeni, da strežnik ne ve, kaj se je zgodilo v prejšnjih zahtevah, in ne hrani nobenih informacij o prejšnjih interakcijah z uporabnikom.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

Zahteve HTTP

A

Zahteva HTTP je vrstica zahteve, ki ji sledi nič ali več glave zahteve.
Vrstica zahteve: <metoda> < uri> <verzija>
 <metoda> je ena od GET, POST, OPTIONS, HEAD, PUT, DELETE ali TRACE.
 <uri> je običajno URL za posrednike, končnica URL za strežnike
 URL je vrsta URI (Uniform Resource Identifier).
 Glej http://www.ietf.org/rfc/rfc2396.txt.
 <version> je različica HTTP zahteve (HTTP/1.1 ali HTTP/2 ali HTTP/3).</version></uri></metoda></verzija></metoda>

Glave zahteve: <naslov>: <podatki>
 strežniku zagotovimo dodatne informacije</podatki></naslov>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

Odzivi HTTP

A

Odziv HTTP je odzivna vrstica, ki ji sledi nič ali več naslovov odziva, po možnosti vsebina, pri čemer
naslove od vsebine ločuje prazna vrstica (“\r\n”).
Odzivna vrstica:

<različica> <kodna> <sporočilo>
 <version> je različica HTTP odgovora
 <kodna> je številčni status
 <status> je ustrezno angleško besedilo
 200 OK Zahteva je bila obdelana brez napak
 301 Premaknjeno Zagotovite nadomestni URL
 404 Ni najdeno Strežnik ni mogel najti datoteke
 Glave odgovora: <naslov>: <podatki>
 Zagotovite dodatne informacije o odzivu
 Vsebina-Type: Vrsta MIME vsebine v telesu odgovora
 Dolžina vsebine: Dolžina vsebine v telesu odgovora

 Standard HTTP zahteva, da se vsaka vrstica besedila konča z "\r\n".
 Prazna vrstica ("\r\n") zaključi glave zahtevka in odgovora
</podatki></naslov></status></kodna></version></sporočilo></kodna></različica>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Različice HTTP
HTTP/1 1996 nova TCP povezava za vsako transakcijo HTTP/1.1 1997 * podpira tudi trajne TCP povezave * več zahtev se lahko pošlje preko iste povezave (pipelining) * podpora za predpomnjenje HTTP/2 2015 * Uporablja TCP * Več zahtev in odgovorov se lahko pošilja preko ene povezave (multiplexing) * Lahko odjemalcu pošlje datoteke, še preden jih odjemalec zahteva (server push) HTTP/3 2022 * Uporablja UDP protocol za prenos in QUIC protokol za zaščito povezave med odjemalcem in strežnikom * omogoča odjemalcem, da določijo prednost zahtev
26
Spletni standardi
 Potrebujemo jih:  Zaradi lažjega razvoja  Enovito prikazovanje v vseh brskalnikih  Lažje indeksiranje in iskanje (s strani iskalnikov)
27
W3C - World Wide Web Consortium
 Organizacija je bila ustanovljena leta 1994  Mednarodni konzorcij za razvoj spleta  Najpomembnejši standardi:  HTML  XHTML  CSS  XML  XSL  DOM
28
IETF - Internet Engineering Task Force
 Razvija in pomovira internetne standarde  Tesno povezana s W3C in ISO/IEC  Upravlja s standardi:  RFC  RFC 2616 - Hypertext Transfer Protocol HTTP/1.1  RFC 826 - Address Resolution Protocol (ARP)  RFC 2131 - Dynamic Host Configuration Protocol (DHCP)  RFC 793 - Transmission Control Protocol (TCP)  RFC 791 - Internet Protocol (IP)  RFC 792 - Internet Control Message Protocol  RFC 1034 - Domain Name System (DNS)  RFC 959 - File Transfer Protocol (FTP)
29
ECMA
 Mednarodna, zasebna, neprofitna organizacija  Ustanovljena leta 1994  Standardi:  ECMA-262 – ECMAScript Language Specification (JavaScript)  ECMA-334 – C# Language Specification  ECMA-376 – Office Open XML (kasneje ISO/IEC 29500)
30
Unicode consortium
 Neprofitna organizacija, ki nadzoruje razvoj Unicodea  Cilj je nadomestiti trenutne standarde (npr. ISO8859) s standardom Unicode Transformation Format (UTF)  Znani standardi:  UTF-8  UTF-16
31
Statične spletne strani
Temeljijo na jezikih HTML in CSS:  HTML  CSS Značilnosti:  Malo interaktivnosti  Težje vzdrževanje  Redko spreminjajoča se vsebina  “klasičen” splet manjše spletne strani, kot so predstavitvene strani podjetij
32
Dinamične spletne strani
Dinamika:  Na strani odjemalca (brskalnika)  Na strežniški strani (spletni strežnik) Značilnosti:  Dinamična gradnja strani  Urejanje vsebine  Pogosto spreminjanje vsebine  Interaktivnost  Splet 2.0 PHP, podatkovna baza- MySQL prijava, komentarji spletne trgovine, družbena omrežja, forumi
33
Strežniški skriptni jezik
Med najbolj razširjenimi je PHP, Python Strežniški skriptnijezik je program, ki ustvari odgovor Je lahko:  Del spletnegastrežnika  Samostojen Glavne naloge spletnega strežnika: Povezati URL zahtevek z ustrezno vsebino: Spletni strežnik prejme URL zahtevek od uporabnika (npr. zahteva za določeno spletno stran) in ga poveže z ustrezno datoteko ali skripto na strežniku. Posredovati podatke: Spletni strežnik posreduje generirano HTML vsebino, slike, CSS, JavaScript in druge vire odjemalcu, ki je zahtevo poslal. Strežnik tako igra vlogo posrednika med uporabnikom in vsebino na strežniku. Glavne naloge skripte:  Procesirati vhodne podatke  Ustvariti vsebino za odjemalca
34
Strežniška dinamika
Pogostonevidna za uporabnika Nameni:  Povezovanje spletnega strežnika z zalednimistrežniki (backendservers)  Procesiranje podatkov komunikacija:  strežnik –> odjemalec:  “sestavljanje” spletne strani s pomočjo različnih zalednihstrežnikov  odjemalec –> strežnik:  odziv na vnos podatkov s strani uporabnika
35
sestavni deli strežniških skriptnihjezikov:
 jezik  interpreter spletni strežnik posreduje zahtevno interpreterju
36
Strežniški skriptni jeziki
PHP Python JavaScript (NodeJS) Java ASP(X) Ruby (z dodatkom Rails) TypeScript Golang
37
Pripravaokolja
Strežnikin podatkovnabaza:  WAMP  http://www.wampserver.com/en/  XAMPP  https://www.apachefriends.org/  Docker  https://www.docker.com/  Namestitev: Apache, MySQL, PHP in phpMyAdmin Delo s podatkovnobazo:  phpMyAdmin Urejevalnikkode:  Visual Studio CODE
38
PHP
Jezik, ki je bil razvit za splet PHP -HypertextPreprocessor Strežniški skriptni jezik (server-sidescriptinglanguage) Preprost jezik, ki ima korenine v programskih jezikih C in Perl in izgleda precej podobno JavaScriptu PHP uporabniku (brskalniku) posreduje HTML Privzeta končnica datotek .php Spletni strežnik takšne datoteke avtomatsko posreduje PHP procesorju
39
Zakaj PHP?
Brezplačen Deluje na različnih platformah Široko razširjen (~ 80% spletnihstrani)  Dobra podpora Skriva kompleksnost Namenjen izdelavi spletnih rešitev Privečiniponudnikovspletnegagostovanjaje privzet(v nasprotjuz nprNode.js, kjerje potrebnonajtigostovanje, ki je običajnotudidražje)
40
sintaksa
Vsakovrstico oz. ukaz je potrebno zaključiti z podpičjem  Precej pogosta napaka –pozabimo napisati podpičje  Simbol $  pred vsemi spremenljivkami, ki se lahkozačnejos črkoangleškeabecedeali_  Primer PHP kode–del kodeje vključenv spletnostran:

Primer spletne strani

Dodaten odstavek.

41
Spremenljivke in komentarji
Tipi spremenljivk niso določeni: $stevilka = 1; $ime= “Marko”; $polje= array(1,2,3,4,5); Komentarji: // to je komentar # to je komentar /* to je večvrstičnikomentar */
42
Imena spremenljivk
Štiri pravila:  Imena spremenljivk se morajo začeti s črko abecede ali podčrtajem _.  Imena spremenljivk lahko vsebujejo samo znake: a-z, A-Z, 0-9, in_(podčrtaj)–brez šumnikov!  Imena spremenljivk ne smejo vsebovati presledkov. Če je ime spremenljivke sestavljeno in več besed, je najbolje, da besede ločimo s podčrtajem ($uporabnisko_ime).  Imena spremenljivk razlikujejo med malim in velikimi črkami -$uporabnisko_ime ni enako kot $Uporabnisko_ime
43
Izpis
echose uporabljaza izpisvsebine. Čene uporabimooklepaja, je notrilahkoveč parametrov. printje funkcijain se uporabljaza izpisvsebineenespremenljivke print_rje funkcijaza izpisvsebinespremenljivke(predvsempolja)
44
Nizi
Združevanje nizovs simbolom. Narekovajiso lahkoenojnialidvojni. Niziso lahkodolgivečvrstic. \n -> znakza novo vrstico. Ko uporabljamodvojninarekovaj, lahkouporabljamotudi$ znakin ime spremenljivke, nipa priporočljivo. $stevilo= 5; echo'Imate'. $stevilo. ' novih sporočil.’;/echo"Imate $stevilonovih sporočil."; Izpis zgornjega niza: Imate 5 novih sporočil.
45
Posebni znaki
Pazljivost: $text = 'My sister's car is a Ford'; //ni veljaven Pravilno: $text = 'My sister\'s car is a Ford'; //veljaven $text = "My sister's car is a Ford"; //veljaven Enako velja za “in druge rezervirane znake
46
Izpis napak
Ustrezne nastavitve spletnega strežnika Apache-> „Display errors“
47
Operatorji
Matematični operatorji:  +. -. *. /. % (ostanek pri celoštevilčnem deljenju), ++ (povečaj za 1), - (zmanjšaj za 1) Primerjalni operatorji:  ==,===, !=, >, <, >=, <= Logični operatorji:  &&, ||, !, xor == ni enako= (dvojni je primerjalni operator, enojni je prireditveni–določi vrednost spremenljivki) $s == 15 //(?) $s = 15 //(!)
48
Polja
Množica elementov (števila, nizi,…) Polje se pričnejo pri indeksu 0, npr. mostvo[0]za prvi element $mostvo = array(' Marko', 'Andrej', 'Jaka’); $mostvo[] = 'Miha'; $mostvo[] = 'Janez’; echo "Izpis 4. mesta v polju: ", $mostvo[3], "

";
49
Asociativna polja
Sklicevanje na elemente s pomočjo ključnih besed(keywords) $drzava["Slovenija"] = "Ljubljana"; $drzava["Avstrija"] = "Dunaj"; $drzava["ZDA"] = "Washington DC"; $drzava["Francija"] = "Pariz";
50
Polja in uporabne funkcije
 Iskanje elementa v polju in_array($iskan_element, $polje)  Iskanje ključa v asociativnem polju array_key_exists("kljuc", $polje)  Iskanje vrednosti v asociativnem polju array_search("vrednost", $polje); Velikost polja count($polje); Razvrščanje asort($polje); -sortiranjepo vrednostih ksort($polje); -sortiranjepo key-values rsort($polje);-obratnivrstni red, a key-values se ne ohranijo Razbijanje explode(' ', $tekst);
51
Izpis polja
Uporaba funkcije foreach foreach ($drzava AS $izpis) { echo "{$izpis}
"; } Uporaba funkcije print_r(); print_r($drzava);
52
Pogojni stavki, zanke, ..
 If  While  For  Foreach
53
Pogojni stavek IF
200) { $rezerva += 100; $stanje-= 100; echo $stanje; } else { $rezerva += 50; $stanje-= 50; echo $stanje; } ?>
54
Zanka WHILE
1) { $gorivo--; echo $gorivo . "
"; } echo "Nizka raven goriva"; ?>
55
Zanka FOR
"; } ?>
56
Zanka FOREACH
"; ++$j; } ?>
57
Funkcije
Funkcije uporabljamo, ko je potrebnodoločenonalogoopravitivečkratz različnimivhodnimipodatki(npr. izračunpovršinekrogaitd.). Primer funkcije:  Funkcija date() omogoča izpis trenutnega časa in datuma ter formatiranje izpis
58
Vračanje vrednosti -RETURN
Uporabimo stavek RETURN  Ob klicu stavka RETURNse funkcija zaključi
59
Nekaj uporabnih vgrajenih funkcij
invertiranjeniza strrev("emi"); menjava velikost črk strtoupper("juhu!"); kateraPHP instalacijaje nameščena phpinfo();
60
Vključevanje datotek
Stavek include–kakor da bi kopirali eno datoteko v drugo  include(/pot/datoteka.php);  include"/pot/datoteka.php";  Stavek require_once–zagotovi, da se datoteka vključi samo enkrat  require_once(datoteka)
61
Vključevanje datotek
Stavek include–kakor da bi kopirali eno datoteko v drugo  include(/pot/datoteka.php);  include"/pot/datoteka.php";  Stavek require_once–zagotovi, da se datoteka vključi samo enkrat  require_once(datoteka)
62
Doseg spremenljivk
Lokalne spremenljivke  Na voljole v funkciji, v kateriso deklarirane. Globalne spremenljivke  Na voljov celotnemPHP dokumentu. Statične spremenljivke  Na voljov celotnemPHP dokumentu, vendarvrednostmed klicifunkcijaostane nespremenjena. Parametri funkcij
63
Super-globalne spremenljivke
Uporabljajose za dostopdo informacijo trenutnizahtevi, uporabnikuin okolju. $_GET $_POST $_REQUEST $_COOKIE $_ENV $_FILES $_SERVER $_SESSION
64
SUPERGLOBALS -$_GET
 $_GET  Asociativno polje, ki vsebuje podatke o parametrih,prenesenih z metodo GET http://www.primer.com/index.php?ime=marko&id=157 $_GET['ime'] = "marko" $_GET['id'] = "157"
65
SUPERGLOBALS -$_POST
$_POST  Asociativno polje, ki vsebuje podatke o parametrih prenesenih z metodo POST (ni vidno v URL naslovu)
uporabniško ime:
Geslo:
$_POST['upor_ime'] => "marko"; $_POST['geslo'] => "holbl"; $_POST['potrdi'] => "Potrdi!";
66
Posredovanje parametrov: GET vs. POST
GET  Parametri se prenašajo preko URL naslova  Možnost zaznamkov (bookmarking)  Omejitev glede velikost (cca 1024 znakov) POST  Parametri nisi vidno v URL naslovu  Ni možnosti dodajanja zaznamkov  Ni omejitve glede velikost prenesenih podatkov
67
SUPERGLOBALS
$_COOKIE Informacije o piškotkih in pridobivanje piškotkov $_ENV Informacije o okolju izvajanja $_SESSION Informacije o sejah Odsvetovani superglobalnispremenljivki (zaradi varnosti)  $GLOBALS–polje vse superglobals  $_REQUEST–vsebuje GET, POST in COOKIE podatke
68
SUPERGLOBALS -$_SERVER
 $_SERVER  $_SERVER['HTTP_REFERER'] trenuten URL naslov  $_SERVER['REMOTE_ADDR'] IP naslov odjemalca  $_SERVER['REQUEST_URI'] pot URL naslov -http://www.primer.com/blog/apache/index.html je vrednost /blog/apache/index.html  $_SERVER['HTTP_USER_AGENT'] t.i. useragent, ki nudi podatke o OS-u in brskalniku uporabnika
69
Delo z obrazci
Uporaba superglobalnihspremenljivk:  $_GET  $_POST  $_SERVER Obvezno je potrebno validiratiuporabniški vnos
70
Objekti
Omogočajoponovnouporabokode. Omogočajolažjevdrževanjekode Razredi:splošne lastnosti in obnašanje objektov –modeli, načrti, šablone, opisi objektov; Objekti:dejanskiprimer razreda, a s specifičnimi lastnostmi Lastnosti: so atributiobjektov Metode: so kotfunkcije, ki so vezanenaposameznerazrede.
71
Objekti v PHP
Možnosti konstruktorja (__construct) in destruktorja(__destruct)  Ustvarjanje in brisanje objektov Možnostrazširjanjaoz. ponovneuporaberazreda(inheritance) Konstantnespremenljivke(const)  Vrednost je določena ob deklaraciji in se ne more spreminjati v celotnem izvajanju programa.  https://www.php.net/manual/en/class.datetime.php  publicconststringDateTimeInterface::RFC822 = "D, d M y H:i:s O"; UporabaSETerjevin GETerjev
72
Objekti
Dostopnost spremenljivkdo delov objekta(ImeRazreda:$spremenljivka)  Private  so dostopnesamoznotrajrazreda  Public  so dostopneznotrajrazreda, zunajrazredain v izpeljanihrazredih  Protected  So dostopneznotrajrazredain v izpeljanihrazredih
73
Relacijske podatkovne baze Pomembni pojmi
Konceptualno oblikovanje PB  Entitetno-relacijski model (E-R model)
74
SQL
 Data ControlLanguage(DCL)–omogočajo ukaze za pravice, dovoljenja itd.  GRANT, REVOKE  Data definitionlanguage(DDL) –vzpostavitev podatkovne baze  CREATE, ALTER, DROP, TRUNCATE  Data manipulationlanguage(DML) –vstavljanje podatkov, povpraševanja in upravljanje s podatkovno bazo  INSERT, UPDATE, DELETE  Data querylanguage(DQL) –povpraševanja  SELECT  TransactionControlLanguage(TCL) –omogočajo transakcije  COMMIT, ROLLBACK, SAVEPOINT SET TRANSACTION
75
Najbolj razširjeni SUPB
Podatkovna baza je običajno upravljana preko sistema za upravljanje podatkovne baze (SUPB) / database management system (DBMS). MySQL(open source SUPB) ORACLE (multi-model SUPB, NoSQL) Microsoft SQL Server PostgreSQL (open source object-relational SUPB)
76
Konceptualno oblikovanje PB Koraki oblikovanja konceptualnega modelaPB:
1. podatkovnaanalizain zbiranjezahtev, 2. oblikovanjeE-R modela, 3. normalizacija.
77
1. podatkovna analiza in zbiranje zahtev
Opredelitevskupinuporabnikovin področijuporabe Analizaoperativnegaokoljain zahtevprocesiranja Proučitevizvorovinformacijin podatkov Arhiviranje(zakonskipredpisi) Ime in opisentitete Atributiin njihovelastnosti(tipi, mejnevrednosti, uporaba, varnost, pomembnostza ZOS)
78
2. oblikovanje E-R modela
Poskusimo izdelatičimboljrazširjenE-R model. V specifičnihprimerihse uporabljajošedodatnesmerniceza izdelavoE-R modela, s katerimikrčimoin preoblikujemoE-R model do temere, da postaneoptimalenza obravnavanprimer. E-R model vednoizdelamoglede naprimer, kigaobravnavamo. Pritemupoštevamozahtevenaročnika, načineuporabePB idr.
79
Osnovni gradniki E-R modela
Entiteta  je neodvisni podatkovni objekt (fizični, konceptualni) zaključenega organiziranega sistema, ki je po definiciji nosilec podatkov.  Za zapis uporabimo samostalnik.  Primer: oseba, stvar, dogodek.  Lastnosti entitet opisujejo atributi. Ključ (identifikator)#:  Vodilni atribut, ki omogoča identifikacijo posamezne entitete. Konceptualno oblikovanje PB Atribut* / °:  zagotavlja informacije o entitetah in tudi relacijah z opisom njihovih lastnosti. Relacija:  je povezava med dvema ali več entitetami.  Za zapis uporabimo glagol.
80
Osnovni gradniki E-R modela  Kardinalnost (števnost):
 je udeleženost entitete v posamezni relaciji (povezavi med dvema ali več entitetami).  POMEMBNO: Za vsako povezavo ugotavljamo kardinalnost v obe smeri (A->B in B->A)!  Ločimo kardinalnosti:  minimalna kardinalnost (med 0 in 1)– opcijska: če je minimalna kardinalnost v smeri A->B 0.– obvezna: če je kardinalnost v smeri A->B 1.  maksimalna kardinalnost (med 1 in n)  1:1 - ena-proti-ena (one-to-one)  1:M - ena-proti-mnogo (one-to-many)  M:N - mnogo-proti-mnogo (many-to-many)– Kardinalnost M:N je nezaželena, zato jo nadomestimo z dvema novima relacijama kardinalnosti 1:N in N:1 ter novo entiteto.
81
Smernice za izdelavo E-R modela
 Težimo k temu, da je kardinalnost med entiteto in njenimi atributi 1..1! Izjema so npr. ime in priimek osebe v entiteti oseba, datum (prav tako ne dajemo v novo entiteto datuma) ipd.  Tipi, kategorije, področja, vrste niso atributi, temveč jih damo v novo entiteto, ki se imenuje tudi šifrant. Novo entiteto povežemo na prvotno entiteto s povezavo 1...n ali m...n.
82
3. Normalizacija
To je proces, ki zagotavlja, da entitete ne bodo vsebovale redundantnih ali dvoumnih podatkov, ki ne bodo predmet nepravilnosti pri vnosu, brisanju in popravljanju le-teh. Redundanca pomeni podvajanje. Redundanca podatkov pomeni, da so isti podatki shranjeni večkrat. Običajnonormaliziramodo 3. normalneoblike
83
Koraki izdelave E-R modela -ponovitev
 Definiramo namen podatkovne baze,  Poiščemo in organiziramo potrebne informacije,  Oblikovanje E-R modela (Konsistentno poimenovanje (velikost črk in ednina / množina). 1. Definiramo entitete 2. Definiramo razmerja med entitetami 3. Definiramo kardinalnost (minimalna, maksimalna; 1:1, 1:M, M:N) 4. Definiramo primarne ključe (vsaka entiteta ima primarni ključ) 5. Definiramo obvezne in opcijske atribute (razmerje med entiteto in atributom je 1:1)  Normalizacija.  Popravljanje E-R modela. Izdelava E-R modela je subjektivna in je več možnih rešitev za določene scenarije, a upoštevati moramo smernice in zgraditi kvaliteten E-R model.
84
Grafični vmesniki za delo s podatkovno bazo MySQL
Vmesnikiza delo s podatkovnimi bazami SQL MySQLWorkbench phpMyAdmin
85
SQL sintaksa
Stavki se končajo s podpičjem; ne uporabljamo šumnikov in presledkov (če uporabljamo nestandardna imena, uporabimo ` ime in priimek`, a ni priporočljivo in ni po standardu), ne uporabljamo posebnih znakov na začetku besede, VELIKE/male črke za rezerviranebesedenisopomembne(selectfrom=== seLeCT frOM=== SELECT FROM), za imenatabelin atributovpa so (odvisnood nastavitve SUPB), držimo se pravila, da SQL REZERVIRANE BESEDE pišemo z velikimi črkami in jih ne uporabljamo za identifikatorje (čeprav ni prepovedano) –primeri rezerviranih besed: SELECT, CREATE, FROM, WHERE, CHECK, SHOW, VIEW, DROP, RENAME, nizi in podobno so v enojnih narekovajih 'Maribor', lahko so tudi dvoji, a ni po standardu in ne bodo delovali v ostalih RSUPB.
86
SQL –ustvarjanje uporabnikov
Potrebujemo pravice za dodajanje uporabnikov. Ustvarjanje uporabnika in njegovega gesla  CREATE USER'uporabnik'@'lokacija' IDENTIFIEDBY'geslo';  Primer uporabnice anje, ki bo lahko dostopala lokalno ali od koderkoli ali iz določenih IPjev: CREATE USER ' anja'@'localhost' IDENTIFIED BY 'geslo123432'; #dostop samo iz strežnika (lokalen) CREATE USER 'anja'@'%' IDENTIFIED BY 'geslo123432'; #omogočen oddaljen dostop CREATE USER 'anja'@'198.51.100.0/255.255.255.0' IDENTIFIED BY 'geslo123432'; #omogočen dostop iz določenega omrežja / IP naslova Spreminjanje gesla za uporabnika (potrebujemo pravice za urejanje uporabnikov, če želimo spremeniti ostalim uporabnikom geslo):  SET PASSWORD FOR 'anja'@'%' = novo_geslo';  ALTERUSER 'anja'@'%' IDENTIFIED BY 'novo_geslo';
87
SQL –dodajanje pravic uporabnikom
Dodajanje, vpogled in odvzem pravic –določene osebe lahko imajo dostop samo do določenih delov baze oz določenih pravic za upravljanje.  GRANTpravica ONbaza.tabelaTO'uporabnik'@'lokacija';#dodelitev pravic  REVOKEpravica ONbaza.tabelaFROM'uporabnik'@'lokacija'; #odstranitev pravic  SHOW GRANTS FOR 'ime'; #vpogled v pravice uporabnika
88
SQL –pravice
Pravice, ki jihlahkoimauporabnik:  ALL PRIVILEGES #vse pravicenadoločenistopnji(razenGRANT OPTION)  CREATE #ustvarjanje tabelalipodatkovnebaze  DROP #brisanje table alipodatkovnebaze  DELETE #brisanje vrstic  INSERT #vnašanje vrstic  SELECT #branje izpodatkovnebaze  UPDATE #posodabljanje vrstic  GRANT OPTION #dodajanje aliodvzemanjepravicostalimuporabnikom  …
89
SQL –dodajanje pravic uporabnikom
Dodajanje in odvzem polnih pravic („super user“)  GRANTpravica ONbaza.tabelaTO'uporabnik'@'lokacija’;  GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' WITH GRANT OPTION;  REVOKEpravica ONbaza.tabelaFROM'uporabnik'@'lokacija'; Brisanje uporabnika:  DROP USER 'uporabnik'@'localhost';  DROP USER 'uporabnik'@'%’; Ponovnonalaganje“GRANT” tabele  FLUSH PRIVILEGES; #da je takojomogočenasprememba
90
SQL -DDL
Ustvarjanje nove podatkovne baze  CREATE DATABASE ime_baze;  CREATE DATABASEIF NOT EXISTS ime_baze;  IF NOT EXISTS preveri, ali že obstaja podatkovna baza z izbranim imenom.  CREATE DATABASEIF NOT EXISTS ime_bazeCHARACTER SET utf8mb4;  dodajanje nabora znakov podatkovni bazi Brisanje podatkovne baze  DROPDATABASEime_baze;  DROPDATABASEIF EXISTS ime_baze; Pregled obstoječih baz  SHOW DATABASES; Uporaba podatkovne baze  USEime_baze; Ustvarjanje nove tabele (entiteta v E-R modelu) CREATE TABLE ime_tabele( ime_atributa1 podatkovni_tipomejitve, ime_atributa2 podatkovni_tipomejitve, …); Za vsak atribut lahko nastavimo podatkovne tipe in omejitve, npr.: primarni ključ, tuji ključ, indeks omejitve vrednosti, npr. >0, neprazno, unikatno, privzeta vrednost, ...
91
Vpogled v že ustvarjene tabele –katerikoli ukaz:
 SHOW TABLES; DESC ime_tabele; DESCRIBE ime_tabele;  EXPLAIN ime_tabele;  SHOW COLUMNSFROMime_tabele;  SHOW FULL COLUMNSFROMime_tabele;
92
Podatkovni tipi v MySQL
Izberemo primeren podatkovni tip za vsak atribut (stolpec) in določimo vrednosti, ki jih bomo hranili. Lahko so različni za različne SUPB-je, zato preverimo v dokumentaciji, kaj so pravilni podatkovni tipi za naš SUPB. Ločimo:  Numerični podatkovni tipi  Časovni podatkovni tipi  Znakovni podatkovni tipi  Prostorski podatkovni tipi  …
93
 FOREIGN KEY
 Če tabela ni v povezavi z drugo tabelo, tam ni tujega ključa.  Ena tabela ima lahko neomejeno število tujih ključev.  Tuj ključ se pojavi tam, kjer je v E-R modelu M pri povezavi 1:M. Pri kreiranju E-R modela v MySQL Workbenchu, nam orodje samo ustvari tuje ključe, ki jih je potrebno smiselno preimenovati (npr. TK_ime_tabele).  Pri povezavi 1:1 umestimo tuj ključ odvisno od vsebinskega pomena povezave.  Podatkovni tip tujega ključa mora biti enak kot pri primarnem ključu, na katerega se sklicujemo.
94
Omejitve / Constraints
NOT NULL Pomeni, da ne sme vsebovati nobenih praznih (NULL) vrednosti. NULL ni enak vrednosti 0. To je neznana vrednost ob vnosu podatkov. AUTO_INCREMENT Avtomatsko povečuje št. naslednjega vnosa za 1, privzeta vrednost je 1 in se nato ob vsakem novem vnosu poveča.  Lahko uporabimo samo ob atributih z podatkovnim tipom INT in hkrati morajo biti tudi ali PRIMARY KEY, FOREIGN KEY ali UNIQUE.
95
Brisanje podatkov in tabel
Brisanje vsebine tabele  TRUNCATE TABLE ime_tabele;  Izbriše vse podatke, ki se nahajajo v tabeli, ohrani pa se struktura tabele. Brisanje tabele DROP TABLE ime_tabele; DROP TABLE IF EXISTS ime_tabele;  Izbriše celotno tabelo. Pri brisanju tabele moramo biti pozorni na vrstni red brisanja tabel. Pri tujih ključih imamo namreč omejitve (CASCADE, RESTRICT itd.) in če jih brišemo v napačnem vrstnem redu, se ukazi ne izvedejo.
96
Tuji ključi – omejitve pri brisanju (ON DELETE) in posodabljanju (ON UPDATE)
 Za boljšo celovitost, imamo več možnosti za definicije tujega ključa ob brisanju ali posodabljanju:  RESTRICT = vedno veljavna omejitev  Preprečuje brisanje in posodabljanje vrstic, ki so povezane preko tujega ključa z drugimi tabelami.  Primer: Ne moremo kar izbrisati predmeta, če v drugi tabeli kažemo s tujim ključem na ta predmet. Najprej izbrišemo vrstice, ki kažejo na predmet, nato še predmet.  CASCADE= veriženje učinka  Avtomatsko brisanje ali posodabljanje povezanih vrstic tudi v drugih, povezanih tabelah.  Primer: Če bi želeli izbrisati predmet, v katerega je nekdo vpisan, bi izbrisalo tudi vrstico v vpisu, kjer je vpisan predmet. Najprej bi izbrisalo predmet, nato vpis.  SET NULL = prevzem vrednosti NULL  Spremenimo vrednost tujega ključa v null ob brisanju ali posodabljanju.  Primer: Izbrišemo predmet, vseeno pa ostane v vpisu in se tuj ključ spremeni v NULL (vendar mora tuj ključ omogočati vnos NULL za stolpec).  NO ACTION= brez učinka  Enako kot RESTRICT v MySQL, ki je tudi privzeta vrednost.  SET DEFAULT = prevzem privzete vrednosti  Za atribut, ki je tuj ključ, moramo imeti nastavljeno privzeto vrednost, ki se prevzame ob brisanju ali posodabljanju vrstice.  Primer: Izbrišemo predmet in se na mesto, ki je kazalo na ta predmet, spremeni vrednost v nastavljeno privzeto vrednost za tisti tuj ključ.
97
 RESTRICT= vedno veljavna omejitev
 Primer: Želimo izbrisati predmet Podatkovne baze I. Ne moremo ga kar izbrisati, če je na njega bil vpisan nekdo. Zato najprej zbrišemo vnose v Vpis, ki se sklicujejo na predmet Podatkovne baze I, nato pa zbrišemo še predmet.  Enako velja za NO ACTION in če ne definiramo, kaj se zgodi ON DELETE v MySQL. 1. DELETE FROM vpis WHEREID_vpis=1; 2. DELETE FROM vpis WHEREID_vpis=5; 3. DELETE FROM predmet WHEREID_predmet=1; ALTER TABLE vpis ADD CONSTRAINTtk_vpis_predmet FOREIGN KEY (TK_predmet) REFERENCES predmet(id_predmet)ON DELETE RESTRICT;
98
Ustvarjanje nove tabele
SQL -DDL CREATE TABLE vpis ( ID_vpisINT AUTO_INCREMENT PRIMARY KEY, ocena INT, leto_vpisaVARCHAR(60) NOT NULL, TK_studentINT NOT NULL, TK_predmetINT NOT NULL, FOREIGN KEY (TK_student) REFERENCESstudent(id_student)ON DELETE CASCADEON UPDATE CASCADE; FOREIGN KEY (TK_ predmet) REFERENCESpredmet(id_predmet) ON DELETE CASCADEON UPDATE RESTRICT; );
99
Vnašanje podatkov –INSERT INTO
Implicitni vnos Vrednosti morajo biti v enakem vrstnem redu kot so stolpci v tabeli. Ne rabimo navajati vseh stolpcev, ki jim želimo vnesti vrednosti. Primarnemu ključu, ki smo mu dodelili AUTO_INCREMENT, moramo vseeno pripisati vrednost ali dodeliti NULL in se sama vrednost vnese. Če želimo kak stolpec spustiti, moramo vseeno vnesti NULL v tisti stolpec (če je tudi takšna dovoljena omejite stolpca), ne moremo ga preskočiti.  INSERT INTO ime_tabeleVALUES(vrednost1, 'vrednost1a', vrednost1b)  INSERT INTO ime_tabeleVALUES (vrednost1, 'vrednost1a', vrednost1b), (vrednost2, 'vrednost2a', vrednost2b);
100
Vnašanje podatkov –primer
 CREATE TABLE predmet ( ID_predmetINT AUTO_INCREMENT PRIMARY KEY, koda_predmetaVARCHAR(30) NOT NULL, naziv_predmetaVARCHAR(60) NOT NULL , tocke_ECTSINT NOT NULL ); Implicitni vnos  INSERT INTO predmetVALUES (NULL, '62V108', 'Podatkovne baze I', 5), (NULL, '61V013', 'Računalniška omrežja', 5); Ob vpisu števila ne vpisujemo narekovajev, za ostale podatkovni tipe (tekstovne, časovne) pa vpišemo enojne narekovaje.
101
Eksplicitni vnos
Navedemo ime stolpca, v katerega vpisujemo vrednosti. Vrednosti ne rabijo biti v enakem vrstnem redu kot so stolpci v tabeli. Navedemo samo stolpce, ki jim želimo vnesti vrednosti. Primarni ključ, ki smo mu dodelili AUTO_INCREMENT, preskočimo. Če želimo kak stolpec spustiti, ga preskočimo ob vnosu podatkov (če ima možnost vnosa NULL).  INSERT INTO ime_tabele(atribut1, atribut3) VALUES(vrednost1,vrednost1b)  INSERT INTO ime_tabele(atribut2, atribut3) VALUES ('vrednost1a', vrednost1b), ('vrednost2a', vrednost2b); Eksplicitni vnos  INSERT INTOpredmet (koda_predmeta, naziv_predmeta, tocke_ECTS) VALUES ('62V014', 'Arhitekture informacijskih sistemov', 5), ('V035', 'Management kakovosti', 5), ('V274', 'Izvedbeni marketing', 6), ('U0003', 'Rimsko pravo', 8);  INSERTINTOpredmet (naziv_predmeta, koda_predmeta, tocke_ECTS) VALUES ('Kazensko materialno pravo', 'U005', 8);
102
Komentarji v SQL skripti
1. Od #do konca vrstice.  SELECT 1+1; #ta komentar se nadaljuje do konca vrstice 2. Od-- do konca vrstice. V MySQL mora biti takoj za --še vsaj en presledek ali tab, kar sicer ni po SQL standardu.  SELECT 1+1; --ta komentar se nadaljuje do konca vrstice 3. Od/* se začne, konča pa s */ . Ta komentar je lahko več vrstični.  SELECT 1 /*komentar*/+ 1;  SELECT 1+ /* več vrstični komentar */ 1;
103
Brisanje podatkov -primer
Paziti moramo na omejitve, ki so določene tujim ključem in nam v določenih primerih ne dovolijo posodabljati ali brisati podatkov. Pri brisanju in posodabljanju podatkov, se vedno sklicujmo na primarni ključ, da ne pride do brisanja napačnih podatkov. DELETE FROMstudent WHERE ID_student=3;
104
Osnovno povpraševanje
Rezultat povpraševanja bo nova tabela. Osnovna oblika povpraševanja: SELECTA1, A2, … An seznam stolpcev (atributov), ki bodo prikazani FROMT1, T2, …, Tm seznam tabel, iz katerih pridobimo podatke WHEREpogoji pogoji, ki določajo, katere podatke želimo videti
105
SELECT
SELECTA1, A2, … An  Z A1, A2 …, definiramo imena stolpcev, ki jih želimo imeti izpisane iz tabel. Vrstni red izpisa bo enak vrstnemu redu zapisa v SELECT stavku.  Z *izpišemo vse stolpce iz izbranih tabel. SELECT*FROMtabela1 SELECTtabela1.*, atribut_iz_tabele2FROMtabela1, tabela2 WHERE… Vsak stolpec lahko preimenujemo z ASin novim imenom stolpca (npr. Ime AS 'Ime študenta'). SELECTatribut1 AS'Novo ime' FROMtabela1 SELECTA1, A2, … An  Beseda DISTINCTomogoči izbris podvojenih vrstic. Uporablja se takoj za ukazom SELECT. V primeru definiranja več stolpcev hkrati, SUPB išče vse različne kombinacije vrednosti izbranih stolpcev. SELECTDISTINCTatribut1, atribut2 FROMtabela1  Vsebuje lahko tudi agregatne funkcije (MIN, MAX, SUM, AVG, COUNT) SELECTatribut 1, SUM(atribut2) AS'seštevek' FROMtabela1 WHEREpogoj GROUP BY tabela1.atribut3;
106
FROM
FROMT1, T2, …, Tm  T1, T2,... je seznam tabel, iz katerih pridobimo podatke.  Uporabimo lahko krajše poimenovanje (npr. tabela T) in potem kratico uporabljamo v celem stavku. To je predvsem uporabno, ko imamo dolga imena tabel, ali pa ko izpisujemo pare iz iste tabele.  Z JOINoperatorji lahko združujemo tabele v odseku FROM.  Lahko vsebuje tudi gnezden stavek (SELECT… ) ASime.
107
WHEREpogoji
 Pogoje definiramo s pomočjo stolpca, pri katerem preverjamo pogoj, nato vključimo primerjalne funkcije ali operatorje in vrednost, s katero določimo povpraševanje.  Uporabljamo lahko primerjalne funkcije in operatorje  >, >=, <, <>, !=, <=, =  BETWEEN ... AND ..., GREATEST(), IS, IS NOT, IS NOT NULL, IS NULL, LIKE, NOT BETWEEN ... AND ..., NOT LIKE SELECT* FROMtabela WHEREatribut >vrednost1 AND atribut2 BETWEENvrednost2ANDvrednost3;
108
WHEREpogoji
 Omogoča uporabo gnezdenih stavkov z operacijami nad množicami.  UNION, INTERSECT, EXCEPT SELECT* FROMtabela UNION SELECT* FROMtabela2;  IN, ANY, ALL, EXISTS SELECT* FROMtabela WHEREatribut IN (SELECTatribut1 FROMtabela2);
109
Primerjalni operator LIKE / NOT LIKE 19/%'
 WHERE atribut LIKE vrednost1  Vključimo lahko % in _, ki predstavljata nadomeščanje poljubnih znakov. Lahko ju uporabimo večkrat v enem nizu.    % predstavlja nadomeščanje več poljubnih znakov, _ pa natanko en poljubni znak. Primeri: %A%, %A, A%, _A, A_, __A, _A_, %A_,… Lahko uporabimo tudi NOT LIKE vrednost1 SELECT ocena, leto_vpisa FROMvpis WHERE leto_vpisa LIKE '%19/20%'; / LIKE '%19/2020' / LIKE '_0
110
MVC –Model View Controller
 Arhitekturnivzorec, ki aplikacijorazdelinatri glavne logičnekomponente:  Model (podatki)  View (predstavitevpodatkov)  Controller (možgani/ logika aplikacije)  Vsakaarhitekturna komponentaje zgrajenaza obvladovanjeposebnih razvojnihvidikovaplikacije.  Poslovnologikoin predstavitvenislojločujedrug od drugega.
111
PHP in MySQL
Uporaba MySQLv kombinaciji s PHP-jem: 1. Povezava na MySQLstrežnik 2. Izbira ustrezne baze 3. Konstruiranje SQL povpraševanja 4. Izvedba SQL povpraševanja 5. Pridobivanje rezultatov in prikaz na spletni strani 6. Ponovitev korakov 3 do 5 dokler nismo pridobili vseh želenih podatkov 7. Prekinitev povezave z MySQLstrežnikom
112
RazširitvePHP za povezavoz MySQLPB
 MySQLi–MySQL improved  Objektnousmerjenpristop  Lažjiza začetnike  PodpiranaslednjiPB: PDO –Portable Data Objects  Objektnousmerjenpristop  Novejši  PodpiranaslednjePB: Oba podpiratapripravljenestavkeoz. parametričnovezavo(povezanoz varnostjo)
113
MySQLi
Prednosti:  Lahkouporablja t.i. „prepared statements“, kar prinaša:  Bolj varen način prenosa podatkov,  Preprečuje napade tipa SQL injection  Zraven podpore „preparedstatements“ nudi tudi podporo transakcijam in več izrazom hkrati $db= newmysqli($db_hostname, $db_username, $db_password, $db_database);
114
PreparedStatements/ parameteriziranSQL
Izboljšanazmogljivost: Pripravljenistavkilahkoizboljšajozmogljivost, saj zmanjšajokoličinopregledovanjain sestavljanja, ki ga mora opravitipodatkovna baza. Manjšetveganjeza SQL injection (vrivanje): Pripravljenistavkipomagajopri zaščitipred napadiz vrivanjemSQLa, sajločijostrukturopoizvedbeod podatkovnihvrednosti. Lažjebranjein vzdrževanje:Zaradiločitvelogikepoizvedbeod podatkovnih vrednostije lahkokodaboljberljivain jo je lažjevzdrževati. PDO::prepare()metoda PDO::execute() metoda
115
Vstavljanje –PreparedStatements/ parameteriziranSQL
// ni pripravljenih vsebnikov – možnost SQL vrivanja $STH= $DBH‐>("INSERT INTOfolks (name, addr, city) values($name, $addr, $city)"); // neimenovani vsebniki $STH= $DBH‐>("INSERT INTOfolks (name, addr, city) values(?, ?, ?); //imenovani vsebniki $STH=$DBH‐>("INSERT INTO folks(name, addr, city) value(:name, :addr, :city)");
116
Vstavljanje –„neimenovani vsebniki“
//dodelimo spremenljivke vsebnikom (indeks 1‐3) $STH‐>bindParam(1, $name); $STH‐>bindParam(2, $addr); $STH‐>bindParam(3, $city); //vstavljanje vrstice $name= "Daniel" $addr= "Naslov 1"; $city= "Maribor"; $STH‐>execute(); // druga vrstica in drugačne vrednost $name= "Miha" $addr= "Smetanova 17"; $city= "Celje"; $STH‐>execute();
117
Vstavljanje –„neimenovani vsebniki“ –krajši način
$data= array('Cathy', '9 Dark and Twisty Road', 'Cardiff'); $STH= $DBH‐>("INSERT INTOfolks (name, addr, city) values(?, ?, ?); $STH‐>execute($data);
118
JSON –JavaScript Object Notation
Odprtstandardniformatza izmenjavopodatkov, ki uporabljabesediloza shranjevanjein prenos podatkovnihobjektov,sestavlnihizparovključ-vrednost. IzpeljanjeizJavaScripta, a ga lahkouporabljamov različnihprogramskihjezikih. Uporabljamoga za pridobivanje, pisanjepodatkovv PB. Načinzapisa:  Ključ:vrednost PHP: funkcijajson_encode();
119
Pri delu z datotekami je potrebno biti pazljiv, saj lahko naredimo veliko škode
 Napačen format  Polnjenje pomnilniškega medija z podatki  Zlonamerni podatki  Napačni podatki
120
Vključevanjedatotek
include();  Čedatotekane obstaja, se bogeneriraloopozoriloin kodase bonadaljevala. require_once();  Čedatotekane obstaja, se bogeneriraloopozoriloin prekinilose boizvajanjekode.
121
Funkcija fread()
Branje odprte datoteke  Konča ali v primeri EOF ali ko pride do določene dolžine –kaj doseže prej Vrne niz ali false, če pride do napake
122
Overjanje/ Authentication
Temelj varnosti Preverjanje identitet entitete (npr. uporabnika) Tipično: uporabniškoime in geslo
123
Overjanje uporabnika
Overjanje s pomočjo PHP kode Overjanje s pomočjo datoteke Overjanje s pomočjo podatkovne baze
124
Večuporabniški / Večbrskalniški
Ko strežnik hkrati komunicira z več različnimi brskalniki, mora strežnik vedeti, „od katerega“ brskalnika je prišla določena zahteva Zahteva/odgovor je bil sprva brez stanja –vsi brskalniki so bili videti enaki
125
Spletni piškotki
Piškotki HTTP (imenovani tudi spletni piškotki, internetni piškotki, piškotki brskalnika ali preprosto piškotki) so majhni bloki podatkov, ki jih spletni strežnik ustvari med brskanjem po spletnem mestu, spletni brskalnik pa jih shrani v uporabnikov računalnik ali drugo napravo. Piškotki se namestijo v napravo, ki se uporablja za dostop do spletnega mesta, in med sejo se lahko v uporabnikovo napravo namesti več kot en piškotek.
126
Vrstepiškotkov
 Začasni ali sejni piškotki (session cookies) »živijo« od trenutka, kouporabnik odpre brskalnik, pa do trenutka, ko sejo konča in zaprebrskalnik. Spletnamestajihuporabljajoza shranjevanjezačasnihinformacij, naprimer elementovv nakupovalnemvozičku, za večjovarnostprispletnembančništvu, itd. Ker so taki piškotkishranjeniza krajšičas, je njihovainvazivnostza zasebnostuporabnikalahkomanjša.  Trajnialishranjenipiškotki(persistent cookies) pa ostanejoshranjeni, tudiko uporabnikzaprebrskalnikin zaključisejo. Spletnamestajihuporabljajonpr. za shranjevanjeinformacijo registraciji, nastavitvahjezika strani, itd., pa tudiza grajenjeprofilovuporabnikovin analiziranjeprometa. Trajnipiškotkilahkov računalnikuostanejovečdni, mesecevalicelolet.  Lastnipiškotki(1st party cookies) so s spletnegamesta, ki siga uporabnikogleduje, in so lahkotrajniali začasni. Spletnamestatepiškotkeuporabljajoza shranjevanjeinformacij, ki jihbodoznovauporabila, ko uporabniknaslednjičobiščeto mesto.  Drugipiškotki(3rd party cookies) izvirajood drugih, partnerskih, spletnihmest(ki naprimer prikazujejo oglasenaizvirnispletenistranialimerijopromet). Tretjestranilahkonata načinzbirajopodatkeo uporabnikihizrazličnihspletnihmestin jihuporabljajoza različnenamene, od oglaševanja, analitikepa do izboljšavesvojihproduktov. Taki piškotkipredstavljajovečjiposegv zasebnostuporabnika.
127
Piškotki v brskalniku
Piškotki so označeni glede na spletne naslove, s katerih prihajajo. Brskalnik pošlje nazaj samo piškotke, ki jih je prvotno nastavil isti spletni strežnik
128
Kaj je piškotek?
HTTP piškotek je podatek, ki ga strežniška stran pošlje spletnemu odjemalcu in je veljaven za določen čas. Za vsako HTTP zahtevo, brskalnik samodejno pošlje piškotek strežniku  Razen, če niso ti onemogočeni So vključeno v HTTP glavo  Niso vidni uporabniku
129
Piškotki
Varnostpiškotkov:  Označba izvora –brskalnik pošlje nazaj piškotke le izvorni spletni strani piškotka  Datum veljavnost –dolgoročni ali kratkoročni –poljubno nastavljivi Omejitev velikosti je na 4KB 50 piškotkov na stran Funkcija setcookie( ) ima različen učinek v brskalnikih  Potrebno je testiranje Piškotek je dostopen šele po osvežitvi strani  Ni mogoče nastaviti in dostopati do piškotkov na isti strani
130
PHP in piškotki
Ustvarjanje piškotkov setcookie('uporabnik', 'geslo', time()+(60 * 60)); setcookie('naziv piskotka', 'vrednost'); setcookie(name, value, expiration,path, host, secure, httponly); Dostop do piškotka $_COOKIE['uporabnik']; Uničenje piškotka setcookie('uporabnik', time()-3600);
131
Piškotki -slabosti
Opozorila: Piškotke lahko nastavimo samo preden pošiljamo kakršenkoli izhod setcookie() funkcija mora biti deklarirana pred značko Ni mogoče nastaviti in dostopati do piškotka na isti strani(vmes moramokliknitirefresh) Piškotke, ki jih nastavimo na določeni strani, lahko uporabljamo samo pri prihodnjih zahtevah
132
Kaj je seja?
 Seja je časovni v okviru, v katerem se vsi dogodki, ki so se zgodili v njem, smatrajo kot „povezani“  Npr. pripadajo isti spletno aplikaciji  Sledenje seji (Session Tracking)  Sledenje uporabniku med stranmi
133
Kako deluje seja?
Dodelitev sessionID prvič ko odjemalec obišče stran  Session ID običajno shranjujemo v piškotkih Session ID strežnik uporablja za identifikacijo odjemalca Za vsak sessionID strežnik ustvari tudi ustrezni prostor za shranjevanje (ang. Storagespace)  Strežniške skripte z istim session ID-jev uporabljajo isti prostor za shranjevanje  V PHP-ju je ta prostor $_SESSION[] Prostor za shranjevanje za določeno sejo je obstojen določen čas ali dokler ga eksplicitno ne izbrišemo
134
Seje
Nov brskalnik –nova seja Ustvarimo sejni piškotek –določen sejni ID se uporablja Uporaba PHP-ja za upravljanje sej SID hranimo:  V sejnih piškotkih  Prenašamo preko URL naslova
135
Na strežniku -Seje
V večini strežniških aplikacij takoj, ko srečamo nov (neoznačen) brskalnik, ustvarimo sejo. Nastavimo sejni piškotek, ki se shrani v brskalnik, kar označuje uporabljeni ID seje –daje temu brskalniku edinstven “oznaka”. Za ustvarjanje in uničenje sej skrbi spletni okvir ali neka pomožna koda, ki jo uporabljamo v svojih aplikacijah.
136
Identifikator seje
Veliko, naključno število, ki ga postavimo v piškotek brskalnika, ko prvič naletimo na brskalnik Ta številka se uporablja za izbiro med številnimi sejami, ki jih ima strežnik kadar koli aktivni. Strežniška programska oprema shranjuje podatke v seji, ki jih želi imeti iz ene zahteve v drugo iz istega brskalnika. Podatki o nakupovalnem vozičku ali prijavi so shranjeni v seji v strežniku.
137
PHP Seje
PHP sejo lahko vzpostavimo/inicializiramo s klicem session_start()preden imamokateri koli izhod(tudinpr. ). Če ima uporabnik nastavljene piškotke, lahko uporabimo polje$_SESSION za shranjevanje podatkov od ene zahteve do druge z določenim brskalnikom. Imamo nekaj podatkov, ki vztrajajo od ene zahteve do druge. Privzeto so shranjeni v začasni mapi na disku.
138
Seje in PHP
 Inicializacija ali vzpostavitev seje - session_start()  Pred katerimkoli izhodom – prva vrstica kode – razen, če ne rešimo drugače  Session_start ustvari sejo ali jo nadaljuje na podlagi sejnega identifikatorja, prejetega preko GET ali POST zahteve. Če sejni piškotek še ne obstaja, ga session_start tudi ustvari.  Hramba na začasni lokaciji na strežniku  Upravljanje podatkov v sejah: $_SESSION[‘variable’] = value;  Niso avtomatsko brisane, ko brišemo sejo $_SESSION = array();
139
Zagon (start) in ponoven zagon (resume) seje
session_start(); PHP samodejno pregleda ali obstaja veljaven sessionid v globalnih super spremenljivkah $_COOKIEali $_GET  Če jih najde,nastavi podatke v seji  Če ne,kreira novo sejo Če karkoli naredimo s sejo se ukaz session_start();proži samodejno
140
Uničenje seje
session_unset();  Ročno uničenje seje, ko se uporabnik odjavi  Druga možnost je session_destroy()  Uničenje seje ne pomeni brisanje piškotkov!
141
Branje podatkov iz seje
Podatke lahko prav tako beremo iz polja$_SESSION  $name = $_SESSION[‘name’];  $age = $_SESSION[‘age’];
142
Seje in URL naslov
SID je mogoče dodati URL naslovom  Težava:  Ko uporabnik zapusti spletno stran se seja izgubi  Uporabnika lahko s pomočjo kopiranja URL naslova svojo sejo deli z drugimi (ali to počne zlonamernež  )