230 likes | 324 Views
WEB Technológiák. WEB-DB és XML. dr. Kovács László. ME Általános Informatikai Tsz. WEB szerver. Browser URL. PHP szerver. Adatbázis szerver. Séma dokumentum. PHP. A PHP egy szerver oldali script nyelv: HTML alapú template állományba lehet C típusú kód részleteket beágyazni
E N D
WEB Technológiák WEB-DB és XML dr. Kovács László ME Általános Informatikai Tsz.
WEB szerver Browser URL PHP szerver Adatbázis szerver Séma dokumentum PHP A PHP egy szerver oldali script nyelv: HTML alapú template állományba lehet C típusú kód részleteket beágyazni 1994 (Lerdorf) Personal Home PageTools 1997 PHP2 (1%) 1998 PHP3 : Gutmans, Zuraski, újraírt, mai PHP-hoz hasonló (10%) 2000 PHP4 : optimalizált végrehajtó motor (20%) K.L.
PHP PHP előnyei: - hordozhatóság - egyszerű fejlesztési környezet - hordozhatóság - ingyenes (de, van Zend compiler is) - teljesítmény - széles körű adatkapcsolati lehetőségek - gazdag funkcionalitás - objektum alapú Lehet CGI vagy modul működésű is Apache PHP mySQL PHP működhet önállóan is!! K.L.
PHP Installációs lépések letöltés: http://www.php.net fordítási konfigurációs paraméterek (configure): -- enable-track-vars (környezeti adatok lehelyezése tömbbe) -- with-gd (dinamikus képkezelés) -- with-mysql (adatbázisok elérése) -- with-oracle … inicializációs állomány (php.ini): language options (pl. precision = 14, safe_mode = off ) resource limit (pl. max_execution_time = 30, memory_limit = 8388608 ) K.L.
PHP Installációs lépések inicializációs állomány (php.ini) folytatása: error handling (pl. display_errors = on log_errors = off) data handling (pl. track_vars = on auto_append_file= ) paths and directories (pl. doc_root = … extension_dir = ./ upload_max_filesize = 2097152) dynamic extensions (pl. extension=php3_mysql.dll) module settings: minden modulra más paraméterlista [ODBC] uodbc.default_user = … uodbc.max_links = 1 [PostgresSQL] pgsql.allow_persistent = on pgsql.max_links = n) K.L.
PHP Apache konfiguráció (httpd.conf) LoadModule php4_module c:/php/sapi/php4apache.dll Scriptalias /php/ "/php/” AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps Action application/x-httpd-php "/php/php.exe” <Directory "C:/Apache/cgi-bin"> AllowOverride None Options None ExecCgi Order allow,deny Allow from all </Directory> K.L.
PHP URL a híváshoz: http://laszlo.iit.uni-miskolc.hu/p1.php?paraméterek http://laszlo.iit.uni-miskolc.hu/php/p1.php?paraméterek WEB server PHP server SAPI PHP Core Zend Core Extension API DB server K.L.
PHP nyelv elemei A PHP kódok a HTML utasítások között helyezkednek el ...HTML… <?PHP kód?> <?phpPHP kód?> <%PHP kód%> <script language=‘PHP’>PHP kód</script> …HTML... Egy php dokumentumban több script rész is elhelyezkedhet A parancsok lezására: ; Egy PHP parancs több, egymást követő script területre is kiterjedhet <BODY> <?php print (”Hello vilag”); ?> </BODY> K.L.
PHP nyelv elemei megjegyzés beszúrása /* szöveg */ // szöveg #szöveg változók kezelése az azonosító mindig$ jellel kezdődik $a, $alma, $autok[3] dinamikus változókezelés, gyengén típusos változó létrehozása értékadással: $a = 3; -- most a $a egész típusú $a = “alma”; -- most pedig string típust vett fel alapestben a dokumentum feldolgozás végéig él K.L.
PHP nyelv elemei Érdekességek a változók kezelésénél: - a változó neve is lehet változóban: $a = “b”; $$a = “c”; -- a c érték a $b változóba kerül print ($b); -- a c-t kapjuk eredményül - a zárójelen belül csak egy szintű a feloldás $a = “b”; $$a = “c”; print (“$$a“); -- a $b-t szöveget kapjuk eredményül - a dinamikus változó nevet a kapcsos zárójellel lehet elérni $a = “b”; $$a = “c”; print (“${$a}“); -- a c-t kapjuk eredményül - string összefűzés: szöveg1.szöveg2 K.L.
PHP nyelv elemei Érdekességek a változók kezelésénél: - dinamikus azonosító képzés sztring összefűzéssel: $i = “1”; ${”alma”.$i} = 3; - változókra való hivatkozás is előállítható: $v1 = &$v2 $v1 = 3; $v2 = $v1; printf ($v2); $v3 = &$v1; print ($v3); $v2 = 4; print ($v1); $v3 = 4; print ($v1); eredmény: 3 eredmény: 3 eredmény: 3 eredmény: 4 K.L.
PHP nyelv elemei Adattípusok: - integer - double - string - boolean - object - array Típus lekérdező függvény: gettype(változó) Típus beállítása: settype(változó, típus): $v = 3; print (gettype($v)); eredmény integer $v = 3; settype($v,”string”); $v szöveges típusú lesz K.L.
PHP nyelv elemei Operátorok: C jellegű szimbólumok A precedencia hasonló a C-ben megismerttel K.L.
PHP nyelv elemei - konstansok létrehozása: define(”azonosító”,érték) define(”MAXVAL”, 34); - elágazás szerkezete: if (kifejezés) { } else { } - többszörös elágazás: switch (kifejezés) { case érték: break; default: } - egyszerű elágazás: (kifejezés) ? kif1 : kif2; K.L.
PHP nyelv elemei - ciklusok: while (kifejezs) { continue; break; } do { } while(): for(kif1;kif2;kif3) { } foreach($tomb as $valtozo) { $valtozo } ciklus a tömb elemeire K.L.
PHP nyelv elemei függvények: létrehozás: functionfüggvénynév ( $p1, $p2,... ) { törzs return kifejezés; } meghívás: függvénynév(kif1,kif2,...); A függvények a forrás állományban bárhol lehetnek A függvény nevét is meg lehet adni dinamikusan (változóban) $v = “fnev”; $v(2); = fnev(2); K.L.
PHP nyelv elemei <?php function novel($v) { return $v + 1; } ?> HELLO <?php print (novel(1)."\n"); print (csokkent(1)."\n"); ?> MACI <?php function csokkent($v) { return $v - 1; } ?> X-powered-by: PHP 4.0/ Conent-type: text/html HELLO 2 0 MACI > php f.php f.php K.L.
PHP nyelv elemei <?php function novel1($v) { return $v + 1; } function novel2($v) { return $v + 2; } ?> HELLO <?php $n = "novel1"; $m = "n"; print (novel1(1)."\n"); print ($n(1)."\n"); print (${"n"}(1)."\n"); print (${$m}(1)."\n"); ?> MACI paraméterekhez alapértelemzett érték rendelhető: function fnev( $v1 = érték,…) { } cím szerinti paraméter átadás: function fnev( &v1,…) { } K.L.
PHP nyelv elemei Változók hatásköre: a függvényben használt változók alapesetben lokálisak <?php $v1 $v2 $v5 function fnev($p){ $v1 global$v2 static $v3 $v4 } ?> A kinnt létrehozott változók alapesetben nem láthatók a függvényeken belül nem azonos a külsővel A global elérhetővé teszi a kinti változót A static hatásárára megőrződik az érték a fv-ből való kilépés után K.L.
PHP nyelv elemei Tömb kezelés - a tömb is dinamikusan kezelt: - nem kell előre helyet foglalni - különböző indexű elemi lehetnek eltérő tipusúak létrehozása: $tomb[] = e1; $tomb[] = e2; $tomb = array(e1,e2,..); $tomb = array(array(e1,..),array(),..); hivatkozás: $tomb[i] $tomb[i][j]; K.L.
PHP nyelv elemei Asszociatív tömbök: a tömbelemek azonosítása nem index-szel, hanem szöveges értékkel $tomb = array( “id” => ertek,…); $atlagcsap = array( “januar” => 260.6, “februar” => 124.3; … ”evi” => 198.5); elérése: $tomb[”id”] print (“atlagcsapadek = “ . $atlagcsap[“evi”]); K.L.
PHP nyelv elemei Asszociatív tömbök bejárása: foreach($tomb as $vindex => $vérték) { $vindex,…, $vérték } $csapatok = array( array( “nev” => “Zala”, “pont” => 23), array( “nev” => “Buda”, “pont” => 31), array( “nev” => “Borsod”, “pont” => 29)); foreach( $csapatok as $csapat) { foreach( $csapat as $kulcs => $ertek) { print(” $kulcs : $ertek \n”); } print (”----------------\n”); } K.L.
PHP nyelv elemei Tömbkezelő függvények: - két tömb egyesítése: array_merge ($t1, $t2); - tömb mérete: count($t1); - tömb első elem eltávolítás: array_shift($t1); - tömb egy részének kiemelése: array_slice($t1,i1,i2); - tömb rendezése: sort($t1) - asszociatív tömb rendezése: asort($t1) ksort($t1); K.L.