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