Web fejlesztés IV. Illés Zoltán ELTE TTK Informatika zoltan.illes@elte.hu
Ami eddig volt HTML interaktív elemek SSI, CGI jelentése,használata Kliens oldali nyelv Javascript Szerver oldali eszköz Shell script (SSI, CGI)
SSI, CGI programeszközei Tetszőleges programozási nyelv Shell script PHP (Programozható Hypertext Preprocesszor)
PHP http://www.php.net Ingyenes Aktuális verzió: 4.4.5 5.2.1 Linux disztribúciók része RISC OS, SGI, Netware Windows PHP dokumentáció (magyarul is )
PHP Installálás Apache: (httpd.conf bejegyzések) Addtype application/x-http-php.php LoadModule php4_module libexec/libphp4.so AddModule mod_php4.c Windows IIS Phpx-installer.exe IIS-Tulajdonságok-Home Dir. Fül-Configuration App. Mappings:.php c:\php4\php.exe %s %s
PHP használata Használati forma SSI előfeldolgozó CGI válasz generátor.php kiterjesztés Nem kötelező a cgi-bin könyvtárba tenni Nincs főprogram <?php // php számára írt sorok?>
PHP Jellemzői C stílusú utódnyelv Interpretált Kis-, nagybetű különböző Utasítás lezáró: ; (pontosvessző) Megjegyzés: // vagy /*.*/ Referencia használat Objektumorientált
Típusok PHP-ban Skalár Valós, egész, logikai, szöveg, objektum $ jel használata: $a=25; Logikai: $igaz=true; Minden nem 0, NULL, logikai igaz (mint C-ben) $hexa=0xffff; // hexadecimális formátum $s= HF\n ; // string és használat együtt: $i= I m a good boy
Tömbök PHP-ban I. Létrehozás Explicit: $a[0]= alma ; stb. array() elemmel: $b=array( fradi, UTE, MTK ); $c=array( alma => jonatán, szilva => ringló,...) Hozzáad végéhez: $b[]= ETO ; Index 0-tól indul Törlés: unset($b[1]); 1-es index definiálatlan, használata hibát ad If (array_key_exists(1,$a) print( van ); else print( nincs );
Tömbök PHP-ban II. Valójában minden tömb asszociatív(hash) Egy tömbelem bármilyen típusú lehet Többdimenziós, tömbök tömbje Teljes tömb kiírás: print_r($tomb); Elemszám: count($tomb) A string is tömb! $nev= fradi ; print(strlen($nev)); print($a[2]);
Tömbök PHP-ban III. array_push($vektor, alma, körte ); A v tömb végére illeszti az elemeket. $e=array_pop($vektor); A végéről levesz egy elemet Többdimenziós tömbök Mint JavaScriptben, tömbök tömbje Tömboperátorok $a + $b; //tömb egyesítés, mintegy unió!! $a == $b;//egyenlő ha kulcs/értékek azonosak $a === $b // mint előző, de még a sorrend is azonos!=,!== nem egyenlő, nem azonos
Szöveg függvények $a= almafa ; // sok str fv. van print strlen($a);// 6 Is_string($a); // true Chr(65); ord( a ); //A, 97 print substr($a,2,3); //maf split( m, $a); Strtoupper, strtolower,trim Stb
Változók hatásköre Globális, ha függvényen kívül definiált Ez függvényen belül nem látszik automatikusan global $a; // ekkor a $a külső látszik Lokális változó, függvényen belül Statikus változó, függvényen belül static $a=0; // első híváskor inicializálás
Konstansok define(k, Ez konstans ) print(k); TRUE, FALSE, NULL Konstans létezés: if (defined(k)) print( van ); PHP_VERSION, PHP_OS FILE, LINE
Kifejezések, operátorok Mint C-ben, ~ minden kifejezés and, or, xor (megmaradt && és ) Parancs helyettesítés operátor `` $adat=`ls al`; // mint shell scriptben.,.= string operátorok $a= alma. fa ; //összefűzés Ha szükséges, automatikus konverzió $b= 25 alma + 4; // 29 lesz $b <<< heredoc operátor, és nem <<
Heredoc (<<<) operátor print <<<END <p align=center><font size=5>jelentkezési lap rendszergazda továbbképzésre</font></p> <form>.itt van a tartalom </form> <p>kérem adja meg a jelentkezéshez szükséges adatait!</p> END;
Elágazások if (kif) ut; else ut; //mint C-ben elseif endif // else utáni if // nem kötelező switch, többirányú elágazás case érték: // érték szöveg is lehet! break, default cimke endswitch // ez is jó Nem kötelező a break! <?php if ($a > $b) { echo "a nagyobb, mint b"; } else { echo "a NEM nagyobb, mint b"; }?> <?php switch ($i) { case "alma": echo "i most: alma"; break; case körte": echo "i most: körte"; break; case barack": echo "i most: barack"; }?> break;
Ciklusok while (kifejezés) utasítás; do {.} while(feltétel); //amíg igaz for(kif1;kif2;kif3) utasítás; foreach(vektornév as értéknév) utasítás; foreach(vnév as kulcs=>érték) utasítás; Végiglépked egy vektoron
Függvények PHP-ban function osszead($a, $b) { return ($a+$b); } Meghívás: print(osszead(5,6)); Referencia szerinti paraméter function novel(&$a) { $a++;} Lehet paraméternek kezdőértéket adni Változószámú paraméter használható $db=func_num_args(); $i=func_get_arg(0-tól-db-ig) Összetett (több adat) visszaadás: return array($a,$b,$c)
Osztályok Class kulcsszó Egyszeres öröklés, extends kulcsszó Adattag definíció: var $nev; Konstruktor név azonos az osztály nevével Példány definiálás: $elem= new valami(); Függvényhívás: $elem->fv(); Ösfüggvény hívás: Ős::fv(); parent::fv();
Kliens-Szerver kapcsolat HTTP környezeti változók megjelenése $HTTP_SERVER_VARS vagy $_SERVER asszociatív tömb Példa: alma.php, alma.php?a=almafa $_SERVER['PHP_SELF'] megadja a fájlunk nevét, gyakran szerepel a form action paraméterében
Formok kezelése Form változó név php-s skalárként jelenik meg Ha a php.ini-ben register_globals=on-ra van állítva Action paraméter: action HTTP_GET_VARS, HTTP_POST_VARS Asszociatív tömb,a fentiekkel azonos a $_POST, $_GET Irx-en mindkettő él. Példa: masodfok.php <select name=elemek[] size=6 multiple> A $elemek tömbben jelennek meg a kiválasztott listaboxelemek. Több textmezőhöz is rendelhető azonos vektor formájú név
File feltöltés I. $thefile átmeneti változó, a file tartalma $thefile_name a file eredeti neve a küldő gépen $thefile_size a file mérete $thefile_type a file MIME típusa $thefile-t a script végén letörli!!! copy($thefile, file_név_a_szerveren); Ezek a globális változók az IRX-en nincsenek
File feltöltés II. $_FILES tömb, két indexes $_FILES[ nev1 ][ name ], file név $_FILES[ nev1 ][ tmp_name ], ideiglenes file $_FILES[ nev1 ][ type ], állomány típus, application/octet-stream $_FILES[ nev1 ][ size ], méret $_FILES[ nev1 ][ error ], hibakód Másolás: copy($_files["nev1"]["tmp_name"], "./sql/fradi.ka"); Példa: feltolt.php
Köszönöm a figyelmet! Illés Zoltán Budapest, Pázmány Péter sétány 1/c Zoltan.Illes@elte.hu