Szerver oldali technol´ ogi´ ak
PHP
Szerver oldali technol´ogi´ak Szerver oldali script nyelvek – PHP
Szerver oldali technol´ ogi´ ak
´ Attekint´ es
Szerver oldali technol´ ogi´ak Szerver oldali script nyelvek – PHP ´ anos jellemz˝ Altal´ ok Formkezel´es ´ Allom´ anykezel´es Cookie (s¨ uti) Szesszi´ ok¨ ovet´es MySQL adatb´ azishozz´ af´er´es
PHP
Szerver oldali technol´ ogi´ ak
´ Attekint´ es
Szerver oldali technol´ ogi´ak Szerver oldali script nyelvek – PHP ´ anos jellemz˝ Altal´ ok Formkezel´es ´ Allom´ anykezel´es Cookie (s¨ uti) Szesszi´ ok¨ ovet´es MySQL adatb´ azishozz´ af´er´es
PHP
Szerver oldali technol´ ogi´ ak
´ Attekint´ es
Szerver oldali technol´ ogi´ak Szerver oldali script nyelvek – PHP ´ anos jellemz˝ Altal´ ok Formkezel´es ´ Allom´ anykezel´es Cookie (s¨ uti) Szesszi´ ok¨ ovet´es MySQL adatb´ azishozz´ af´er´es
PHP
Szerver oldali technol´ ogi´ ak
´ Attekint´ es
Szerver oldali technol´ ogi´ak Szerver oldali script nyelvek – PHP ´ anos jellemz˝ Altal´ ok Formkezel´es ´ Allom´ anykezel´es Cookie (s¨ uti) Szesszi´ ok¨ ovet´es MySQL adatb´ azishozz´ af´er´es
PHP
Szerver oldali technol´ ogi´ ak
´ Attekint´ es
Szerver oldali technol´ ogi´ak Szerver oldali script nyelvek – PHP ´ anos jellemz˝ Altal´ ok Formkezel´es ´ Allom´ anykezel´es Cookie (s¨ uti) Szesszi´ ok¨ ovet´es MySQL adatb´ azishozz´ af´er´es
PHP
Szerver oldali technol´ ogi´ ak
´ Attekint´ es
Szerver oldali technol´ ogi´ak Szerver oldali script nyelvek – PHP ´ anos jellemz˝ Altal´ ok Formkezel´es ´ Allom´ anykezel´es Cookie (s¨ uti) Szesszi´ ok¨ ovet´es MySQL adatb´ azishozz´ af´er´es
PHP
Szerver oldali technol´ ogi´ ak
´ Attekint´ es
Szerver oldali technol´ ogi´ak Szerver oldali script nyelvek – PHP ´ anos jellemz˝ Altal´ ok Formkezel´es ´ Allom´ anykezel´es Cookie (s¨ uti) Szesszi´ ok¨ ovet´es MySQL adatb´ azishozz´ af´er´es
PHP
Szerver oldali technol´ ogi´ ak
´ Attekint´ es
Szerver oldali technol´ ogi´ak Szerver oldali script nyelvek – PHP ´ anos jellemz˝ Altal´ ok Formkezel´es ´ Allom´ anykezel´es Cookie (s¨ uti) Szesszi´ ok¨ ovet´es MySQL adatb´ azishozz´ af´er´es
PHP
Szerver oldali technol´ ogi´ ak
Szerver oldali technol´ogi´ak
CGI (Common Gateway Interface) ColdFusion – HTML kiterjeszt´es, u ´j tag-ekkel, melyek speci´alis m˝ uveletek elv´egz´es´et teszik lehet˝ ov´e (pl. adatb´azishozz´af´er´es) Server Side Includes (SSI) – szerver oldali scriptek lefuttat´as´at teszi lehet˝ov´e a HTML-be ´agyazott parancsok seg´ıts´eg´evel. Server-Side JavaScript (SSJS) – JavaScript kiterjeszt´ese u ´jabb oszt´alyokkal, melyek szerver-oldalon m˝ uk¨ odnek
PHP
Szerver oldali technol´ ogi´ ak
Szerver oldali technol´ogi´ak
PHP Servlet – Sun ´altal 1996-ban bevezetett technol´ ogia Java Server Pages (JSP)– Servlet technol´ ogi´ara ´ep¨ ul Active Server Pages (ASP) – Microsoft ´altal t´amogatott szerver-oldali script-nyelv – f˝ ok´ent Windows-os platformokra Active Server Pages.NET (ASP.NET) – a Microsoft .NET keretrendszer r´esze –u ´j elemeket hoz az ASP-hez k´epest (C# ↔ Java, CLR ↔ JVM)
PHP
Szerver oldali technol´ ogi´ ak
Szerver oldali script nyelvek
´altal´anos jellemz˝ok a script v´egrehajt´as´ara a szerver g´epen ker¨ ul sor a HTML-be be´agyazott script-r˝ ol van sz´ o egy script-´ertelmez˝ o motor dolgozza fel – nincs sz¨ uks´eg ford´ıt´asra pl. PHP ASP (Microsoft)
PHP
Szerver oldali technol´ ogi´ ak
PHP
Dinamikusan l´etrehozott HTML oldal Web-szerver g´ ep Szkript Web HTML o szerver - ´ertelmez˝ motor k´ er´ es
?
6
filerendszer HTML
@
? – Internet
6
www.pl.edu/lap.php
B¨ ong´ esz˝ o
szerverek (adatb´ azis, mail, stb.)
6
lap.php
H´ att´ er
-
HTML old. ?
? megjelen´ıt´es
Figure: HTTP k´er´es web-alkalmaz´ as eset´en
Szerver oldali technol´ ogi´ ak ´ Altal´ anos jellemz˝ ok
PHP
´altal´anos jellemz˝ok: PHP – PHP: Hypertext Preprocessor (eredetileg: Personal Home Page – Rasmus Lerdorf, 1994) jelenleg a legelterjedtebb szerver-oldali script nyelv ny´ılt forr´ask´od´ u, ingyenes (http://www.php.net) be´agyazhat´o a HTML oldalba platformf¨ uggetlen – a legelterjedtebb op. rendszereket t´amogatja (Unix alap´ u op. rendszerek, Microsoft Windows, Mac OS X) leggyakrabban az Apache Web-szerverrel (m´as: Microsoft Internet Information Server, Personal Web Server, Xitami, stb.) PHP ´allom´anyok kierjeszt´ese: “.php”, “.php3”, “.phtml”
PHP
Szerver oldali technol´ ogi´ ak ´ Altal´ anos jellemz˝ ok
PHP
lehet˝os´egek: dinamikus ´es interakt´ıv web-oldalak k´esz´ıt´ese k¨ ul¨onb¨oz˝o adatb´azisok t´amogat´asa (MySQL, Oracle, PostgreSQL, Generic ODBC, stb.) kommunik´aci´o egy´eb szolg´altat´asokat ny´ ujt´ o szerverekkel (pl. LDAP, IMAP, POP3, SMTP) haszn´alhat´o sz¨ovegfeldolgoz´asra, illetve XML ´allom´anyok feldolgoz´as´ara (haszn´alhat´o parancssorb´ ol, illetve kliens oldali alkalmaz´ask´ent)
PHP
Szerver oldali technol´ ogi´ ak ´ Altal´ anos jellemz˝ ok
PHP Kell´ekek Web-szerver: Apache (http://www.scs.ubbcluj.ro/) PHP (Script-´ertelmez˝ o motor: Zend) (adatb´azis-szerver: MySQL) otthoni haszn´alatra Apache – http://httpd.apache.org/ PHP – http://www.php.net/downloads.php install´ al´ as CGI bin´ aris ´ allom´ anyk´ent install´ al´ as Apache modulk´ent
MySQL – http://dev.mysql.com/downloads/ XAMPP (apache+php+mysql egyben): http://www.apachefriends.org/en/xampp-windows.html
PHP
Szerver oldali technol´ ogi´ ak
PHP
´ Altal´ anos jellemz˝ ok
PHP script besz´ur´asa be´agyaz´asa a HTML oldalba (standard): nem standard: <script language="php"> ;
?>; <% %>
include vagy require f¨ uggv´eny seg´ıts´eg´evel a param´eterk´ent megadott ´allom´any tartalm´at egyszer˝ u sz¨ovegk´ent sz´ urj´ak be ha PHP k´odot vagy k´ odr´eszletet szeretn´enk besz´ urni, azt “” tag-ek k¨ oz´e kell ´ırni l´asd: beszur.php, allatnev.inc
Szerver oldali technol´ ogi´ ak ´ Altal´ anos jellemz˝ ok
Szintaxis
h´arom helyr˝ol ¨or¨ok¨olt: C, shell script, Perl script ´altal´anos jellemz˝ok: “enged´ekeny” (hib´akra val´o ´erz´ekenys´ege ´all´ıthat´ o: error reporting(E ALL)) v´altoz´onevek eset´en sz´am´ıt a kis- vagy nagybet˝ u, f¨ uggv´enynevek vagy kulcsszavak eset´en nem
PHP
Szerver oldali technol´ ogi´ ak ´ Altal´ anos jellemz˝ ok
hasonl´os´agok a C szintaxissal: oper´atorok (=,+=, &&,||,!, <,>,==, +,-, ∗, %, stb.) kulcsszavak (if, while, for, switch, break, continue) sz´amos f¨ uggv´enyn´ev (pl. printf, string-, illetve filekezel˝o m˝ uveletek, stb.) kommentek (// vagy /* . . . */) a feh´er karakterek sz´ama nem sz´am´ıt “;”-vel lez´art parancsok Hasonl´os´agok a shell illetve Perl script-el: lehet (Perl vagy) shell script-szer˝ u megjegyz´est is haszn´alni (#) v´altoz´ok neve $ jellel kezd˝ odik (Perl) echo, (egy m´asik alternat´ıva: print("egyetlen argumentum")) id´ez˝ojelek: ” (a k¨oz´e ´ırt v´altoz´ ok ki lesznek ´ert´ekelve), ’ (\\, \’ kiv´etel´evel bet˝ u szerint ´ertelmezi a sz¨ oveget) regul´aris kifejez´esek haszn´alata
PHP
Szerver oldali technol´ ogi´ ak ´ Altal´ anos jellemz˝ ok
v´altoz´ok: t´ıpusuk meghat´aroz´asa dinamikusan t¨ ort´enik, ´ert´ekad´askor (eg´esz: 21, val´os: 3.14, karaktersor: “szoveg”, logikai: TRUE/FALSE, t¨omb, objektum) nem kell deklar´alni nev¨ uk: $ karakterrel kezd˝ odik csak bet˝ ut, sz´amjegyet vagy “ ” karaktert tartalmazhat ($ ut´an nem kezd˝ odhet sz´amjeggyel) kis- vagy nagybet˝ u sz´am´ıt haszn´alhat´o referencia: $valt1 = &$valt2;
PHP
Szerver oldali technol´ ogi´ ak ´ Altal´ anos jellemz˝ ok
v´altoz´ok: alap´ertelmezett kezdeti ´ert´ekek: FALSE, 0, u ¨res string, u ¨res t¨omb (isset() seg´ıts´eg´evel megvizsg´alhat´ o, hogy volt-e m´ar ´ert´ek adva egy v´altoz´onak) f¨ uggv´enyen bel¨ ul minden v´altoz´ o alap´ertelmez´es szerint lok´alis (glob´alis v´altoz´ok el´er´ese f¨ uggv´enyen bel¨ ul: global kulcssz´oval, vagy $GLOBALS[
]) l´asd: globalis.php statikus v´altoz´ok: l´asd statikus valt.php v´altoz´o v´altoz´onevek: l´asd valt valt.php automatikus t´ıpuskonverzi´ o var dump(); print r() – inform´aci´ ot ad a megadott v´altoz´or´ol
PHP
Szerver oldali technol´ ogi´ ak ´ Altal´ anos jellemz˝ ok
T¨omb¨ok
PHP-ban a t¨omb gyakorlatilag egy sorsz´amozott asszociat´ıv t¨omb (map) l´etrehoz´asa: array( kulcs ⇒ ertek, ...) ahol a kulcs lehet numerikus vagy string, az ´ert´ek pedig b´armilyen t´ıpus´ u lehet egyenk´enti ´ert´ekad´assal
PHP
Szerver oldali technol´ ogi´ ak ´ Altal´ anos jellemz˝ ok
T¨omb¨ok t¨orl´es unset() $arr = array(5 => 1, "szam" => 21); elem t¨ orl´ese: unset($arr["szam"]); t¨ omb t¨ orl´ese: unset($arr);
t¨omb elemeinek bej´ar´asa: for – numerikus index eset´en foreach: foreach (tomb as $ertek) ... foreach (tomb as $kulcs => $ertek) ... Pl. lasd: Tomb → tomb.php
PHP
Szerver oldali technol´ ogi´ ak ´ Altal´ anos jellemz˝ ok
F¨uggv´enyek
saj´at f¨ uggv´eny defini´al´asa: felt´eteles f¨ uggv´enyek (csak a felt´etel teljes¨ ul´es´et k¨ ovet˝oen ´erhet˝o el) f¨ uggv´enyen bel¨ ul defini´alt f¨ uggv´eny (csak a k¨ uls˝ o f¨ uggv´eny megh´ıv´as´at k¨ovet˝oen v´alik el´erhet˝ ov´e)
PHP
Szerver oldali technol´ ogi´ ak ´ Altal´ anos jellemz˝ ok
Objektumok haszn´alata (PHP 5) oszt´alydefin´ıci´o (l´asd. egyszerupl.php) var; } } ?> Oszt´alyp´eld´any l´etrehoz´asa, hivatkoz´asok var; $obj->displayVar(); ?>
PHP
Szerver oldali technol´ ogi´ ak ´ Altal´ anos jellemz˝ ok
Objektumok – ¨or¨okl˝od´es
¨or¨okl˝od´es egyszeres ¨or¨okl´es – extends kulcssz´ o az ¨or¨ok¨olt met´odusok ´es adattagok fel¨ ul´ırhat´ oak (kiv´etel: sz¨ ul˝o oszt´alyban final-al deklar´alt met´ odus) fel¨ ul´ırt met´odusra vagy adattagra hivatkozhatunk parent:: seg´ıts´eg´evel amennyiben a gyerek rendelkezik saj´at konstruktorral ( construct f¨ uggv´eny) vagy destruktorral ( destruct f¨ uggv´eny), akkor a sz¨ ul˝o konstruktora/destruktora NEM lesz megh´ıvva automatikusan Pl. l´asd. oroklodes.php
PHP
Szerver oldali technol´ ogi´ ak ´ Altal´ anos jellemz˝ ok
Objektumok
met´odusok/adattagok l´athat´ os´aga public, protected, private egy´eb lehet˝os´egek: absztrakt oszt´aly defini´al´asa (abstract kulcssz´ o) interf´esz (interface, implements kulcsszavak) statikus adattagok/met´odusok l´asd.: egyebek.php
PHP
Szerver oldali technol´ ogi´ ak ´ Altal´ anos jellemz˝ ok
PHP be´ep´ıtett glob´alis v´altoz´ok (superglobals) PHP be´ep´ıtett glob´alis v´altoz´ ok (asszociat´ıv t¨ omb¨ ok): $GLOBALS – az ¨ osszes glob´alis v´altoz´ ot tartalmaz´o t¨omb $ SERVER – a Web-szerver ´altal be´all´ıtott ´ert´ekek, illetve az aktu´alis script-el kapcsolatos ´ert´ekek (’PHP SELF’, ’argv’ – GET, query string, ’SERVER ADDR’, ’REQUEST METHOD’, ’DOCUMENT ROOT’, stb.) $ GET – a (GET met´ odussal k¨ uld¨ ott) k´er´es param´eterek $ POST – (POST met´ odussal k¨ uld¨ ott) v´altoz´ ok $ COOKIE – HTTP-n k¨ uld¨ ott s¨ utik $ FILES – HTTP post met´ odussal felt¨ olt¨ ott ´allom´anyok $ ENV – k¨ornyezeti v´altoz´ ok $ REQUEST – GET, POST, ´es COOKIE v´altoz´ok $ SESSION – az aktu´alis szesszi´ ohoz tartoz´ o v´altoz´ok
PHP
Szerver oldali technol´ ogi´ ak Formkezel´ es
Formkezel´es
az elk¨ uld¨ott k´er´es (submit) param´eterei automatikusan el´erhet˝oek a PHP scriptb˝ol: $ POST, $ GET , vagy $ REQUEST t¨omb¨ok seg´ıts´eg´evel Pl. l´asd: Formpl → form pl.php, form post.php, form get.php
PHP
Szerver oldali technol´ ogi´ ak ´ Allom´ anykezel´ es
Filekezel´es
gyakran haszn´alt f¨ uggv´enyek: fopen, fclose, fwrite, fread, fgets, filesize, feof, file exists, delete, rename, stb. pl. l´asd: Filekezeles → file modosit.php, fwrite.php
PHP
Szerver oldali technol´ ogi´ ak Cookie
S¨uti (cookie) kism´eret˝ u sz¨oveges inform´aci´ o, mely a kliens g´ep´en van t´arolva leggyakrabban a kliens azonos´ıt´as´ara szolg´al cookie l´etrehoz´as: setcookie(nev, ertek, lejar, ut, domenium); a tag el˝ott kell megjelenjen el´erhet˝os´ege a $ COOKIE v´altoz´on kereszt¨ ul s¨ uti t¨orl´es lej´ar´asi id˝opont ´all´ıt´as´aval pl. l´asd: Sutik → cookie set.php, szamlalo.php
PHP
Szerver oldali technol´ ogi´ ak Szesszi´ ok¨ ovet´ es
Szesszi´ok¨ovet´es
Szesszi´o (session): egy konkr´et felhaszn´al´ ora vonatkoz´ o inform´aci´ okat a szesszi´o ban t´aroljuk ideiglenesen az itt t´arolt v´altoz´ ok az eg´esz web-alkalmaz´ason bel¨ ul hozz´af´erhet˝oek egy egyedi azonos´ıt´ o lesz minden egyes felhaszn´al´ohoz hozz´arendelve, ennek alapj´an t¨ ort´enik a felhaszn´al´o beazonos´ıt´asa az azonos´ıt´o s¨ utiben van t´arolva, vagy az URL-en kereszt¨ ul t¨ort´enik a k¨ozvet´ıt´ese
PHP
Szerver oldali technol´ ogi´ ak Szesszi´ ok¨ ovet´ es
Szesszi´ok¨ovet´es szesszi´o ind´ıt´as: ˝ kell szerepeljen a tag ELOTT v´altoz´ok lement´ese a $ SESSION t¨omb elemek´ent: $ SESSION[’nr’]=1; t¨orl´es: v´altoz´o t¨orl´ese: unset($ SESSION[’nr’]) a teljes szesszi´o t¨orl´ese: session destroy(); Pl Szessziokovetes → szessziotovabbitas.php, kov.php; bevasarol.php, adatok a szessziobol.php
PHP
Szerver oldali technol´ ogi´ ak MySQL adatb´ azishozz´ af´ er´ es
MySQL adatb´azishozz´af´er´es
gyakori f¨ uggv´enyek: csatlakoz´as az adatb´azishoz: mysql connect(); adatb´azis kiv´alaszt´asa: mysql select db(); SQL parancs v´egrahajt´asa: mysql query(); egy bejegyz´es lek´er´ese a lek´erdez´es eredm´eny´eb˝ ol: mysql fetch array(); kapcsolat bez´ar´asa: mysql close(); Pl. l´asd: MySQL → 1 lekerdez.php, 2 lekerdez.php, form adat bevitel.php, pl komplex.php
PHP