k0847.qxd
8.2.2005
11:51
StrÆnka 3
Obsah Úvod
11
1
13
Webový server, instalace PHP a MySQL Princip funkce webové aplikace PHP Principy tvorby a správy webového serveru a vývojářského počítače Co je nezbytné k instalaci místního vývojářského počítače
Instalace webového serveru Instalace služby IIS v systémech Windows NT/2000/XP Instalace služby IIS v systémech Windows 98/ME
Instalace skriptovacího systému PHP Instalace databázového serveru MySQL Instalace kompletního balíku PHP Home Edition 2 První skript v jazyce PHP, oživení řetězce „webový server – PHP – databázový server“ Umístění webové aplikace do virtuálního adresáře
2
Základy jazyka PHP Výpis textu Proměnné, řetězce, datum a čas Upozornění na časté příčiny chyb Doporučení týkající se názvů proměnných Jak zjistit existenci proměnné Jak zjistit typ proměnné Odstranění proměnné
Textové řetězce Různé konvence pro definici řetězců
13 14 14 15
15 15 16
16 17 17 18 21
25 25 28 29 30 30 31 32
32 33
k0847.qxd
4
8.2.2005
11:51
StrÆnka 4
Obsah Nahrazování podřetězců v řetězci Zarovnávání textu
Základní funkce pro práci s textovými řetězci Jak zjistit délku řetězce Nalezení textu v řetězci Výběr podřetězce z textového řetězce
Základní programové struktury Podmínky Cykly Násilné ukončení zpracování kódu v jazyce PHP
Regulární výrazy Ošetření výjimek
3
Funkce jazyka PHP Tvorba a užití funkcí Funkce s proměnným počtem argumentů Předčasné ukončení funkce příkazem return Implicitní hodnoty argumentů Dynamická tvorba funkcí
Funkce implementované v jazyce PHP Tvorba pseudonáhodného čísla
4
Webové formuláře Zadávání údajů do webových formulářů a jejich zpracování Nejjednodušší příklad pro zadávání a zpracování údajů Registrace globálních proměnných Nastavení v konfiguračním souboru php.ini Nastavení parametrů pro výpis chyb Předávání parametrů při neregistrovaných globálních proměnných Jak využívat pole $_REQUEST, $_POST a $_GET při předávání parametrů bez proměnných Souvislý versus fragmentovaný kód PHP na stránce HTML Plovoucí nápověda
Validace zadaných údajů Nejlepší validací je prevence Jak zadané údaje ověřovat na straně klienta
35 35
38 39 39 39
40 40 41 43
44 48
51 51 52 52 53 54
54 55
59 59 59 63 64 66 68 69 69 71 74
75 75 77
k0847.qxd
8.2.2005
11:51
StrÆnka 5
Obsah
5
Práce s datem a časem
81
Jak zjistit aktuální datum a čas Výpis hodnot data a času
81 84
Formátovaný výpis data a času Výpis data a času pomocí regulárních výrazů
Ověření platnosti zadaného data nebo času Aritmetika časových údajů (rozdíl mezi dvěma daty, den v týdnu, měsíc v roce) Časová pásma, letní čas
6
Ukládání údajů mimo databázi Pole a záznamy Procházení prvků pole Jak přiřadit hodnoty jednotlivým prvkům pole Změna velikosti pole Mazání prvků pole Naplnění pole z webového formuláře Předdefinovaná pole systémových proměnných serveru
Práce s adresáři a soubory na serveru a u klienta Jak vložit soubor do kódu v jazyce PHP – předávání parametrů
Práce se soubory v adresářích Jak ověřit existenci souboru Test, zda je testovaný objekt souborem, nebo adresářem Výpis obsahu adresáře
Práce s obsahem souboru Otevření souboru Čtení ze souboru Čtení textového souboru po řádcích Zápis do souborů Zápis a čtení souborů ve skriptovacím systému PHP5
Odesílání souborů na server Odeslání obrázků na server a jejich zobrazení
7
Specifika webových aplikací Využití záhlaví stránky v protokolu HTTP Přesměrování stránky
84 87
90 91 93
97 97 98 98 100 102 103 106
107 107
109 109 110 110
112 112 114 115 116 116
117 120
123 123 123
5
k0847.qxd
6
8.2.2005
11:51
StrÆnka 6
Obsah
Soubory cookie Počitadlo přístupů klienta na stránku Jak identifikovat uživatele aplikace
Ověřování a autorizace uživatelů Jak šifrovat heslo
Jak odeslat elektronickou zprávu z kódu v jazyce PHP
8
Zohlednění národních zvyklostí Kódování znaků Nastavení národních zvyklostí Vícejazyčné aplikace v jazyce PHP
9
Grafika na webových stránkách Grafy HTML Grafická knihovna GD Jak do webové stránky vložit obrázek generovaný pomocí kódu PHP Kreslení základních geometrických obrazců Kreslení textu Kreslení centrovaného textu Kreslení zalamovaného textu Jak zjistit informace o obrázku v souboru Převod obrázku do jiného grafického formátu Kreslení sloupcových grafů Univerzální řešení grafu
10 OOP – hlavní pilíř stavebnicových projektů Základy objektově orientovaného programování Třída, konstruktor, členská proměnná, metoda Zapouzdření Implicitní hodnoty argumentů
Tvorba a odstraňování objektů (konstruktor a destruktor) Dědění
124 126 127
129 129
130
133 133 135 135
139 139 141 143 146 147 148 150 152 152 153 154
157 158 158 159 162
163 165
k0847.qxd
8.2.2005
11:51
StrÆnka 7
Obsah
11 Databáze v MySQL Úvod do jazyka SQL Tvorba databázové tabulky Jak naplnit tabulku daty Optimalizace návrhu databázové tabulky Výpis záznamů z databázové tabulky Klauzule FROM Klauzule WHERE Klauzule GROUP BY Klauzule HAVING Klauzule ORDER BY Výpis záznamů z několika tabulek
Databázový server MySQL Klientská konzolová aplikace Jak zjistit základní informace o serveru, databázích a tabulkách Konfigurace skriptovacího prostředí PHP pro spolupráci s databázovým serverem
Funkce pro spolupráci skriptovacího prostředí PHP s databázovým serverem MySQL Možnost připojení k databázím serveru MySQL Jak ošetřit chyby při spojení s databázovým serverem Tvorba funkce pro připojení k databázi Funkce pro tvorbu nové databáze Funkce pro odesílání příkazů SQL Funkce pro načítání výsledné sady Jak využít automaticky inkrementovaných jedinečných identifikátorů Funkce pro zjišování informací týkajících se vykonání dotazu SQL Funkce pro zjišování aktuálních informací o databázi Ošetření chyb
Příklad výpisu obsahu databázové tabulky v jazyce PHP Univerzální dialog pro sestavení dotazu SQL Sestavení počátku výběrového dotazu Sestavení klauzule WHERE Setřídění sloupců – klauzule ORDER BY Zadávání kalendářního data a času
169 170 170 172 173 175 176 176 179 180 181 181
183 183 184 186
186 186 187 189 190 192 193 197 198 201 201
203 204 206 209 213 215
7
k0847.qxd
8
8.2.2005
11:51
StrÆnka 8
Obsah
Vzdálená správa databázového serveru MySQL – PHPmyAdmin Záložka Struktura Záložka SQL Záložka Vyhledávání Záložka Dotaz Tvorba nové databázové tabulky Záložka Export
Databázový stroj SQLite Tvorba databáze SQLite Otevření databáze Tvorba databázové tabulky a ukládání dat Jak zadávat posloupnost příkazů SQL do databáze SQLite Jak zjistit počet záznamů ovlivněných posledním příkazem SQL Tvorba dočasné databáze SQLite v paměti Výběr záznamů z databáze SQLite Výpis záznamů z databáze SQLite do tabulky HTML
12 Výměna dat pomocí XML Dokument XML Jak načíst dokument XML ze souboru a jak ho zobrazit v prohlížeči Generování dokumentu XML pomocí kódu v jazyce PHP
Zpracování dokumentu XML – syntaktická analýza Načtení uzlů dokumentu XML do objektového modelu DOM Zpracování uzlů dokumentu XML pomocí rozhraní SAX Výskyt počáteční značky zpracovávaného prvku Výskyt koncové značky zpracovávaného prvku Zpracování obsahu prvku Výskyt obsahu prvku Transformace XSLT Rozhraní SimpleXML
13 Komplexní řešení: portál Počitadlo a statistika přístupů na webové stránky Princip funkce počitadla Návrh databázové části projektu Návrh skriptů Výpis statistiky návštěvnosti Vykreslení grafu návštěvnosti
218 219 220 222 223 224 228
230 231 231 232 234 235 237 237 238
241 242 243 244
247 247 249 249 250 250 250 252 254
257 257 258 258 259 261 262
k0847.qxd
8.2.2005
11:51
StrÆnka 9
Obsah
Přihlášení uživatele – ověřování Návrh databázové části aplikace
Publikační portál na platformě PHP a MySQL Koncepční návrh modelu řešení Logický a fyzický model řešení Návrh struktury relační databáze Propojení aplikace s databází Zobrazení článků Redakční systém časopisu Odhlášení redaktora Vložení nového článku Editace článku Vymazání článku ze systému
263 263
266 266 268 270 273 274 280 288 288 291 292
9