PHP příkazy PHP lze vkládat přímo do XHTML
Transkript
Návrh a tvorba WWW stránek 1/38 PHP • PHP – Hypertext Preprocessor – interpret stránek na serveru • běží na serveru – příkazy PHP nejprve provede a vloží do XHTML dokumentu, následně posílá klientovi příkazy PHP lze vkládat přímo do XHTML Návrh a tvorba WWW stránek 2/38 Server x klient Výhody: • spolupráce se serverovými aplikacemi (databáze, SMTP, FTP) • nenáročnost na HW a SW klienta – výstupem je čisté (X)HTML • menší objem přenesených dat – přenáší se pouze výsledek skriptů • ochrana zdrojových kódů Nevýhody: • zátěž serveru • nemožnost interakce s objekty na stránce (reakce na klávesy, myš) Návrh a tvorba WWW stránek 3/38 Co je potřeba? 1) možnost publikování na webovém serveru s podporou PHP 2) totéž pro ladění skriptů na domácím PC Oba servery musí mít nainstalovány tyto součásti: – – – HTTP server – Apache, IIS, … interpret PHP vhodné je pracovat s databází, nejčastěji MySQL Tyto programy musí být nainstalovány a nakonfigurovány pro vzájemnou spolupráci Návrh a tvorba WWW stránek 4/38 Možnosti instalace 1) jednotlivé součásti stáhnout samostatně a ručně nakonfigurovat 2) instalace balíčku, který obsahuje všechny potřebné součásti (Apache, PHP, MySQL) ad 1) • přehled v nastavení • aktuální verze součástí • možnost kombinace součástí ad 2) • jednoduchá instalace • snadná konfigurace • Xampp, Wampp2, PhpTriad, PhpEasy, PhpHomeEdition Návrh a tvorba WWW stránek 5/38 Nejsnažší domácí instalace • balíčky – Xampp, PhpEasy, … • obsahuje osvědčenou kombinaci – Apache, MySQL, PHP • součásti jsou vzájemně nakonfigurovány • alternativou mohou být aplikace Wammp2, která obsahuje stejné součásti, navíc není nutné ji instalovat Návrh a tvorba WWW stránek 6/38 Alternativní instalace • instalace jednotlivých součástí samostatně + jejich konfigurace • většinou v případě jiné kombinace na "ostrém" serveru • alternativy k Apachi – Microsoft IIS, Personal Web Server • alternativy k MySQL – PostgreSQL, Access, Oracle Návrh a tvorba WWW stránek 7/38 Práce se serverem Apache • start/restart serveru • na adrese http://localhost (http://127.0.0.1) se potom nachází kořenový adresář webového serveru • všechny php skripty musí být uloženy v kořenovém adresáři • implicitně je kořenovým adresářem /htdocs Konfigurace Apache • konfigurační soubor httpd.conf v adresáři Apache/conf • úpravy se provádí přidávání a odebíráním komentářů vybraných direktiv • např. změna kořenového adresáře, složka instalace, výchozí soubor DocumentRoot "C:/skripty" ServerRoot "C:/Apache" Návrh a tvorba WWW stránek Vyhodnocování PHP • ke skriptům je potřeba přistupovat přes webový server • skripty NELZE spouštět přímo z lokálního disku Konfigurace PHP • v souboru php.ini (Apache/php, Windows/System32, ap.) • formou komentářů, především přidávání knihoven • register_globals – on (jednodušší), off (bezpečnější) – práce s formulářovými proměnnými 8/38 Návrh a tvorba WWW stránek 9/38 Vkládání PHP do (X)HTML • PHP lze vkládat přímo do XHTML, pro interpret je potřeba obě části oddělit ... kód XHTML ... ... kód XHTML ... <?php <? /* začátek PHP */ ... kód PHP ... ?> ... kód PHP ... /* konec PHP */ ... kód XHTML ... ?> ... kód XHTML ... • zkrácená verze není kompatibilní s XML • použití zkrácené verze lze zakázat v php.ini (short_open_tag = On) • třetí možnost <script type="text/php" language="php"> Návrh a tvorba WWW stránek 10/38 Kombinace XHTML a PHP • PHP generuje kód XHTML • kód PHP lze vložit na libovolné místo v dokumentu • kód PHP lze kdykoli ukončit a přejít na XHTML (a naopak) <body> <?php echo "Vítejte na stránce"; ?> <h2>První dokument v PHP</h2> <? echo "<p><i>Lze použít i značky XHTML</i></p>"; ?> </body> • funkce echo vypisuje zadaný text na standardní výstup • dokument obsahující PHP musí mít příponu .php (php5, phtml, konfigurace Apache) • dokument musí být zobrazen přes webový server, ne z disku • zobrazte si zdrojový kód Návrh a tvorba WWW stránek 11/38 Základní syntaxe • příkazy jsou odděleny středníkem • oddělovačem jsou "bílé znaky" - přehlednost kódu • strukturovaný jazyk - příkazy jsou členěny do bloků { příkazy } <? function fce() { if (podminka) { příkaz1; příkaz2; } } ?> • formátování příkazů - přehlednost Návrh a tvorba WWW stránek 12/38 Komentáře • víceřádkový komentář /* toto je komentář */ • jednořádkový komentář // komentář do konce řádku # jednořádkový komentář • komentáře lze vnořovat, je potřeba ale použít různých druhů <? ... /* první komentář /* pokus o vnořený komentář */ text vnějšího komentáře - CHYBA, komentář již skončil */ ?> Návrh a tvorba WWW stránek 13/38 Proměnné • v PHP jsou proměnné uvozeny znakem $, tj. $a je "proměnná a" • identifikátor proměnné musí začínat písmenem nebo podtržítkem, dále "cokoli" - raději bez diakritiky • proměnné není třeba deklarovat či inicializovat <? $a = 100; $b = $a; $c = $a + $b; ?> • není třeba se starat o datové typy - automatická konverze <? $a = 10; $a = 3.14159; $a = "text"; ?> Návrh a tvorba WWW stránek 14/38 Pole • k jednotlivým položkám pole se přistupuje přes indexy <? $a[0]=11; $a[1]=5; $a[2]=3; $a[3]=8; ?> • s proměnnou typu pole lze pracovat jako s celkem <? $b = $a; ?> • přístup k proměnným <? echo $a[3]; ?> // vypíše se 8 • naplnění pole - každá položka zvlášť - najednou <? $x = Array(1.14,2.56,7.90); ?> • vícerozměrná pole <? $tabulka[1][1] = 5;$tabulka[1][2] = 8; $tabulka[2][1] = 3;$tabulka[2][2] = 1; ?> Návrh a tvorba WWW stránek 14,5/38 Asociativní pole <? $dny["Mon"]="Pondělí"; $dny["Tue"]="Úterý"; $dny["Wed"]="Středa"; $dny["Thu"]="Čtvrtek"; $dny["Fri"]="Pátek"; $dny["Sat"]="Sobota"; $dny["Sun"]="Neděle"; echo $dny[Date("D")]." " .Date("j").". ".Date("n").". ".Date("Y"); ?> Návrh a tvorba WWW stránek 15/38 Řetězce • uvádějí se v uvozovkách (nebo apostrofech) <? $retezec = "Toto je retezec"; ?> • výpis řetězce <? echo $retezec ?> // vypise se Toto je retezec • escape sekvence - zápis speciálních znaků - !! pouze v řetězcích v uvozovkách \n \t ukončení řádku tabulátor <? $zvire = "kočka"; echo "Chované zvíře je $zvire"; // kočka echo "\$zvire je $zvire"; // $zvire je kočka echo ‘$zvire je $zvire’’; // $zvire je $zvire ! Návrh a tvorba WWW stránek 16/38 Řetězce • konkatenace řetězců $a = "10"; $b = 15; $c = $a + $b; // $c bude 25 (automaticka konverze) $d = $a . $b; // $d bude 1015 Návrh a tvorba WWW stránek 17/38 Matematické operátory • + - * / - sčítání, odčítání, násobení, reálné dělení •% - modulo • složené operátory +=, -= atd. <? $a+=5; ?> Unární operátory pro inkrementaci a dekrementaci • jeden z nejčastěji používaných příkazů, proto speciální operátory <? $a = $a+1; $a++; ?> <? $a = $a-1; $a--; ?> • lze použít dvě varianty zápisu - $a++ a ++$a <? $a $b $c $c $b ?> = = = = = 10; $a++; ++$a; --$a; $a--; // // // // $a $a $a $a je je je je 11, 12, 11, 10, $b $c $c $b je je je je 10 12 11 11 Návrh a tvorba WWW stránek 18/38 Operátory porovnávání • většinou v podmínkách == !=, <> <, >, <=, >= a cyklech, výsledkem je true/false operátor rovnosti operátor nerovnosti porovnání velikosti === !== <? ?> proměnné mají stejnou hodnotu i typ proměnné mají různou hodnotu nebo typ $a $b $c $c = = = = 7; 7.00; $a==$b; $a===$b // true, mají stejnou hodnotu // false, různý typ Návrh a tvorba WWW stránek 19/38 Konjunkce a disjunkce • logické AND (&&) • logické OR (||) <? $podm = (($b>0) AND ($b<10)); $podm = (($b<0) OR ($b>10)); ?> // ($b>0) && ($b<10) // ($b<0) || ($b>10) • rozdíl v prioritě operátorů - AND má nižší prioritu než && • zkrácené vyhodnocování logických výrazů zleva doprava • operátor XOR - exklusivní disjunkce - právě jedna <? $a xor $b ?> // právě jedna proměnná je pravdivá • podmíněný operátor podmínka ? výraz1 : výraz2 Návrh a tvorba WWW stránek 20/38 Funkce • za identifikátorem funkce vždy následují závorky • výjimkou je funkce (konstrukt) echo - lze použít se závorkami i bez <? echo "Text"; echo ("Text"); // ekvivalentní zápis ?> • funkce může a nemusí vracet výsledek, pokud výsledek vrací, přiřadí se do proměnné <? $a = abs(-10); ?> • mimo standardních funkci PHP lze deklarovat funkce vlastní použitím klíčového slova function function Jmeno (seznam_parametru) { příkazy; [return hodnota;] } // pokud funkce vrací hodnotu Návrh a tvorba WWW stránek 21/38 • příklad jednoduché funkce <? function Uvitani() { echo "<h2>Vítejte</h2>"; } ?> • uvnitř funkce lze volat další funkce, např. standardní funkci Date <? function Uvitani() { echo "Vítejte<br />"; echo "Dnes je ".date("j.n.Y G").":".date("i"); } ?> • proměnné deklarované uvnitř funkce jsou lokální , předávání hodnot odkazem zajistí & <? function Nastav(&$x,$y) { $x=0;$y=1; } $a=100;$b=200;Nastav($a,$b);echo ”$a,$b”; // vytiskne 0,200 ?> Návrh a tvorba WWW stránek 22/38 Řízení běhu programu • k řízení programu slouží mimo jednoduchých příkazů a volání funkcí především podmíněný příkaz a příkazy cyklu Podmíněný příkaz if • jednoduchá podmínka <? if (podmínka) { blok příkazů } ?> • úplná podmínka <? if (podmínka) { blok příkazů } else { blok příkazů } ?> • rozšíření elseif <? if (podmínka1) { blok příkazů } elseif (podmínka2) { blok příkazů } … else { blok příkazů } ?> • v případě vícenásobného použití elseif je vhodné využít switch Pozor na operátor porovnání v podmínce (==) ! Návrh a tvorba WWW stránek 23/38 Rozcestník switch • slouží k rozlišení více stavů podmínky <? switch ($mesic) { /* podminka musi byt v () */ case 2: $dny=28;break; case 4: case 6: case 9: case 11: $dny=30;break; default: $dny=31; } ?> • prochází všechny větve => je potřeba v každé větvi break; Návrh a tvorba WWW stránek 24/38 Cyklus for • provádí zadaný počet opakování <? for ($i=1;$i<=6;$i++) echo "<h$i>Nadpis $i. úrovně</h$i>"; ?> • problém s nekonečným cyklem na serveru je v PHP vyřešen nastavením max. doby provádění cyklu, např. na 30 s Cyklus foreach pro pole <? $x = Array(1,2,3,4,5,6,7,8,9,10); foreach ($x as $y) echo "$y "; // výpis prvků ?> • break – příkaz pro ukončení cyklu • continue – ukončení aktuálního průchodu cyklem • exit – ukončení zpracovávání skriptu Návrh a tvorba WWW stránek 25/38 Cyklus while • v případě, že není předem znám počet průchodů, ale je známa podmínka ukončení cyklu • libovolný cyklus for lze převést na while <? $i = 1; while ($i<=10) { echo $i; $i++; } ?> Cyklus do-while • cyklus s podmínkou na konci, provede se vždy alespoň jednou <? $i=1; do { echo $i;$i++; } while ($i <= 10); ?> Návrh a tvorba WWW stránek 26/38 Vkládání souborů • vkládání externích souborů do skriptů • záhlaví, zápatí, příp. často používané části kódu Require a include • zadaný soubor vloží do dokumentu v místě uvedení příkazu • syntaxe: require "soubor.php"; require ("soubor.php"); // include "soubor.php" // include ("soubor.php") • pokud zadaný soubor existuje, je vložen do dokumentu • pokud zadaný soubor neexistuje – require skončí s fatální chybou – include skončí s varováním (@) • před vložením souboru je opuštěn režim zpracování PHP Návrh a tvorba WWW stránek 27/38 Require a include - použití <? include "zahlavi.php"; echo "Toto je obsah stránky"; include "zapati.php"; ?> zahlavi.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>XHTML</title> <meta http-equiv="Content-Type" content="text/html; charset=windows-1250" /> </head><body> zapati.php <p>© autor <? echo date("j."."m."."Y, " . "H:i:s"); ?> </p></body></html> Návrh a tvorba WWW stránek 28/38 Readfile • otevře zadaný soubor a jeho obsah vypíše na standardní výstup • obsah souboru neprochází přes interpret PHP, tzn. že může obsahovat značky XHTML, které interpretuje klient, ale nemůže obsahovat příkazy PHP <? readfile ("soubor.txt"); ?> Návrh a tvorba WWW stránek 29/38 Zpracování formulářů • jedno z nejčastějších využití PHP • jednoduchá spolupráce s formuláři v XHTML • obslužný skript je nastaven v atributu action značky <form> <form name="f1" method="post" action="obsluha.php"> • při zpracování formulářových polí jsou tato přístupná v proměnných stejného jména jako ve formuláři • bezpečnost – register_globals – předávání proměnných <? echo echo echo echo ?> $jmeno; // funguje pro register_globals=On $_POST["jmeno"]; // pro register_globals=Off $_GET["jmeno"]; // ---- || ---$_REQUEST["heslo"]; // univerzální • často se využívá v kombinaci s funkcí mail() Návrh a tvorba WWW stránek 30/38 Předávání proměnných • automaticky ve stejnojmenných proměnných – lépe přes asociativní pole $_POST, $_GET • viz příklad obsluha.php • často se využívá možnost zpracování formuláře ve stejném souboru - snadné úpravy - všechno na jednom místě • poprvé je potřeba zobrazit formulář, po odeslání už ne • viz příklad fotky Návrh a tvorba WWW stránek 31/38 Nahrávání souborů na server • pomocí formulářového pole typu file • podmínky pro formulář: - kvůli bezpečnosti musí být použita metoda POST - atribut enctype="multipart/form-data"; • soubor je uložen do dočasného adresáře (nastaveno v php.ini) odkud je potřeba jej zkopírovat do cílové složky • při zpracování je k dispozici jméno souboru, velikost a typ (v proměnných $_FILES[‘file’][‘size|name|tmp_name|type’]) • v PHP jsou nastaveny bezpečnostní hodnoty pro velikost souboru • viz příklad fotky Návrh a tvorba WWW stránek 32/38 Práce se soubory • skript nesmí mít přístup ke všem souborům na serveru – záleží na právech procesu webového serveru • soubory, ke kterým má přistupovat skript, musí mít patřičná práva • přístupová práva, bezpečnost, DocumentRoot • práce s celými soubory – kopírování, mazání, změna práv atd. • práce s obsahem souborů – čtení a zápis dat do souboru Návrh a tvorba WWW stránek 33/38 Manipulace s celými soubory • file_exists() – boolovská funkce, zda soubor existuje <? if (!file_exists("jokes.php")) echo "Chyba! Soubor neexistuje!"; ?> • is_dir() – totéž pro adresáře • is_executable() – true pokud je soubor sppustitelný • is_file() – zda se jedná o soubor (případně is_link – odkaz) • is_readable() – true pokud je možné ze souboru číst (is_writable) • is_uploaded_file() – true pokud jméno odpovídá souboru nahranému na server metodou POST • copy($soubor, "cesta kam"), Rename(), Unlink() Návrh a tvorba WWW stránek 34/38 Manipulace s obsahem souborů - otevření • čtení z zápis do souboru na libovolném místě • fopen() – pro úpravy je soubor potřeba nejprve otevřít <? $fp1 = fopen($jmeno,režim); ?> – absolutní i relativní cesta, i mimo webserver (pro čtení) – režim – přístup k souboru r čtení (pokud neexistuje, chyba) r+ čtení i zápis (např. zápis od začátku souboru) w zápis (existuje => obsah smazán, jinak vytvořen) w+ zápis a současné čtení (existuje => smazán) a zápis na konec souboru (neexistuje => vytvoří se) a+ zápis na konec souboru + čtení Návrh a tvorba WWW stránek 35/38 Manipulace s obsahem souborů - čtení • třetím parametrem fopen() může být boolovská hodnota, která určuje, zda se má soubor hledat nejen v aktuálním adresáři, ale i v adresáři daném proměnnou include_path v konfiguračním souboru • fopen vrací ukazatel na soubor, je dobré jej uložit pro další použití • čtení ze souboru – fread(), fgets(), fgetc() fread() – čte po blocích <? $chunk = fread($fp1,1024); > fgets() – čte po řádcích z textového souboru (omezení řádku) <? $radek = fgets($fp22,4096); ?> fgetc() – načte znak • automaticky je přesouván ukazatel pozice v souboru, pomocí funkce feof() lze testovat konec souboru Návrh a tvorba WWW stránek 36/38 Manipulace s obsahem souborů - čtení Příklad: Vyhledejte v zadaném souboru řádky obsahující daný text. <? $soubor = "soubor.txt"; $grep = "php"; if ($fp=fopen($soubor,"r")) while (!feof($fp)) { $radek = fgets($fp,filesize($soubor)); if (strpos($radek,$grep)!==false) echo $radek."<br />"; }; ?> Návrh a tvorba WWW stránek 37/38 Manipulace s obsahem souborů - zápis • fwrite() – zapíše do souboru řetězec na pozici ukazatele <? fwrite(soubor,řetězec[,délka]) ?> • soubor musí být otevřen pro zápis • lze použít funkci fputs(), která má ale stejný význam (alias) • funkce pro manipulaci s ukazatelem: - rewind() – nastaví ukazatel na začátek souboru - ftell() – vrací aktuální pozici ukazatele v souboru - fseek() – nastaví ukazatel na zadanou hodnotu Všechny tyto funkce očekávají jako první parametr odkaz na soubor, fseek() navíc očekává druhý parametr s určením pozice. Návrh a tvorba WWW stránek 38/38 Manipulace s obsahem souborů - zápis <? $fp = fopen("soubor.dat","r"); fseek($fp,filesize("soubor.dat")); $pozice = ftell($fp); rewind($fp); fseek($fp,$pozice); ?> Uzavření souboru • vhodné u souborů, do kterých bylo zapisováno • dojde k vyprázdnění vyrovnávací paměti a uložení změn v souboru <? fclose($fp); ?>
Podobné dokumenty
Elektronické publikování
Hodnoty atributů musí být v uvozovkách (včetně číselných)
Místo atributu name jako identifikátoru objektů na stránce se doporučuje používat atribut id.
Více
PHP, PERL, ASP.NET
začleňuje přímo do struktury jazyka HTML, XHTML či WML, což lze využít při tvorbě
webových aplikací. PHP lze použít i k tvorbě konzolových a desktopových aplikací.
PHP skripty jsou prováděny na str...
Certifikační politika pro externí uživatele
Informace o vydaných certifikátech a seznamech zneplatněných certifikátů jsou poskytovány
prostřednictvím WWW stránek autority a jsou tedy dostupné pouze v rámci interní sítě PRE.
Vně PRE, tedy z I...
Tvorba www stránek v HTML a CSS
Každá z těchto definic definuje jinou sadu XHTML tagů. Element DOCTYPE není součástí
XHTML dokumentu, není elementem XHTML a nemusí mít tedy koncovou značku.
Microsoft Excel 2010
v podstatě soubor, se kterým pracujeme stejným způsobem jako s kterýmkoli
jiným souborem pod operačním systémem – můžeme jej otevřít, uložit, zavřít,
vytisknout.
Sešit musí mít jméno – systém při o...
Vyšší odborná škola a Střední odborná škola
tyto sloţité číselné kombinace, mohou zadávat tzv. doménové jméno (hostname), coţ je
přiřazené jméno k IP adrese. Například s IP adresou 89.185.233.232 je spojeno
doménové jméno www.all4all.cz.
Hyp...
VÝUKOVÝ MATERIÁL
• Pro čtení dat ze souboru vytvoříme proměnnou typu ifstream.
• Soubor otevřeme metodou open(), které předáme jméno
souboru.
• Úspěšnost otevření souboru ověříme pomocí metody fail().
• Pro čtení d...
Studijní opora. - Katedra technické a informační výchovy PdF UP v
Úspěšné studium je podmíněno základními znalostmi práce s: