Web fejlesztés IV. Illés Zoltán ELTE TTK Informatika
[email protected]
E L T E
I n f o r m a ti k a
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)
E L T E
I n f o r m a ti k a
SSI, CGI programeszközei • Tetszőleges programozási nyelv • Shell script
• PHP • (Programozható Hypertext Preprocesszor) E L T E
I n f o r m a ti k a
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…)
E L T E
I n f o r m a ti k a
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
E L T E
I n f o r m a ti k a
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”
• ?>
E L T E
I n f o r m a ti k a
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
E L T E
I n f o r m a ti k a
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…”
E L T E
I n f o r m a ti k a
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”);
E L T E
I n f o r m a ti k a
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]);
E L T E
I n f o r m a ti k a
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
E L T E
I n f o r m a ti k a
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…
E L T E
I n f o r m a ti k a
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
E L T E
I n f o r m a ti k a
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__
E L T E
I n f o r m a ti k a
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 <<
E L T E
I n f o r m a ti k a
Heredoc (<<<) operátor • print <<<END •
Jelentkezési lap rendszergazda továbbképzésre
•
•
Kérem adja meg a jelentkezéshez szükséges adatait!
• END;
E L T E
I n f o r m a ti k a
Elágazások • if (kif) ut; else ut; //mint C-ben
// else utáni if // nem kötelező
• switch, többirányú elágazás
if ($a > $b) { echo "a nagyobb, mint b"; } else { echo "a NEM nagyobb, mint b"; } ?>
– case érték:… // érték szöveg is lehet!
E L T E
break; case ”barack": echo "i most: barack"; break; } ?>
I n f o r m a ti k a
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
E L T E
I n f o r m a ti k a
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)
E L T E
I n f o r m a ti k a
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();
E L T E
I n f o r m a ti k a
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
E L T E
I n f o r m a ti k a
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
E L T E
I n f o r m a ti k a
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
E L T E
I n f o r m a ti k a
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
E L T E
I n f o r m a ti k a
Köszönöm a figyelmet! Illés Zoltán Budapest, Pázmány Péter sétány 1/c
[email protected]
E L T E
I n f o r m a ti k a