web fejlesztés iv
DESCRIPTION
Web fejlesztés IV. Illés Zoltán ELTE TTK Informatika [email protected]. 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 - PowerPoint PPT PresentationTRANSCRIPT
E L T E I n f o r m a t i k aE L T E I n f o r m a t i k a
Web fejlesztés IV.
Illés Zoltán
ELTE TTK Informatika
E L T E I n f o r m a t i k aE L T E I n f o r m a t i 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 t i k aE L T E I n f o r m a t i 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 t i k aE L T E I n f o r m a t i 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 t i k aE L T E I n f o r m a t i 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 t i k aE L T E I n f o r m a t i 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”• <?php
– // php számára írt sorok• ?>
E L T E I n f o r m a t i k aE L T E I n f o r m a t i 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 t i k aE L T E I n f o r m a t i 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 t i k aE L T E I n f o r m a t i 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 t i k aE L T E I n f o r m a t i 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 t i k aE L T E I n f o r m a t i 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 t i k aE L T E I n f o r m a t i 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 t i k aE L T E I n f o r m a t i 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 t i k aE L T E I n f o r m a t i 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 t i k aE L T E I n f o r m a t i 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 t i k aE L T E I n f o r m a t i k a
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;
E L T E I n f o r m a t i k aE L T E I n f o r m a t i k a
Elágazások
• if (kif) ut; else ut; //mint C-ben– elseif // else utáni if– endif // 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!
<?phpif ($a > $b) { echo "a nagyobb, mint b";} else { echo "a NEM nagyobb, mint b";}?>
<?phpswitch ($i) {case "alma": echo "i most: alma"; break;case ”körte": echo "i most: körte"; break;case ”barack": echo "i most: barack"; break;}?>
E L T E I n f o r m a t i k aE L T E I n f o r m a t i 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 t i k aE L T E I n f o r m a t i 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 t i k aE L T E I n f o r m a t i 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 t i k aE L T E I n f o r m a t i 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 t i k aE L T E I n f o r m a t i 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 t i k aE L T E I n f o r m a t i 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 t i k aE L T E I n f o r m a t i 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 t i k aE L T E I n f o r m a t i k a
Köszönöm a figyelmet!
Illés Zoltán
Budapest, Pázmány Péter sétány 1/c