Webové Aplikace (6. přednáška)
Co je to Webová Aplikace
Co je to Webová Aplikace
Klient/Server model uživatelské rozhraní běží na straně klienta (prohlížeč) "logika" programu běží na serveru klient (prohlížeč) posílá serveru uživatelské akce (vyhledej stránky s klíčovým slovem php, pošli e-mail, . . .) server posílá výsledky akcí (seznam stránek s klíčovým slovem php, . . .)
Výhody/Nevýhody webových vs desktopových aplikací Výhody data jsou na serveru, k dispozici všude nulová údržba z hlediska uživatele, automatický upgrade možnost spolupráce mezi uživateli ... Nevýhody data jsou na serveru, administrátor aplikace k nim má přístup (soukromí, . . .) aplikace je nepřístupná, pokud jsme offline (nebo pokud jsou servery aplikace offline) v závislosti na typu aplikace může být pomalejší těžkopádný přístup k lokálním datům ...
Komunikace mezi klientem a serverm — HTTP protokol Požadavek GET /~verner HTTP/1.1 Host: www.ktiml.mff.cuni.cz User-Agent: Mozilla/4.75 [en] (WinNT; U) Cookie: CLIENT=Rich; SESSION=kq8794asdkjlkjasdUOIU31KLAJD; Odpověď HTTP/1.1 200 OK Date: Mon, 05 Feb 2001 03:26:18 GMT Server: Apache/1.2.5 Last-Modified: Mon, 05 Feb 2001 03:25:36 GMT Content-Length: 2255 Content-Type: text/html ...
Jak funguje webový server
přijme HTTP požadavek určí cíl požadavku na základě následujících informací relativní adresy hlavičky host konfigurace
pokud je cílem statický soubor, vrátí ho zabalený do HTTP odpovědi pokud je cílem skript — provede skript a vrátí výstup skriptu zabalený do HTTP odpovědi
Webové servery
Apache (61%) IIS (14%) Nginx (11%) GWS (3%) Lighttpd Node.js ...
Jak naprogramovat "logiku" aplikace
Java (JSP, Tomcat, . . .) PHP Python C # , ASP.N ET , . . . Perl, C++, JavaScript, Prolog (!), . . .
Jazyk PHP: Trocha Historie 94 Rasmus Lerdorf, Personal Home Page Tools (PHP Tools), sledoval návštěvnost svých stránek 95 uvolněno k veřejnému použití, přejmenováno na FI (Forms Interpreter) kompletně přepsán a přejmenováno na Personal Home Page Construction Kit 96 opět přejmenováno, tentokrát na PHP/FI 97 Andi Gutmans, Zeev Suraski z Tel Avivu, začali s kompletním přepisem 98 instalován na cca 60000 doménách (1% domén), stále více-méně “one-man-job” PHP v 3.0, přejmenováno na PHP: Hypertext Processor 99 jádro opět kompletně přepsáno (Zend engine — ZEev aNDi) první kniha o PHP (J. Kosek: PHP - tvorba interaktivních internetových aplikací )
Jazyk PHP: Trocha Historie II.
00 PHP v4 04 PHP v5 12 75% serverů, u kterých je známo co používají Používají PHP Wikipedie, Facebook, Moodle, . . .
PHP — Template processor PHP interpret funguje jako filtr načte soubor (typicky html) ve kterém jsou vložené kousky kódu tyto kousky kódu provede a v původním textu je nahradí jejich výstupem vypíše vzniklý text Příklad < html > < title > Ukazka title > < body > php echo " Hello
world b >! " ; ?> body > html >
Ukazka ⇒ Hello world!
Datové typy, proměnné Názvy proměnných začínají dolarem ($), pak následuje podtržítko/písmeno a posloupnost písmen, podtržítek a číslic Typ proměnné se nedeklaruje Datové typy: Celá čísla (integers) Desetinná čísla (floating point numbers) Booleans (true/false) Řetězce (strings) Pole (arrays) php $smysl_zivota = 42; $prvocisla = array (2 ,3 ,5 ,7 ,11) ; $mesta = array ( " UK " = > " London " , " CZ " = > " Praha " , " SK " = > " Bratislava " " U$ " = > " Washington , DC " ); ?>
Operátory
Aritmetické prefixové přičítání/odečítání jedničky postfixové přičítání/odečítání jedničky zbytek po dělení akumulované sčítání, dělení, . . . Logické &&, ||, ! logické AND, OR a NOT v_if_true : v_if_false ternární operátor vrátí v_if_true pokud má výraz cond hodnotu true, jinak vrátí v_if_false ==, != rovnost/nerovnost hodnot ===, !== rovnost hodnoty a typu / nerovnost hodnoty nebo typu Bitové &, |, ˆ, ˜ bitwise AND, OR, XOR a NOT a « b, a » b bitový posun o b bitů doleva, resp. doprava S Řetězci . konkatenace ++x,–-x x++,x–% +=, /=, . . .
cond ?
If, else, for, . . . If/Else if ( conditionA ) { ... } elseif ( conditionB ) { ... } else { ... }
For for ( $i =0; $i <10; $i ++) { ... } foreach ( $pole as $val ) { ... } foreach ( $pole as $key = > $val ) { ... }
Switch
php switch ( $i ) { case 0: echo " i equals 0 " ; break ; case 1: echo " i equals 1 " ; break ; case 2: echo " i equals 2 " ; break ; default : echo " $i " }? >
Funkce Default values php function factorial ( $n = 10) { if ( $n <= 1) { return 1; } else { return $n * factorial ( $n -1) ; } } ?>
Předávání parametrů odkazem php function plusone (& $n ) { $n ++; } ?>
Proměnlivý počet parametrů func_num_args(), func_get_arg(), a func_get_args()
Práce se soubory // Nacte soubor jako pole radku $lines_array = file ( ’ soubor . txt ’) ; // Kazdou radku vypise foreach ( $f as $line ) { echo $line ; } // Nacte soubor do promenne $soubor $soubor = f ile_get_contents ( ’ soubor . txt ’) ; // Totez $fh = open ( ’ soubor . txt ’) ; $soubor = fread ( $fh , filesize ( ’ soubor . txt ’) ) ; fclose ( $fh ) ; // Vytvori novy soubor ’ soubor . txt ’ a zapise do nej // novy obsah $fh = fopen ( ’ soubor . txt ’ , ’w ’) ; fwrite ( $fh , " Novy obsah souboru " ) ; fclose ( $fh ) ;
Require, Include
Funkce require vloží místo sebe zadaný php skript; pokud skript nenajde, program okamžitě skončí chybou Funkce require_once provede totéž, pokud už daný skript nebyl dříve načten. Funkce include jako require, ale pokud skript nenajde pokračuje dál
Komunikace s klientem — Formuláře
Komunikace s klientem — Formuláře v PHP
Odeslané hodnoty jsou k dispozici v následujících polích $_GET $_POST $_COOKIES $_REQUEST $_FILES
Komunikace s klientem — AJAX
Udržování stavu — Cookies & Sessions
Dokumentace
http://php.net/manual/en/