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.NET,... 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 <b > world </b >!";?> </body > </html > <html> <title> Ukazka </title> <body> Hello <b>world</b>! </body> </html>
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é ++x, -x prefixové přičítání/odečítání jedničky x++,x - 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 cond? 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
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 = file_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 <form action= skript.php method= POST > <input type= hidden value= 42 name= test ></input> <table> <tr><td>jmeno:</td><td> <input type= text value= Petr name= jmeno ></input> </td></tr> <tr><td>komentar:</td><td> <textarea name= komentar >Tady zadejte komentar</textarea> </td></tr> <tr><td></td><td> <input type= submit value= Odesli formular /> </td></tr></table> </form>
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/