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 ...
/* 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)
První dokument v PHP
Lze použít i značky XHTML"; ?>
• 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 }
• 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ů
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
• není třeba se starat o datové typy - automatická konverze
?>
Návrh a tvorba WWW stránek
14/38
Pole • k jednotlivým položkám pole se přistupuje přes indexy
• s proměnnou typu pole lze pracovat jako s celkem
• přístup k proměnným
// vypíše se 8
• naplnění pole - každá položka zvlášť - najednou • 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
Návrh a tvorba WWW stránek
15/38
Řetězce • uvádějí se v uvozovkách (nebo apostrofech)
• výpis řetězce
// 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
!
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.
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--;
?>
• lze použít dvě varianty zápisu - $a++ a ++$a
= = = = =
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 (||) 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
// 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
// ekvivalentní zápis ?>
• funkce může a nemusí vracet výsledek, pokud výsledek vrací, přiřadí se do proměnné
• 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 "
Vítejte
"; } ?>
• uvnitř funkce lze volat další funkce, např. standardní funkci Date
function Uvitani() { echo "Vítejte
"; 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 • úplná podmínka
• rozšíření elseif
{ 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
• 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 "
Nadpis $i. úrovně";
?>
• 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
• 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
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í zahlavi.php
XHTML <meta http-equiv="Content-Type" content="text/html; charset=windows-1250" /> zapati.php
© autor
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
?>
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