Kolejne. najbardziej aktualne wydanie bestsellerowego podręcznika do tworzenia aplikocji i %tron ItW M i wykorzystaniem najpopularniejszych narzędzi webmastera
Wydanie trzecie
PHP i MySQL Tworzenie stron WWW Vademecum profesjonalisty O Zawiera CD Luke Welling Im lira Thom son
Helion
darmowe ebooki aktualne czasopisma
ebockgigs.oom
Spis treści O A u to ra ch ......................................................................................................21 W prow adzenie............................................................................................... 23
Część I Rozdział 1.
Stosowanie PHP....................................................................33 Podstawowy kurs PHP.................................................................................. 35 Zastosowanie P H P .............................................................................................................................. 36 Tworzenie przykładowej aplikacji: „Części sam ochodowe Janka” ........................................... 36 Form ularz zam ów ienia............................................................................................................... 36 Przetwarzanie fo rm ularza........................................................................................................... 38 Osadzanie PHP w H TM L...................................................................................................................38 Zastosowanie znaczników P H P .................................................................................................39 Style znaczników P H P ................................................................................................................ 40 Instrukcje P H P .............................................................................................................................. 40 O dstępy...........................................................................................................................................41 K om entarze....................................................................................................................................41 Dodawanie zawartości dynam icznej............................................................................................... 42 W ywoływanie funkcji................................................................................................................. 43 Używanie funkcji date().............................................................................................................. 43 Dostęp do zmiennych fo rm u larza....................................................................................................44 Zmienne form ularza..................................................................................................................... 44 Łączenie c iąg ó w ...........................................................................................................................47 Zmienne i ciągi znaków .............................................................................................................. 48 Identyfikatory....................................................................................................................................... 48 Tworzenie zmiennych zadeklarowanych przez użytkow nika..................................................... 49 Przypisywanie wartości zm iennym ..................................................................................................49 Typy zm iennych...................................................................................................................................49 Typy danych w P H P .................................................................................................................... 50 Siła ty p u ..........................................................................................................................................50 Rzutowanie ty p u ...........................................................................................................................51 Zmienne zm iennych..................................................................................................................... 51 Deklarowanie i używanie stałych..................................................................................................... 51 Zasięg zm iennych................................................................................................................................52 Używanie operatorów .........................................................................................................................53 Operatory arytm etyczne.............................................................................................................. 54 Operatory ciągów ..........................................................................................................................55 Operatory przypisania..................................................................................................................55 Operatory p o rów nań.................................................................................................................... 57 Operatory logiczne....................................................................................................................... 58 Operatory b ito w e ..........................................................................................................................59 Pozostałe operatory...................................................................................................................... 59
6
PHP i MySQL. Tworzenie stron WWW. V a d e m é c u m profesjonalisty
Stosowanie operatorów: obliczanie sum w form ularzu................................................................62 Pierwszeństwo i kolejność: wyznaczanie wartości w y rażeń...................................................... 63 Zarządzanie zm iennym i..................................................................................................................... 65 Sprawdzanie i ustawianie typów zm ien n y ch..........................................................................65 Sprawdzanie stanu zm iennej...................................................................................................... 66 Reinterpretacja zm iennych..........................................................................................................67 Implementowanie struktur kontrolujących..................................................................................... 67 Podejm owanie decyzji za pom ocą instrukcji w arunkow ych...................................................... 67 Instrukcja if.................................................................................................................................... 67 Bloki k o d u ..................................................................................................................................... 68 Instrukcja e lse ................................................................................................................................68 Instrukcja elseif............................................................................................................................. 69 Instrukcja sw itch...........................................................................................................................70 Porównanie różnych instrukcji w arunkow ych....................................................................... 71 Powtarzanie działań przy użyciu iteracji.........................................................................................72 Pętle w h ile ..................................................................................................................................... 73 Pętle for i foreach..........................................................................................................................74 Pętle d o ..w h ile.............................................................................................................................. 75 W yłamywanie się ze struktury sk ry p tu...........................................................................................76 Używanie alternatywnych składni struktur sterujących..................................................................... 76 Używanie struktury declare............................................................................................................... 77 W następnym rozdziale....................................................................................................................... 77
Rozdział 2.
Przechowywanie i wyszukiwanie d a n y c h ................................................79 Zapisywanie danych do późniejszego użycia.................................................................................79 Przechowywanie i w yszukiwanie zamówień Ja n k a ..................................................................... 80 Przetwarzanie plików ......................................................................................................................... 81 Otwieranie p lik u .................................................................................................................................. 81 Tryby otwarcia pliku.................................................................................................................... 81 Stosowanie funkcji fopen() do otwarcia p lik u ........................................................................82 Otwieranie pliku przez protokół FTP lub H T T P .................................................................... 84 Problemy z otwieraniem p lik ó w ............................................................................................... 85 Zapisywanie danych w pliku............................................................................................................. 87 Param etry funkcji fw rite()........................................................................................................... 88 Form aty plików ............................................................................................................................. 88 Zamykanie p lik u ..................................................................................................................................89 Odczyt z p lik u ...................................................................................................................................... 91 Otwieranie pliku w celu odczytu — fopen()........................................................................... 92 W iedzieć, kiedy przestać — feof()............................................................................................ 92 Odczytywanie pliku wiersz po wierszu — fgets(), fgetss() i fg e tcsv ()..............................92 Odczyt całego pliku — readfile(), fpassthru(), file()............................................................. 93 Odczyt pojedynczego znaku — fgetc().................................................................................... 94 Odczytywanie zadanej długości — fread()............................................................................. 95 Inne przydatne funkcje p lik o w e....................................................................................................... 95 Sprawdzanie istnienia pliku — file_exists()........................................................................... 95 Określanie wielkości pliku — filesize()................................................................................... 96 Kasowanie pliku — unlink()...................................................................................................... 96 Poruszanie się wewnątrz pliku — rewind(), fseek() i fte ll()................................................96 B lokowanie p lik u .................................................................................................................................97 Lepszy sposób obróbki danych — systemy zarządzania bazam i danych.................................99 Problemy związane ze stosowaniem plików jedno ro d n y ch .................................................99 Jak RDBMS rozw iązują powyższe p roblem y?...................................................................... 99 Propozycje dalszych le k tu r..............................................................................................................100 W następnym rozdziale.................................................................................................................... 100
Spis treści
Rozdział 3.
7
Stosowanie ta b lic ........................................................................................ 101 Czym są tab lice?................................................................................................................................101 Tablice indeksowane num erycznie................................................................................................102 Inicjowanie tablic indeksowanych num erycznie.................................................................. 102 Dostęp do zawartości ta b lic y ................................................................................................... 103 Dostęp do tablic przy zastosowaniu p ętli...............................................................................104 Tablice z innymi indeksam i............................................................................................................ 105 Inicjowanie tablicy..................................................................................................................... 105 Dostęp do elementów tablicy................................................................................................... 105 Stosowanie p ę tli.......................................................................................................................... 105 Operatory tablicow e.......................................................................................................................... 107 Tablice w ielow ym iarow e.................................................................................................................108 Sortowanie ta b lic ...............................................................................................................................112 Stosowanie funkcji so rt().......................................................................................................... 112 Stosowanie funkcji asort() i ksort() do porządkowania tab lic............................................112 Sortowanie odw rotne.................................................................................................................113 Sortowanie tablic w ielow ym iarow ych.......................................................................................... 113 Typy sortowań definiowane przez użytkow nika.................................................................. 113 Odwrotne sortowanie zdefiniowane przez użytkow nika.......................................................115 Zmiany kolejności elementów w tablicach.................................................................................... 115 Stosowanie funkcji shuffle().................................................................................................... 116 Stosowanie funkcji array_reverse()......................................................................................... 117 Ładowanie tablic z p lik ó w ...............................................................................................................118 W ykonywanie innych działań na tablicach.................................................................................. 121 Poruszanie się wewnątrz tablicy — funkcje each(), current(), reset(), end(), next(), pos() i p re v ()................................................................................................... 121 Dołączanie dowolnej funkcji do każdego elementu tablicy — funkcja array_walk() 122 Liczenie elementów tablicy: count(), sizeof() i array_count_values().............................123 Konwersja tablic na zmienne skalarne — funkcja extract()...............................................124 Propozycje dalszych le k tu r..............................................................................................................125 W następnym rozdziale.................................................................................................................... 125
Rozdział 4.
M a n ipulow anie c ią g a m i i w yrażenia re g u la rn e ..................................127 Przykładowa aplikacja — Inteligentny Form ularz P o czto w y .................................................. 127 Form atowanie ciągów .......................................................................................................................129 Przycinanie ciągów — funkcje chop(), ltrim() i trim ().......................................................130 Form atowanie ciągów w celu ich prezentacji.......................................................................130 Form atowanie ciągów do przechowania — funkcje addslashes() i stripslashes() 134 Łączenie i rozdzielanie ciągów za pom ocą funkcji ciągów ....................................................... 135 Stosowanie funkcji explode(), implode() i jo in ()................................................................. 136 Stosowanie funkcji strtok().......................................................................................................136 Stosowanie funkcji su b str()......................................................................................................137 Porównywanie ciąg ó w ..................................................................................................................... 138 Porządkowanie ciągów — funkcje strcmp(), strcasecmp() i strnatcm p()........................ 138 Sprawdzanie długości ciągu za pom ocą funkcji strlen ().....................................................139 Dopasowywanie i zamiana podciągów za pom ocą funkcji ciągów ......................................... 139 Znajdowanie ciągów w ciągach — funkcje strstr(), strchr(), strrchr() i stristr() 140 Odnajdywanie pozycji podciągu — funkcje strpos() i strrpos()........................................ 140 Zamiana podciągów — funkcje str_replace() i substr_replace()....................................... 141 W prowadzenie do wyrażeń regularnych.......................................................................................142 Podstaw y.......................................................................................................................................143 Zbiory i klasy znaków ................................................................................................................143 Pow tarzalność............................................................................................................................. 145 Podw yrażenia...............................................................................................................................145
8
PHP i MySQL. Tworzenie stron WWW. V a d e m e c u m profesjonalisty
Podwyrażenia p o liczaln e.......................................................................................................... 145 Kotwiczenie na początku lub na końcu ciąg u .......................................................................145 R ozgałęzianie...............................................................................................................................146 Dopasowywanie specjalnych znaków literow ych................................................................ 146 Podsum owanie znaków specjalnych.......................................................................................146 Umieszczanie wszystkiego razem (Inteligentny Form ularz)..............................................147 Odnajdywanie podciągów za pom ocą wyrażeń regularnych.....................................................148 Zam iana podciągów za pom ocą wyrażeń regularnych...............................................................149 Rozdzielanie ciągów za pom ocą wyrażeń regularnych..............................................................149 Porównanie funkcji ciągów i funkcji wyrażeń regularnych......................................................150 Propozycje dalszych le k tu r..............................................................................................................150 W następnym rozdziale.................................................................................................................... 150
Rozdział 5.
Ponowne wykorzystanie kodu i tworzenie fu n k c ji................................151 Ponowne stosowanie k o d u ...............................................................................................................151 K o szt............................................................................................................................................. 152 N iezaw odność............................................................................................................................. 152 S p ó jn o ść.......................................................................................................................................152 Stosowanie funkcji require() i include()......................................................................................... 152 Funkcja re q u ire ()........................................................................................................................153 Rozszerzenia plików i req u ire()...............................................................................................154 Znaczniki PHP i require()......................................................................................................... 154 Stosowanie require() w szablonach stron W W W ........................................................................154 Stosowanie funkcji in clu d e()................................................................................................... 159 Stosowanie funkcji require_once() i include_once()............................................................159 Stosowanie opcji auto_prepend_file i auto_append_file......................................................... 159 Stosowanie funkcji w P H P ...............................................................................................................160 W ywoływanie funkcji................................................................................................................160 W ywołanie niezdefiniowanej fu n k cji.................................................................................... 162 W ielkość liter a nazw y funkcji................................................................................................. 163 Dlaczego powinno się definiować własne funkcje?................................................................... 163 Podstawowa struktura fu n k cji......................................................................................................... 164 Nadawanie nazwy funkcji......................................................................................................... 165 Param etry............................................................................................................................................ 166 Zasięg................................................................................................................................................... 168 Przekazanie przez referencję czy przekazanie przez w artość?................................................. 170 Powrót z funkcji................................................................................................................................. 171 Zwracanie w artości przez funkcje.................................................................................................. 172 Bloki k o d u ................................................................................................................................... 173 Implem entacja rekurencji.................................................................................................................174 Propozycje dalszych le k tu r..............................................................................................................176 W następnym rozdziale.................................................................................................................... 176
Rozdział 6.
O biekto w y PHP............................................................................................ 177 Koncepcje programowania obiektow ego......................................................................................178 Klasy i obiekty............................................................................................................................ 178 Polim orfizm .................................................................................................................................179 D ziedziczenie...............................................................................................................................180 Tworzenie klas, atrybutów i operacji w P H P ...............................................................................180 Struktura k la sy ............................................................................................................................ 180 K onstruktory................................................................................................................................181 D estruktory.................................................................................................................................. 181 Tworzenie egzem plarzy................................................................................................................... 182 Stosowanie atrybutów klasy ............................................................................................................ 182 Kontrolowanie dostępu przy użyciu private i p ublic.................................................................. 184
Spis treści
9
W ywoływanie operacji k la s ............................................................................................................ 185 Implem entacja dziedziczenia w P H P ............................................................................................ 186 Kontrolowanie widoczności w trakcie dziedziczenia przy użyciu private i protected 187 U niew ażnianie............................................................................................................................ 188 Zapobieganie dziedziczeniu i unieważnianiu przy użyciu fin a l........................................ 190 W ielodziedziczenie.................................................................................................................... 190 Implementowanie interfejsów .................................................................................................. 191 Tworzenie k la s ................................................................................................................................... 192 Tworzenie kodu dla własnej k la s y .................................................................................................193 Zaawansowane i now e mechanizmy obiektowe w P H P 5..........................................................200 PHP4 a P H P 5.............................................................................................................................. 200 Używanie stałych klasow ych...................................................................................................201 Implementowanie m etod statycznych.................................................................................... 201 Sprawdzanie typu klasy i w skazywanie ty p u ....................................................................... 201 K lonowanie obiektów ............................................................................................................... 202 Używanie klas abstrakcyjnych................................................................................................ 203 Przeciążanie metod przy u ż y c iu c a ll().............................................................................. 203 Używanie m e to d y autoload().............................................................................................. 204 Implementowanie iteratorów i iteracji...................................................................................205 Przekształcanie klas w łańcuchy znaków .............................................................................. 207 Używanie API R eflection.........................................................................................................207 W następnym rozdziale....................................................................................................................208
Rozdział 7.
O bsługa w y ją tk ó w ......................................................................................209 Koncepcja obsługi w yjątków ..........................................................................................................209 Klasa E x cep tio n .................................................................................................................................211 W yjątki definiowane przez użytkow nika..................................................................................... 212 W yjątki w Częściach sam ochodowych Ja n k a............................................................................. 214 W yjątki i inne m echanizmy obsługi błędów w P H P ..................................................................217 Propozycje dalszych le k tu r............................................................................................................. 218 W następnym rozdziale....................................................................................................................218
Część II Rozdział 8.
Stosowanie MySQL.............................................................219 Projektowanie in te rn e to w e jb a z y d a n y c h ............................................ 221 Koncepcje relacyjnych baz danych............................................................................................... 222 T ab ele...........................................................................................................................................222 K o lum ny...................................................................................................................................... 222 W iersze.........................................................................................................................................223 W artości....................................................................................................................................... 223 K lucze...........................................................................................................................................223 S chem aty.....................................................................................................................................224 R elacje..........................................................................................................................................224 Jak zaprojektować internetową bazę danych?............................................................................. 225 Określ obiekty świata realnego, których m odel chcesz w y k o n ać .................................... 225 Unikaj przechowywania redundantnych danych..................................................................226 Zapisuj atomowe wartości k o lu m n .........................................................................................228 Dobierz właściwe k lu c z e ..........................................................................................................228 Pomyśl o zapytaniach, które zadasz b a z ie ............................................................................229 Unikaj tw orzenia tabel z wielom a pustymi p o lam i............................................................. 229 Typy tabel — podsum ow anie..................................................................................................230 Architektura internetowej bazy danych.........................................................................................230 A rchitektura................................................................................................................................ 230 Propozycje dalszych le k tu r............................................................................................................. 232 W następnym rozdziale....................................................................................................................232
10
PHP i MySQL. Tworzenie stron WWW. V a d e m e c u m profesjonalisty
Rozdział 9.
Tworzenie internetow ej bazy d a n y c h .....................................................233 Użytkowanie m onitora M yS Q L ..................................................................................................... 235 Logowanie się do serwera M yS Q L ............................................................................................... 235 Tworzenie baz i rejestrowanie użytkow ników ............................................................................237 Tworzenie bazy d an y ch ............................................................................................................237 Definiowanie użytkowników i p rzy w ilejó w ............................................................................... 237 W prowadzenie do systemu przywilejów M ySQ L ...................................................................... 237 Zasada najm niejszego przyw ileju...........................................................................................238 Rejestrowanie użytkowników: polecenie G R A N T ............................................................. 238 Typy i poziom y przyw ilejów ...................................................................................................240 Polecenie R EV O K E...................................................................................................................242 Przykłady użycia poleceń GRANT i R E V O K E ...................................................................242 Rejestrowanie użytkownika łączącego się z In tern etu.............................................................. 243 W ylogowanie się użytkownika ro o t....................................................................................... 244 Używanie odpowiedniej bazy danych...........................................................................................244 Tworzenie tabel bazy danych..........................................................................................................244 Znaczenie dodatkowych atrybutów k o lu m n .........................................................................246 Typy kolum n............................................................................................................................... 246 R zut oka na bazę danych — polecenia SHOW i D ESC R IB E........................................... 249 Tworzenie indeksów ..................................................................................................................249 Uwaga na temat typów tab el....................................................................................................250 Identyfikatory M ySQ L ..................................................................................................................... 250 W ybór typów danych w kolum nach.............................................................................................. 251 Typy liczb o w e............................................................................................................................252 Propozycje dalszych le k tu r............................................................................................................. 256 W następnym rozdziale....................................................................................................................256
Rozdział 10. Praca z bazą d a n ych MySQL....................................................................257 Czym jest S Q L ?.................................................................................................................................257 Zapisywanie danych do b a z y ..........................................................................................................258 W yszukiwanie danych w b a z ie ...................................................................................................... 260 W yszukiwanie danych spełniających określone k ry teria ................................................... 262 W yszukiwanie danych w wielu ta b e lac h .............................................................................. 263 Szeregowanie danych w określonym p o rząd k u ...................................................................269 Grupowanie i agregowanie danych.........................................................................................269 W skazanie wierszy, które m ają być w yśw ietlone............................................................... 271 Używanie podzapytań............................................................................................................... 272 Dokonywanie zmian rekordów w bazie danych..........................................................................274 Zmiana struktury istniejących ta b e l.............................................................................................. 275 Usuwanie rekordów z bazy danych............................................................................................... 277 Usuwanie tab el...................................................................................................................................278 Usuwanie całych baz d an y ch..........................................................................................................278 Propozycje dalszych le k tu r............................................................................................................. 278 W następnym rozdziale....................................................................................................................278
Rozdział 11. Łączenie się z bazą MySQL za p o m o c ą PHP........................................ 279 Jak działa internetowa baza danych?............................................................................................. 280 Wykonywanie zapytań do bazy danych z poziomu strony W W W ............................................ 282 Sprawdzenie poprawności wpisanych d a n y ch ............................................................................283 Ustanawianie połączenia z bazą danych.........................................................................................284 W ybór właściwej bazy danych....................................................................................................... 286 W ysyłanie zapytań do bazy d a n y ch .............................................................................................. 286 Odczytywanie rezultatów z a p y ta ń ................................................................................................ 287 Zamykanie połączenia z b azą dan y ch ...........................................................................................288 W stawianie nowych danych do b a z y ............................................................................................288
Spis treści
11
Używanie instrukcji przygotow yw anych..................................................................................... 292 Używanie innych interfejsów bazodanowych P H P .................................................................... 293 Stosowanie ogólnego interfejsu bazodanowego: PEAR D B .................................................... 294 Propozycje dalszych le k tu r............................................................................................................. 297 W następnym rozdziale....................................................................................................................297
Rozdział 12. A dm inistrow anie MySQL dla z a a w a n s o w a n y c h ..................................299 Szczegóły systemu p rzyw ilejów .................................................................................................... 299 Tabela u ser...................................................................................................................................300 Tabele db i h o st...........................................................................................................................302 Tabele tables_priv i colum ns_priv..........................................................................................302 K ontrola dostępu: w jaki sposób MySQL używ a tabel p rzyw ilejów ...............................304 Zmiana przywilejów: kiedy zmiany zostaną uw zględnione?............................................ 305 Ochrona bazy danych....................................................................................................................... 305 M ySQL z perspektywy systemu operacyjnego.................................................................... 305 H asła............................................................................................................................................. 306 Przywileje użytkow ników .........................................................................................................307 M ySQL i Internet....................................................................................................................... 307 Uzyskiwanie szczegółowych informacji o bazie d an y ch..........................................................308 Uzyskiwanie informacji poleceniem S H O W ........................................................................308 Uzyskiwanie informacji o kolumnach za pom ocą polecenia D ESC R IB E.........................310 Jak wykonywane są zapytania: polecenie E X P L A IN .........................................................311 Przyspieszanie wykonania zapytań za pom ocą indeksów .........................................................315 Optymalizowanie bazy d an y ch ...................................................................................................... 316 Optymalizacja projektu bazy danych..................................................................................... 316 Przyw ileje.................................................................................................................................... 316 Optymalizacja ta b e l...................................................................................................................316 Stosowanie indeksów .................................................................................................................317 Używanie wartości dom yślnych............................................................................................. 317 Więcej w sk azó w ek .................................................................................................................... 317 Tworzenie kopii zapasowej bazy danych M y S Q L ..................................................................... 317 Przywracanie bazy danych M yS Q L .............................................................................................. 318 Implementowanie replikacji............................................................................................................ 318 Konfigurowanie serwera nadrzędnego...................................................................................319 Transfer danych początkow ych.............................................................................................. 320 Konfigurowanie odbiorcy lub odbiorców ............................................................................. 321 Propozycje dalszych le k tu r............................................................................................................. 321 W następnym rozdziale.................................................................................................................... 321
Rozdział 13. Zaaw ansow ane p rogram ow anie w MySQL.......................................... 323 Instrukcja LOAD D A TA INFIL E ..................................................................................................323 M aszyny zapisu..................................................................................................................................324 T ransakcje........................................................................................................................................... 325 Definicje dotyczące tran sak cji.................................................................................................325 Użycie transakcji w InnoD B .................................................................................................... 326 Klucze obce.........................................................................................................................................327 Procedury składow ane..................................................................................................................... 328 Prosty p rzykład...........................................................................................................................329 Zmienne lo k a ln e.........................................................................................................................331 Kursory i struktury sterujące.................................................................................................... 332 Propozycje dalszych le k tu r............................................................................................................. 335 W następnym rozdziale.................................................................................................................... 335
12
PHP i MySQL. Tworzenie stron WWW. V a d e m e c u m profesjonalisty
Część III
E-commerce i bezpieczeństwo....................................... 337
Rozdział 14. Kom ercyjne w itryny internetow e ............................................................. 339 Co chcemy osiągnąć?....................................................................................................................... 339 Rodzaje komercyjnych stron W W W ............................................................................................. 339 Publikowanie informacji w broszurach internetow ych.......................................................340 Przyjmowanie zamówień na produkty i u słu g i.................................................................... 343 Dostarczanie usług lub wyrobów mających postać cyfrow ą............................................. 348 Zwiększanie wartości produktów i u słu g .............................................................................. 348 Ograniczanie kosztów ............................................................................................................... 349 Ryzyko i zagrożenia..........................................................................................................................350 C rackerzy..................................................................................................................................... 350 Przyciągnięcie niewystarczającej liczby k lien tó w .............................................................. 351 A warie sprzętu kom puterow ego............................................................................................. 351 A warie sieci elektrycznych, komunikacyjnych i komputerowych oraz systemu w ysyłkow ego..................................................................................................351 Silna konkurencja...................................................................................................................... 352 Błędy w oprogram ow aniu.........................................................................................................352 Zmiany polityki rządow ej.........................................................................................................352 Ograniczenie pojem ności system ów ...................................................................................... 353 W ybór strategii...................................................................................................................................353 W następnym rozdziale.................................................................................................................... 353
Rozdział 15. Bezpieczeństwo ko m e rcyjn ych stron WWW......................................... 355 Jaką wagę m ają posiadane przez nas inform acje?...................................................................... 356 Zagrożenia bezpieczeństw a............................................................................................................. 356 Ujawnienie informacji p o u fn y c h ............................................................................................ 357 U trata lub zniszczenie danych..................................................................................................359 M odyfikacje d a n y c h ..................................................................................................................360 Blokada u słu g i............................................................................................................................ 361 Błędy w oprogram ow aniu.........................................................................................................362 Zaprzeczenie korzystania z u słu g i..........................................................................................363 Użyteczność, wydajność, koszty i bezpieczeństw o.................................................................... 364 Opracowanie polityki bezpieczeństw a..........................................................................................364 Zasady uw ierzytelniania..................................................................................................................365 W ykorzystanie mechanizmu uw ierzytelniania............................................................................ 366 Podstawy szyfrowania...................................................................................................................... 367 Szyfrowanie z kluczem pryw atnym .............................................................................................. 368 Szyfrowanie z kluczem publicznym .............................................................................................. 369 Podpis cy fro w y..................................................................................................................................370 Certyfikaty cy fro w e..........................................................................................................................371 Bezpieczne serwery W W W ............................................................................................................ 372 M onitorowanie i zapisywanie zdarzeń..........................................................................................373 Zapory sieciow e.................................................................................................................................374 Tworzenie kopii zapasow ych..........................................................................................................374 Tworzenie kopii zapasowych zwykłych p lik ó w .................................................................. 375 Tworzenie kopii zapasowych i odzyskiwanie baz danych M y S Q L .................................375 Bezpieczeństwo fizy czn e.................................................................................................................375 W następnym rozdziale.................................................................................................................... 376
Rozdział 16. Uwierzytelnianie przy użyciu PHP i MySQL............................................. 377 Identyfikacja użytkow ników ...........................................................................................................377 Implem entacja kontroli dostępu..................................................................................................... 378 Przechowywanie haseł dostępu............................................................................................... 381 Szyfrowanie h ase ł...................................................................................................................... 383 Zastrzeganie więcej niż jednej stron y.................................................................................... 385
Spis treści
13
Podstawowa m etoda uw ierzytelniania..........................................................................................386 W ykorzystanie podstawowej metody uwierzytelniania w P H P ...............................................387 Wykorzystanie podstawowej metody uwierzytelniania n a serwerze Apache przy użyciu plików .h taccess...................................................................................................... 389 W ykorzystanie podstawowej metody uwierzytelniania na serwerze IIS ................................393 W ykorzystanie m odułu mod_auth_mysql do celów uw ierzytelniania................................... 395 Instalacja modułu m od_auth_m ysql...................................................................................... 395 Zadziałało?...................................................................................................................................396 Praca z m od_auth_m ysql..........................................................................................................396 Implem entacja własnej m etody uw ierzytelniania........................................................................397 Propozycje dalszych le k tu r............................................................................................................. 398 W następnym rozdziale.................................................................................................................... 398
Rozdział 17. Zabezpieczanie transakcji przy użyciu PHP i MySQL.......................... 399 Zapewnienie bezpieczeństwa transakcji........................................................................................... 399 Kom puter użytkow nika............................................................................................................. 400 Internet..........................................................................................................................................402 System docelow y....................................................................................................................... 403 Wykorzystanie protokołu Secure Sockets Layer (SSL)............................................................... 404 K ontrola danych pochodzących od użytkow nika....................................................................... 407 Bezpieczne przechowywanie danych............................................................................................408 Ustalanie, czy powinno się przechowywać numery kart kredytow ych.................................. 410 Szyfrowanie danych w P H P ............................................................................................................410 Propozycje dalszych le k tu r............................................................................................................. 419 W następnej części............................................................................................................................ 419
Część IV
Zaawansowane techniki PHP........................................... 421
Rozdział 18. Interakcja z system em p likó w i serw erem ............................................ 423 W prowadzenie do w ysyłania p lik ó w ............................................................................................423 K od HTM L służący do w ysyłania p lik ó w ............................................................................424 Uwaga na temat bezpieczeństw a............................................................................................. 425 Tworzenie PHP obsługującego p lik ....................................................................................... 425 Najczęściej spotykane problem y............................................................................................. 429 Stosowanie funkcji katalogow ych..................................................................................................430 Odczyt z k atalo g ó w ...................................................................................................................430 Otrzymywanie informacji na tem at aktualnego katalogu................................................... 432 Tworzenie i usuwanie katalogów ............................................................................................432 Interakcja z systemem plik ó w .........................................................................................................433 Otrzymywanie informacji o p lik u ...........................................................................................433 Zmiana właściwości p lik u ....................................................................................................... 435 Tworzenie, usuwanie i przenoszenie plików .........................................................................436 Stosowanie funkcji uruchamiających program y..........................................................................437 Interakcja ze środowiskiem: funkcje getenv() i p u ten v ()..........................................................439 Propozycje dalszych le k tu r............................................................................................................. 440 W następnym rozdziale....................................................................................................................440
Rozdział 19. Stosowanie fu n kcji sieci i p ro to ko łu ........................................................441 Przegląd protokołów ........................................................................................................................ 441 W ysyłanie i odczytywanie poczty elektronicznej...................................................................... 442 Korzystanie z innych usług W W W ............................................................................................... 442 Stosowanie funkcji połączeń sieciowych.........................................................................................446
14
PHP i MySQL. Tworzenie stron WWW. V a d e m e c u m profesjonalisty
Korzystanie z F T P ............................................................................................................................ 450 Stosowanie FTP w celu utw orzenia kopii bezpieczeństwa lub kopii lustrzanej pliku ....450 W ysyłanie p lik ó w ...................................................................................................................... 456 Unikanie przekroczenia dopuszczalnego c z a su ...................................................................457 Stosowanie innych funkcji F T P .............................................................................................. 457 Propozycje dalszych le k tu r............................................................................................................. 458 W następnym rozdziale....................................................................................................................458
Rozdział 20. Zarządzanie d a tą i cza se m .......................................................................459 Uzyskiwanie informacji o dacie i czasie w P H P .........................................................................459 Stosowanie funkcji d a te ().........................................................................................................459 Obsługa znaczników czasu U n ik sa.........................................................................................461 Stosowanie funkcji getdate()....................................................................................................462 Sprawdzanie poprawności dat..................................................................................................463 Konwersja pom iędzy formatami daty PHP i M yS Q L ............................................................... 464 Obliczanie dat w P H P ...................................................................................................................... 465 Obliczanie dat w M ySQ L................................................................................................................ 466 Stosowanie m ikrosekund................................................................................................................ 468 Stosowanie funkcji kalendarzow ych............................................................................................. 468 Propozycje dalszych le k tu r............................................................................................................. 469 W następnym rozdziale....................................................................................................................469
Rozdział 21. G enerow anie o bra zkó w ............................................................................ 471 Konfigurowanie obsługi obrazków w P H P ..................................................................................472 Form aty obrazków ............................................................................................................................473 JP E G ............................................................................................................................................. 473 P N G .............................................................................................................................................. 473 W B M P ......................................................................................................................................... 474 G IF................................................................................................................................................ 474 Tworzenie obrazków ........................................................................................................................ 475 Tworzenie kadru obrazka..........................................................................................................476 Rysowanie lub umieszczanie tekstu w o b razk u ................................................................... 476 W yświetlanie ostatecznej g ra fik i............................................................................................478 K ońcowe czynności porządkujące..........................................................................................479 Stosowanie automatycznie generowanych obrazków na innych stronach............................. 480 Stosowanie tekstu i czcionek do tworzenia obrazków.................................................................... 480 Konfiguracja podstawowego k a d ru ....................................................................................... 484 D opasowanie tekstu do przycisku...........................................................................................484 Nadawanie tekstowi odpowiedniej pozycji...........................................................................487 W pisywanie tekstu do przycisku............................................................................................. 488 Etap k o ń co w y ............................................................................................................................. 488 Rysowanie figur i wykresów d an y ch ............................................................................................488 Inne funkcje obrazków ..................................................................................................................... 495 Propozycje dalszych le k tu r............................................................................................................. 496 W następnym rozdziale....................................................................................................................496
Rozdział 22. Stosowanie kontroli sesji w PHP............................................................... 497 Czym jest kontrola se sji? ................................................................................................................ 497 Podstawowa zasada działania s e s ji............................................................................................... 498 Czym jest cookie?...................................................................................................................... 498 Konfiguracja cookies w P H P ...................................................................................................498 Stosowanie cookies w sesji...................................................................................................... 499 Przechowywanie identyfikatora sesji..................................................................................... 500
Spis treści
15
Implem entacja prostych se s ji.................................................................................... Rozpoczynanie sesji............................................................................................. Zgłaszanie zmiennych sesji................................................................................. Stosowanie zmiennych s e s ji............................................................................... Usuwanie zmiennych i niszczenie s e s ji........................................................... Przykład prostej sesji .................................................................................................. Konfiguracja kontroli sesji......................................................................................... Implem entacja uw ierzytelniania w kontroli se sji.................................................. Propozycje dalszych le k tu r........................................................................................ W następnym rozdziale...............................................................................................
500 500 501 501 502 502 504 505 511 511
Inne przydatne własności..........................................................
513
Stosowanie magicznych cudzysłow ów ................................................................... W ykonywanie ciągów — funkcja eval()................................................................. Zakończenie wykonania — die i e x it....................................................................... Serializacja zmiennych i obiektów ........................................................................... Pobieranie informacji na temat środowiska P H P .................................................. Uzyskiwanie informacji na tem at załadowanych rozszerzeń....................... Identyfikacja w łaściciela skryptu....................................................................... Uzyskiwanie informacji na tem at daty modyfikacji skryptu........................ Dynamiczne dodawanie rozszerzeń ......................................................................... Czasowa zmiana środowiska w ykonaw czego........................................................ Podświetlanie ź ró d eł................................................................................................... Używanie PHP w wierszu poleceń........................................................................... W następnej części......................................................................................................
Stosowanie PHP i MySQL w dużych p ro je k ta c h ....................
525
Zastosowanie inżynierii oprogramowania w tworzeniu aplikacji W W W ........ Planowanie i prowadzenie projektu aplikacji W W W ........................................... Ponowne stosowanie k o d u ......................................................................................... Tworzenie kodu łatwego w utrzym aniu.................................................................. Standardy kodow ania........................................................................................... Dzielenie k o d u ...................................................................................................... Stosowanie standardowej struktury katalogów ............................................... Dokumentacja i dzielenie wewnętrznych fu n k c ji.......................................... Implem entacja kontroli w ersji................................................................................... W ybór środowiska program istycznego................................................................... Dokumentacja pro jek tó w ........................................................................................... Prototypow anie............................................................................................................ O ddzielanie logiki i zaw artości................................................................................. Optymalizacja kodu .................................................................................................... Stosowanie prostych optym alizacji................................................................... Stosowanie produktów firmy Z en d ................................................................... T estow anie.................................................................................................................... Propozycje dalszych le k tu r........................................................................................ W następnym rozdziale...............................................................................................
Usuwanie b łę d ó w ........................................................................
541
B łędy program istyczne............................................................................................... Błędy sk ład n i......................................................................................................... Błędy w y konania.................................................................................................. Błędy lo g iczn e......................................................................................................
541 542 543 548
16
PHP i MySQL. Tworzenie stron WWW. V a d e m e c u m profesjonalisty
Pom oc w usuw aniu błędów w zm iennych.................................................................................... 550 Poziom y zgłaszania b łęd ó w ............................................................................................................ 552 Zmiana ustawień zgłaszania b łęd ó w ............................................................................................. 553 W yzwalanie własnych b łęd ó w ....................................................................................................... 554 Elegancka obsługa b łędów .............................................................................................................. 555 W następnym rozdziale.................................................................................................................... 557
Rozdział 26. Tworzenie uw ierzytelniania użytkow ników i p e rs o n a liz a c ji.............. 559 Problem ................................................................................................................................................559 Składniki rozw iązania...................................................................................................................... 560 Identyfikacja użytkownika i personalizacja..........................................................................560 Przechowywanie zakładek....................................................................................................... 561 Rekomendowanie z a k ła d ek ..................................................................................................... 561 Przegląd rozw iązania....................................................................................................................... 561 Implem entacja bazy danych............................................................................................................ 563 Implem entacja podstawowej w itryny............................................................................................ 565 Implem entacja uw ierzytelniania użytkow ników .........................................................................567 R ejestracja...................................................................................................................................567 L ogow anie...................................................................................................................................573 W ylogow anie.............................................................................................................................. 576 Zmiana h asła............................................................................................................................... 577 Ustawianie zapomnianych h a se ł............................................................................................. 579 Implem entacja przechowywania i odczytywania zakładek.......................................................584 Dodawanie zakładek..................................................................................................................584 W yświetlanie zak ład ek............................................................................................................. 586 Usuwanie zakładek .................................................................................................................... 587 Implem entacja rekom endacji..........................................................................................................589 Rozwijanie projektu i m ożliwe rozszerzenia................................................................................592 W następnym rozdziale.................................................................................................................... 592
Rozdział 27. Tworzenie koszyka na z a k u p y ................................................................. 593 Problem ................................................................................................................................................593 Składniki rozw iązania...................................................................................................................... 594 Tworzenie katalogu online....................................................................................................... 594 Śledzenie zakupów użytkownika podczas przeglądania..........................................................594 Implem entacja systemu p łatn o ści........................................................................................... 594 Interfejs adm inistratora............................................................................................................. 595 Przegląd rozw iązania....................................................................................................................... 595 Implem entacja bazy danych............................................................................................................ 599 Implem entacja katalogu o n lin e...................................................................................................... 601 Przedstawianie k ategorii...........................................................................................................603 W yświetlanie książek danej kategorii.................................................................................... 605 Przedstawianie szczegółowych danych k sią ż k i................................................................... 607 Implem entacja koszyka na zakupy.................................................................................................608 Stosowanie skryptu pokaz_kosz.php..................................................................................... 608 Podgląd koszyka.........................................................................................................................611 Dodawanie produktów do koszyka.........................................................................................614 Zapisywanie uaktualnionego koszyka.................................................................................... 615 W yświetlanie podsum owania w pasku nagłów ka................................................................616 Pobyt w k asie.............................................................................................................................. 616 Implem entacja płatności ..................................................................................................................622 Implem entacja interfejsu adm inistratora...................................................................................... 624 Rozwijanie pro jek tu..........................................................................................................................631 Zastosowanie istniejącego system u................................................................................................632 W następnym rozdziale.................................................................................................................... 632
Spis treści
17
Rozdział 28. Tworzenie systemu zarzqdzania za w a rto ścią ....................................... 633 Problem ................................................................................................................................................633 W ymagania system u.........................................................................................................................634 Istniejące system y............................................................................................................................. 634 Edycja zawartości ............................................................................................................................ 634 Umieszczanie zawartości w sy stem ie.................................................................................... 635 Bazy danych czy p lik i?............................................................................................................. 636 Struktura d o kum entu.................................................................................................................636 Stosowanie m etadanych...................................................................................................................636 Form atowanie danych w yjściow ych............................................................................................. 637 Projekt/przegląd rozw iązania..........................................................................................................638 Projektowanie bazy danych............................................................................................................. 639 Implem entacja systemu zarządzania zaw artością....................................................................... 641 Fronton systemu..........................................................................................................................641 W nętrze system u.........................................................................................................................648 W yszukiwanie............................................................................................................................. 656 Ekran redaktora naczelnego..................................................................................................... 659 Rozwijanie pro jek tu..........................................................................................................................661 W następnym rozdziale.................................................................................................................... 661
Rozdział 29. Tworzenie serwisu p oczty e le ktro n iczn e jo p a rte g o na WWW
663
Problem ................................................................................................................................................663 Składniki rozw iązania...................................................................................................................... 664 Przegląd rozw iązania....................................................................................................................... 666 Konfiguracja bazy danych............................................................................................................... 667 Architektura sk ry p tu .........................................................................................................................669 Logowanie i w ylogow anie.............................................................................................................. 674 Konfiguracja k o n t............................................................................................................................. 677 Tworzenie nowego k o n ta..........................................................................................................679 M odyfikacja istniejącego k o n ta .............................................................................................. 681 Usuwanie k o n ta ..........................................................................................................................681 Odczytywanie poczty ....................................................................................................................... 682 W ybór k o n ta ............................................................................................................................... 682 Przeglądanie zawartości skrzynki........................................................................................... 684 Odczytywanie wiadomości pocztow ych............................................................................... 687 Przeglądanie nagłówków w iadom ości...................................................................................690 Usuwanie w iadom ości.............................................................................................................. 690 W ysyłanie w iadom ości.................................................................................................................... 692 W ysyłanie nowej w iadom ości.................................................................................................692 Odpowiadanie i przekazywanie poczty..................................................................................694 Rozwijanie pro jek tu..........................................................................................................................695 W następnym rozdziale.................................................................................................................... 696
Rozdział 30. Tworzenie m enedżera list p o czto w ych ...................................................697 Problem ................................................................................................................................................697 Składniki rozw iązania...................................................................................................................... 698 Konfiguracja bazy danych list i abonentów ..........................................................................698 W ysyłanie p lik ó w ...................................................................................................................... 699 W ysyłanie wiadomości z załącznikami..................................................................................699 Przegląd rozw iązania....................................................................................................................... 699 Konfiguracja bazy danych............................................................................................................... 701 Architektura sk ry p tu ........................................................................................................................ 704 Implem entacja lo gow ania............................................................................................................... 711 Tworzenie nowego k o n ta..........................................................................................................711 L ogow anie...................................................................................................................................714
18
PHP i MySQL. Tworzenie stron WWW. V a d e m e c u m profesjonalisty
Implem entacja funkcji użytkow nika............................................................................................. 716 Przeglądanie list..........................................................................................................................717 Przeglądanie informacji na tem at listy ...................................................................................721 Przeglądanie archiwum listy ....................................................................................................723 Zapisywanie i w ypisyw anie..................................................................................................... 724 Zmiana konfiguracji k o n ta....................................................................................................... 726 Zmiana h asła............................................................................................................................... 726 W ylogow anie.............................................................................................................................. 728 Implem entacja funkcji adm inistratora...........................................................................................728 Tworzenie nowej listy............................................................................................................... 729 W ysyłanie nowych w iadom ości.............................................................................................. 731 Obsługa wysyłania wielu p lik ó w ............................................................................................734 Podgląd w iadom ości..................................................................................................................737 Rozsyłanie w iadom ości............................................................................................................738 Rozwijanie pro jek tu..........................................................................................................................744 W następnym rozdziale....................................................................................................................745
Rozdział 31. Tworzenie forum WWW............................................................................... 747 Problem ................................................................................................................................................747 Składniki rozw iązania...................................................................................................................... 748 Przegląd rozw iązania....................................................................................................................... 749 Projektowanie bazy danych............................................................................................................. 751 Przeglądanie drzewa arty k u łó w ..................................................................................................... 753 Rozwijanie i zw ijanie................................................................................................................ 755 W yświetlanie artykułów ...........................................................................................................758 Korzystanie z klasy w ezel_drzew a.........................................................................................759 Przeglądanie pojedynczych artykułów ..........................................................................................765 Dodawanie nowych artykułów ....................................................................................................... 767 R ozszerzenia...................................................................................................................................... 773 W ykorzystanie istniejącego system u............................................................................................. 773 W następnym rozdziale....................................................................................................................774
Rozdział 32. Tworzenie d oku m e n tó w spersonalizow anych w fo rm a cie PDF
775
Problem ................................................................................................................................................775 Ocena formatów dokum entów ................................................................................................ 776 Składniki rozw iązania...................................................................................................................... 780 System pytań i odpow iedzi...................................................................................................... 781 Oprogramowanie generujące dokum enty.............................................................................. 781 Przegląd rozw iązania....................................................................................................................... 784 Zadawanie p y tań........................................................................................................................ 785 Ocena o dpow iedzi..................................................................................................................... 786 Tworzenie certyfikatu R T F ...................................................................................................... 789 Tworzenie certyfikatu PD F z szablonu..................................................................................792 Generowanie dokumentu PDF za pom ocą PD Flib.............................................................. 795 Skrypt „Witaj świecie” dla P D F lib .........................................................................................796 Tworzenie certyfikatu za pom ocą PD Flib............................................................................. 800 Problemy związane z nagłów kam i.................................................................................................807 Rozwijanie pro jek tu..........................................................................................................................807 Propozycje dalszych le k tu r............................................................................................................. 807 W następnym rozdziale.................................................................................................................... 808
Rozdział 33. Korzystanie z usług sie cio w ych za p o m o c ą XML i SOAP...................809 Problem ................................................................................................................................................809 Podstawy X M L ...........................................................................................................................810 Podstawy usług sieciow ych..................................................................................................... 814
Spis treści
19
Składniki rozw iązania...................................................................................................................... 816 Konstrukcja koszyka na zakupy.............................................................................................. 816 Korzystanie z interfejsu usług sieciowych A m azon.com ................................................... 816 W czytywanie dokumentów X M L ........................................................................................... 817 Korzystanie z SOAP za pom ocą P H P .................................................................................... 817 B uforow anie............................................................................................................................... 818 Opis rozw iązania................................................................................................................................818 Aplikacj a g łów na....................................................................................................................... 821 W yświetlanie listy książek z danej k ateg o rii........................................................................827 Tworzenie obiektu klasy W ynikiW yszukiwania..................................................................829 Korzystanie z REST/przesyłania dokumentów X M L .........................................................835 Korzystanie z protokołu SO AP................................................................................................840 Buforowanie danych..................................................................................................................841 Konstrukcja koszyka na zakupy.............................................................................................. 843 Przejście do kasy na witrynie A m azon.com ..........................................................................846 Instalacja kodu źródłowego............................................................................................................. 847 Kierunki ro zw o ju .............................................................................................................................. 847 Literatura............................................................................................................................................. 848
D o d a tk i.................................................................................................. 849 D odatek A
Instalacja PHP i MySQL.............................................................................. 851 Uruchamianie PHP jako CGI lub m odułu serw era..................................................................... 852 Instalacja Apache, PHP i M ySQL w systemie U N IX ................................................................852 Instalacja przy użyciu b in arió w .............................................................................................. 852 Instalacja przy użyciu kodów źródłow ych............................................................................ 853 Plik httpd.conf — informacje k o ń co w e.................................................................................859 Czy obsługa PHP działa popraw nie?..................................................................................... 860 Czy SSL działa popraw nie?..................................................................................................... 861 Instalacja Apache, PHP i M ySQL w systemie W indow s..........................................................862 Instalacja MySQL w systemie W indow s.............................................................................. 862 Instalacja serwera Apache w systemie W indow s.................................................................866 Instalacja PHP w systemie W indow s..................................................................................... 868 Instalowanie P E A R ...........................................................................................................................871 Inne konfiguracje.............................................................................................................................. 872
P H P ..................................................................................................................873 M ySQL i SQL............................................................................................... 875 serwerowi A p a c h e ....................................................................................... 876 tworzeniu stron W W W ................................................................................876
S korow idz......................................................................................................877
O Autorach Laura Thomson prowadzi wykłady z programowania WWW na Wydziale Nauk Kompu terowych Uniwersytetu RMIT w Melbourne w Australii. Jest również współwłaścicielką zdobywającej wyróżnienia firmy Tangled Web Design zajmującej się tworzeniem aplika cji WWW. Poprzednio pracowała w firmach Telstra oraz Boston Consulting Group. Uzy skała stopień magistra stosowanych nauk komputerowych, a także ukończyła z wyróżnie niem studia inżynierskie w dziedzinie systemów komputerowych. Obecnie kończy studia doktoranckie w zakresie adaptywnych witryn WWW. Wolny czas przeznacza głównie na sen. Adres poczty elektronicznej Laury Thomson: laura@ tangledveb.com.au. Luke Welling jest starszym programistą WWW w MySQL AB — firmie, która produkuje bazę danych MySQL. Wcześniej Luke był wykładowcą inżynierii oprogramowania oraz e-commerce na Wydziale Inżynierii Systemów Elektrycznych i Komputerowych Uniwer sytetu Melbourne w Australii i przez wiele lat pracował jako programista. Uzyskał stopień magistra w dziedzinie stosowanych nauk komputerowych. W wolnym czasie stara się doprowadzić do perfekcji swoją bezsenność. Adres poczty elektronicznej Luke'a Wellinga: luke@tangledweb. com. au.
O Współautorach Israel Denis Jr. jest niezależnym konsultantem, pracującym nad projektami związanymi z e-commerce na całym świecie. Specjalizuje się w integrowaniu pakietów ERP, takich jak SAP i Lawson, z konkretnymi rozwiązaniami WWW. W chwilach wolnych od tworze nia oprogramowania i pisania książek Israel podróżuje po Włoszech — kraju, któiy traktuje jak swoją ojczyznę. W 1998 roku ukończył studia inżynierskie w dziedzinie elektroniki na Uniwersytecie Georgia Tech w Atlancie (Georgia). Jest autorem licznych artykułów na temat Linuksa, Apache’a, PHP i MySQL. Pracował dla takich firm, jak General Electric i Procter&Gamble, zajmując się głównie systemami komputerowymi opartymi na systemie Unix. Jego adres poczty elektronicznej: idenis@ ureach.com. Chris Newman jest programistą-konsultantem specjalizującym się w tworzeniu dynamicz nych aplikacji internetowych. Zdobył bogate doświadczenie w komercyjnym wykorzystaniu PHP i MySQL, stosowanych do stworzenia szerokiego zakresu aplikacji dla klientów na całym świecie. Jest absolwentem Uniwersytetu Keele, mieszka w Stoke-on-Trent w Anglii, gdzie prowadzi firmę Lightwood Consultancy Ltd. Firmę tę założył w celu dalszego pogłębiania
22
PHP i MySQL. Tworzenie stron WWW. V a d e m é c u m profesjonalisty
swych zainteresowań związanych z programowaniem dla sieci Internet. Chris zafascynował się potęgą Internetu w trakcie studiów, a możliwość korzystania z najnowszych technolo gii ekscytuje go. Szczegółowe informacje na temat Lightwood Consultancy Ltd. są dostępne pod adresem: http://www.lightwood.net. Adres jej właściciela: [email protected].
Wprowadzenie „PHP i MySQL. Tworzenie stron WWW” przedstawia szczegółowo wiedzę nabytą dzięki doświadczeniu autorów w wykorzystaniu PHP i MySQL, jednych z najlepszych dostępnych narzędzi służących do tworzenia stron WWW. We wprowadzeniu tym poruszymy następujące tematy: ■ Dlaczego warto przeczytać tę książkę? ■ Korzyści wynikające z lektury tej książki. ■ Czym są PHP i MySQL i jakie są ich zalety? ■ Przegląd nowych własności PHP5.0 i MySQLS.O. ■ Układ książki. A więc zaczynajmy.
Dlaczego warto przeczytać tę książkę? W „PHP i MySQL. Tworzenie stron WWW” prezentujemy metody tworzenia interaktyw nych witryn WWW, począwszy od najprostszego formularza zamówienia, a skończywszy na złożonych bezpiecznych witrynach związanych z e-commerce. Co więcej, książka uczy tych umiejętności, odwołując się do technologii Open Source. Odbiorcami „PHP i MySQL. Tworzenie stron WWW” są czytelnicy znający przynajm niej podstawy HTML i posiadający pewne doświadczenie w dziedzinie nowoczesnych języków programowania, choć niekonieczne piszący programy dla Internetu lub wykorzy stujący relacyjne bazy danych. Początkujący programiści również mogą skorzystać z tej książki, ale wówczas zrozumienie jej treści może im zająć nieco więcej czasu. Autorzy starali się nie opuszczać żadnych podstawowych pojęć, zostały one jednak przedstawio ne w znacznym skrócie. Typowym adresatem książki jest osoba pragnąca opanować PHP i MySQL w celu tworzenia dużej lub komercyjnej witryny WWW. Jeżeli Czytelnik zna już inny język programowania WWW, książka powinna być znacznie łatwiejsza w odbiorze. Autorzy postawili sobie za cel napisanie książki o PHP, która nie byłaby jedynie przeglą dem funkcji. Na rynku są wprawdzie dostępne inne pożyteczne publikacje na ten temat, lecz okazują się one nieprzydatne w dziedzinie praktycznych zastosowań (np. utworzenie
24
PHP i MySQL. Tworzenie stron WWW. V a d e m é c u m profesjonalisty
koszyka na zakupy). Dołożono wszelkich starań, aby każdy przedstawiony przykład był instruktywny. Wiele przykładów kodu może zostać bezpośrednio zastosowanych w wi trynie WWW. inne zaś wymagają jedynie nieznacznych modyfikacji.
Korzyści w ynikające z lektury tej książki Zapoznanie się z treścią książki umożliwi tworzenie rzeczywistych dynamicznych witryn WWW. Osoby tw orzące witryny WWW za pom ocą czystego kodu HTML na pewno zdają sobie sprawę z ograniczeń tego ujęcia. Statyczna zawartość witryny WWW utworzo nej w czystym HTML jest właśnie... statyczna — pozostaje niezmieniona, dopóki nie nastąpi jej fizyczna aktualizacja. Użytkownicy nie m ogą wykonywać interakcji z nią w żaden sensowny sposób. Wykorzystanie języka (takiego ja k PHP) i bazy danych (takiej jak MySQL) pozwala na tworzenie witryn dynamicznych — mogą one być dostosowywane i zawierać aktualne informacje. Autorzy książki celowo skupiają się na rzeczywistych aplikacjach, nawet w rozdziałach wprowadzających. Na początku opisują prosty system zamówień online, po czym oma wiają różne elementy PHP i MySQL. W dalszej kolejności autorzy prezentują aspekty e-commerce i bezpieczeństwa odnoszące się do tworzenia prawdziwej witryny WWW, a także przedstawiają implementację tych aspektów za pom ocą PHP i MySQL. Ostatnia część książki opisuje fazy planowania, projektowania i implementowania na stępujących projektów: ■ Uwierzytelnianie użytkowników i personalizacja. ■ Koszyki na zakupy. ■ Systemy zarządzania zawartością. ■ Poczta elektroniczna oparta na WWW. ■ Menedżery list dystrybucyjnych. ■ Forum WWW. ■ Generacja dokumentów PDF. ■ Łączenie się z usługami WWW za pom ocą XM L i SOAP. Każdy z nich powinien być użyteczny w formie, w jakiej zostanie opisany, lub może ulec modyfikacji w celu dostosowania do konkretnych potrzeb. Zostały one wybrane, ponie waż zdaniem autorów przedstawiają siedem najczęściej tworzonych przez programistów aplikacji WWW. Nawet jeżeli potrzeby odbiorców są inne, książka powinna pomóc w osią gnięciu tych celów.
W prow adzenie
25
Czym jest PHP? PHP jest językiem skryptowym działającym po stronie serwera. N a stronie HTML można osadzić kod PHP. który zostanie wykonany, ilekroć strona jest odwiedzana. Kod PHP jest interpretowany przez serwer WWW i tworzy on HTML lub inne wyniki, które zo baczy odwiedzający. PHP, utworzony w 1994 roku, jest dziełem jednego człowieka, Rasmusa Lerdorfa. Język ten uległ w późniejszym czasie trzem poważnym modyfikacjom, których wynikiem jest obecny dojrzały produkt o szerokich zastosowaniach. W sierpniu 2004 roku PHP był wykorzystywany w ponad 17 milionach domen i liczba ta gwałtownie rośnie. Aktualna liczba jest dostępna na stronie http://www.php.net/usage.php. PHP jest produktem Open Source. Oznacza to dostęp do jego kodu źródłowego, który można bezpłatnie wykorzystywać, zmieniać i redystrybuować. Skrót PHP początkowo oznaczał Personal Home Page (Osobista Strona Domowa), został jednak zmieniony zgodnie z rekursywną konwencją nadawania nazw GNU (GNU = Gnu's Not Unix — Gnu Nie Unix) i oznacza obecnie PHP Hypertext Preprocessor (PHP Pre procesor Hipertekstu). Obecnie głów ną wersją PHP jest wersja 5. W wersji tej od nowa napisano moduł Zend, a także dokonano istotnych ulepszeń w samym języku. Główna strona PHP je st dostępna pod adresem http://www.php.net (strona w Polsce: http://pl.php.net). Główna strona Zend to http:// www.zend.com.
Czym jest MySQL? MySQL (wym. Maj-Es-Kiu-El) jest bardzo szybkim, solidnym systemem zarządzania rela cyjnymi bazami danych (relational database management system — RDBMS). Baza danych umożliwia wydajne przechowywanie, przeszukiwanie, sortowanie i odczytywanie danych. Serwer MySQL kontroluje dostęp do nich w celu zapewnienia równoczesnego dostępu wielu użytkownikom, zagwarantowania szybkiego dostępu oraz dostępu jedynie dla uwie rzytelnionych użytkowników. Oznacza to, że MySQL jest serwerem wielodostępnym i wielowątkowym. Wykorzystuje SOL (Structured Query Language — Strukturalny Język Z apytań), standardowy dla całego świata język zapytań bazy danych. MySQL jest do stępny publicznie od 1996 roku, ale historia jego tworzenia sięga roku 1979. Jest to najpo pularniejsza obecnie baza danych o otwartym dostępie do kodu źródłowego, która wielo krotnie zdobywała nagrodę Reader's Choice Award, przyznawaną przez czasopismo „Linux Journal”. MySQL jest dostępny w dwóch licencjach. Można go używać na podstawie licencji Open Source (GPL), czyli za darmo, jeśli tylko spełnione zostaną wszystkie warunki zawarte w licencji tego typu. Jeśli natomiast MySQL ma być dystrybuowany wraz z aplikacją, która nie podlega warunkom licencji GPL, można uzyskać jego licencje komercyjne.
26
PHP i MySQL. Tworzenie stron WWW. v a d e m é c u m profesjonalisty
Dlaczego warto wykorzystywać PHP i MySQL? Przystępując do tworzenia witryny związanej z e-commerce, należy zastanowić się nad wyborem różnych produktów. Trzeba wybrać następujące elementy: ■ sprzęt dla serwera WWW, ■ system operacyjny, ■ oprogramowanie serwera WWW, ■ system zarządzania bazami danych, ■ język programowania lub skryptowy. Niektóre z powyższych wyborów są zależne od innych. Na przykład nie wszystkie sys temy operacyjne pracują na dowolnym sprzęcie, nie wszystkie języki skryptowe mogą łączyć się z wszystkimi bazami danych itd. Autorzy książki poświęcili niewiele uwagi sprzętowi, systemowi operacyjnemu i oprogra mowaniu serwera WWW. gdyż nie było to konieczne. Jedną z najbardziej przydatnych własności PHP i MySQL jest ich dostępność w wersjach dla wszystkich najważniejszych systemów operacyjnych oraz wielu systemów rzadziej używanych. W celu zademonstrowania tych własności przykłady przedstawione w książce zostały sprawdzone z dwiema popularnymi konfiguracjami. Są to: ■ Linux i serwer W WW Apache, ■ Microsoft Windows XP i Microsoft Internet Information Server (IIS). N iezależnie od użytkowanego sprzętu, systemu operacyjnego i serwera WWW należy — zdaniem autorów — poważnie rozważyć wykorzystanie PHP i MySQL.
Niektóre zalety PHP Do głównych konkurentów PHP należą: Perl, Microsoft Active Server Pages (ASP), Java Server Pages (JSP) i Cold Fusion. W porównaniu z tymi produktami PHP posiada wiele zalet. Są to między innymi: ■ wysoka wydajność, ■ interfejsy do wielu różnych systemów baz danych, ■ wbudowane biblioteki służące do rozwiązywania różnych popularnych zadań WWW, ■ niski koszt. ■ łatwość nauki i wykorzystania, ■ szeroka obsługa mechanizmów zorientowanych obiektowo, ■ przenośność.
W prow adzenie
27
■ dostępność kodu źródłowego, ■ dostępność wsparcia. Poniżej przedstawiamy szczegółowy opis tych zalet.
W ydajn ość PHP jest bardzo wydajny. Za pomocą pojedynczego niedrogiego serwera można obsłużyć wiele odwiedzin dziennie. Jeśli użytych zostanie wiele serwerów, wydajność PHP stanie się praktycznie nieograniczona. Testy wydajności opublikowane przez Zend Technologies (http://www.zend.com) świadczą o znacznej przewadze PHP w tej dziedzinie.
In te g ra c ja z b a za m i d a n y c h PHP umożliwia bezpośrednią obsługę połączeń z wieloma systemami baz danych. Oprócz MySQL należą do nich PostgreSQL, mSQL. Oracle, dbm. filePro. Hyperwave. Informix. InterBase, Sybase i wiele innych. PHP5 zawiera dodatkowo wbudowany interfejs do pli ków płaskich, noszący nazwę SQLite. Za pomocą Open Database Connectivity Standard (Otwarty Standard Łączności z Bazami Danych — ODBC) można łączyć się dowolną bazą danych posiadającą sterownik ODBC. Zalicza się do nich m.in. produkty Microsoftu, a także wiele innych.
W b u d o w a n e b ib lio te k i Ponieważ PHP został zaprojektowany do stosowania w sieci WWW, posiada wiele wbudo wanych funkcji służących do wykonywania zadań z nią związanych. Za pomocą zaledwie kilku wierszy kodu możliwe jest tworzenie „w locie” obrazków GIF, łączenie z innymi usługami sieciowymi, parsowanie języka XML, wysyłanie poczty elektronicznej, praca z cookies oraz generowanie dokumentów PDF.
Koszt PHP jest bezpłatne. M ożna w dowolnym momencie pobrać najnowszą wersję ze strony http://www.php.net bez żadnych opłat.
Łatw ość n a u ki PHP Składnia PHP jest oparta na innych językach programowania, zwłaszcza na C i Perlu. Osoby znające wcześniej C lub Perlą (lub inny, podobny do C język, taki jak C++ lub Java) m ogą posługiwać się PHP niemal od zaraz.
O bsługa m e c h a n iz m ó w zo rie n to w a n y c h o b ie k to w o PHP w wersji 5 posiada wydajne mechanizmy zorientowane obiektowo. Czytelnicy, którzy ju ż wcześniej uczyli się programować w językach Java lub C++, znajdą w PHP znane
28
PHP i MySQL. Tworzenie stron WWW. V a d e m é c u m profesjonalisty
ju ż sobie mechanizmy, takie jak dziedziczenie, atrybuty i metody prywatne oraz chro nione, klasy i metody abstrakcyjne, interfejsy, konstruktory i destruktory. Oprócz nich istnieją również mechanizmy mniej powszechne, na przykład wbudowane mechanizmy iteracji. Niektóre z tych możliwości były ju ż obecne w wersjach 3 i 4 PHP, lecz dopiero w PHP5 obsługa mechanizmów zorientowanych obiektowo stała się niemal kompletna.
Przenośność PHP jest dostępne dla wielu systemów operacyjnych. Kod PHP może być tworzony na dar mowym. podobnym do Uniksa systemie operacyjnym, takim jak Linux i FreeBSD, na komercyjnych wersjach Uniksa, takich jak Solaris i IRIX, oraz na różnych wersjach Micro soft Windows. Kod zazwyczaj będzie działał, bez konieczności dokonywania zmian, w różnych syste mach obsługujących PHP.
Kod źró dłow y Użytkownik posiada dostęp do kodu źródłowego PHP. Inaczej niż w przypadku progra mów komercyjnych, nie ma przeciwwskazań, jeżeli zachodzi konieczność modyfikacji lub dodania własności do języka. Nie trzeba czekać, aż producent udostępni programy korygujące. Nie ma również znacze nia, że zaprzestanie działalności lub zdecyduje się na zakończenie obsługi produktu.
D ostępność w sp a rcia Zend Technologies (www.zend.com), firma, która stworzyła moduł stanowiący serce PHP. finansuje dalszy rozwój tego języka, oferując wsparcie techniczne i dodatkowe oprogra mowanie na zasadach komercyjnych.
Co nowego w PHP5.0? Wiele osób zastąpiło ostatnio wersję PHP4.X nową wersją PHP5.0. Jak można się było spodziewać, nowa wersja główna uległa poważnym zmianom. Moduł Zend, stanowiący podstawę PHP, został całkowicie przepisany. Wśród innych ważnych własności PHP można wymienić następujące: ■ lepsza obsługa mechanizmów zorientowanych obiektowo, oparta na zupełnie nowym modelu obiektów (więcej na ten temat w rozdziale 6. — „Obiektowy PHP”), ■ dostępność wyjątków pozwalających na skalowalną i łatw ą w utrzymaniu obsługę błędów (więcej na ten temat w rozdziale 7. — „Obsługa wyjątków”), ■ obecność biblioteki SimpleXML, dzięki której można łatwo obsługiwać dane w formacie XML (więcej na ten tem at w rozdziale 33. — „Korzystanie z usług sieciowych za pom ocą XML i SOAP”).
W prow adzenie
29
Inne zmiany polegały na przesunięciu niektórych rozszerzeń z domyślnej instalacji PHP do biblioteki PECL. ulepszeniu obsługi strumieni i dodaniu rozszerzenia SQLite.
Niektóre zalety MySQL Do głównych konkurentów MySQL należą: PostgreSQL, Microsoft SQL Server i Oracle. MySQL posiada wiele zalet, do których należą między innymi: ■ wysoka wydajność, ■ niski koszt, ■ łatwość konfiguracji i nauki, ■ przenośność, ■ dostępność kodu źródłowego, ■ dostępność wsparcia. Poniżej znajduje się ich szczegółowy opis.
W ydajność MySQL jest niewątpliwie szybki. Strona testów programistycznych jest dostępna pod adre sem http://web.mysql.com/benchmark.html. Wiele z nich pokazuje wielokrotną przewagę MySQL nad konkurencją. W 2002 roku magazyn eWeek opisał test, w którym porównano pięć baz danych stanowiących podstawy aplikacji WWW. Najlepsze wyniki osiągnęły właśnie MySQL oraz o wiele droższy serwer Oracle.
Niski koszt MySQL jest dostępny bezpłatnie, na licencji Open Source, lub za niską cenę w ramach licencji komercyjnej. Jeżeli MySQL ma być rozprowadzany wraz z aplikacją, która nie będzie podlegać licencji Open Source, trzeba zakupić licencję na serwer. Jeśli jednak tworzona aplikacja nie będzie dystrybuowana lub oprogramowanie będzie miało charakter darmowy, kupno takiej licencji nie będzie konieczne.
Łatwość w ykorzystania Większość nowoczesnych baz danych wykorzystuje SQL. Osoby, które stosowały wcze śniej inne RDBMS, nie powinny mieć żadnych problemów z jego przyswojeniem. MySQL jest również łatwiejszy w konfiguracji niż wiele podobnych produktów.
Przenośność MySQL może być wykorzystywany w różnych systemach Uniksowych. a także w Micro soft Windows.
30
PHP i MySQL. Tworzenie stron WWW. V a d e m é c u m profesjonalisty
Kod źró d ło w y Podobnie jak w przypadku PHP, można pobrać i modyfikować kod źródłowy MySQL. Zwykle nie ma to specjalnego znaczenia dla większości użytkowników, lecz sam fakt po siadania dostępu do kodu źródłowego pozwala ze spokojem patrzeć w przyszłość, po nieważ stanowi gwarancję, że serwer będzie nadal rozwijany, a w nagłych przypadkach znacznie łatwiej przyjdzie rozwiązywać ewentualne problemy.
D ostępność w sp a rcia Nie wszystkie produkty o otwartym dostępie do kodu źródłowego m ają swą firmę ma cierzystą. która zapewniałaby wsparcie techniczne, szkolenia, konsultacje i certyfikacje. W przypadku MySQL wszystkie te usługi można uzyskać od firmy MySQL AB (www. mysql.com).
Co nowego w MySQL5.0? Najważniejsze zmiany w MySQL5.0 to: ■ obecność procedur składowanych (więcej na ten temat w rozdziale 13. — „Zaawansowane programowanie w MySQL”), ■ obsługa kursorów. Inne zmiany związane są ze zwiększeniem zakresu zgodności ze standardem ANSI oraz przyspieszeniem pracy serwera. Jeżeli nadal używana jest wczesna wersja 4.x lub któraś z wersji 3.x serwera MySQL, należy pamiętać, że począwszy od wersji 4.0 produkt ten wzbogacono o następujące mechanizmy: ■ obsługa podzapytań, ■ typy GIS służące do przechowywania danych geograficznych. ■ ulepszona obsługa różnych wersji lokalizacyjnych, ■ standardowa dostępność modułu InnoDB, zapewniającego przechowywanie danych z wykorzystaniem transakcji, ■ pamięć podręczna zapytań MySQL, dzięki której znacznie zwiększono prędkość w ykonywania powtarzalnych zapytań, tak często używanych w ramach aplikacji WWW.
Układ książki Książka została podzielona na pięć części. Część I, „Stosowanie PHP”, zawiera przegląd głównych elementów języka PHP wraz z przykładami. Każdy jest przykładem rzeczywistym, wykorzystywanym przy tworzeniu witryny związanej z e-commerce, nie zaś kodem „zabawkowym”. Część ta rozpoczyna
W prow adzenie
31
się od rozdziału 1., „Podstawowy kurs PHP”. Osoby, które posługują się PHP. mogą ogra niczyć się do pobieżnego przejrzenia tej części. Czytelnicy nie znający tego języka ,'ub roz poczynający dopiero naukę programowania powinni poświęcić jej nieco więcej uwagi. Jednak nawet osoby całkiem nieźle znające PHP zechcą zapewne przeczytać rozdział 6. — „Obiektowy PHP” — ze względu na daleko idące zmiany w obsłudze mechanizmów zorientowanych obiektowo. Część II, „Stosowanie MySQL”, zawiera opis pojęć i projektowania związanych z wyko rzystaniem systemów relacyjnych baz danych, takich jak MySQL, wykorzystaniem SQL. łączeniem bazy danych MySQL ze światem za pomocą PHP oraz zaawansowanymi te matami dotyczącymi MySQL, takimi jak bezpieczeństwo i optymalizacja. Część III. „E-commerce i bezpieczeństwo”, zawiera opis ogólnych kwestii związanych z tworzeniem witryny e-commerce w dowolnym języku. Najważniejszym z tych proble mów jest bezpieczeństwo. W dalszych częściach przedstawiamy sposoby wykorzystania PHP i MySQL do uwierzytelniania użytkowników i bezpiecznego gromadzenia, transmi sji i przechowywania danych. Część IV, „Zaawansowane techniki PHP”, zawiera szczegółowy opis niektórych podsta wowych, wbudowanych funkcji PHP. Autorzy wybrali grupy funkcji wykorzystywane zazwyczaj do tworzenia witryny e-commerce. Opisane zostały: interakcja z serwerem, inter akcja z siecią generowanie obrazków, manipulacje datą i godziną oraz zmienne sesji. Część V, „Tworzenie praktycznych projektów PHP i MySQL”, to nasza ulubiona część. Zawiera ona opis kwestii praktycznych, takich jak zarządzanie dużymi projektami i usuwa nie błędów. Przedstawia także przykładowe projekty świadczące o efektywności i wszech stronnych możliwościach PHP i MySQL.
Kody źródłowe Kody źródłowe przykładowych programów zawartych w tej książce można znaleźć na płycie CD dołączonej do książki.
Uwagi końcowe Autorzy m ają nadzieję, że czytelnicy, za ich przykładem, polubią naukę PHP i MySQL. Korzystanie z tych produktów jest naprawdę satysfakcjonujące. Czytelnik, który przyswoi sobie wiedzę przedstawioną w tej książce, może dołączyć do tysięcy programistów WWW sięgających po te solidne i skuteczne narzędzia, aby bez trudu tworzyć rzeczywiste, dynamiczne strony WWW.
Rozdział 1.
Podstawowy kurs PHP Rozdział ten to krótki przegląd składni i konstrukcji języka PHP. Dlatego też osoby posłu gujące się tym językiem mogą uzupełnić ewentualne luki w wiedzy. Użytkownicy, którzy znają inne języki programowania, takie jak C lub Active Server Pages (ASP), z pewnością nabiorą wprawy w stosowaniu PHP. Książka ta wprowadza w arkana PHP poprzez analizę wielu przykładów z życia codzien nego, zaczerpniętych z doświadczeń autorów w tworzeniu witryn na potrzeby e-commerce. Podręczniki programowania często uczą podstawowej składni na bardzo prostych przy kładach, prezentują opisy składni i funkcji. My zaś pokazujemy stosowanie języka PHP w praktyce. Radzimy gruntownie przeanalizować przedstawione przykłady — wpisać je. wprowadzać modyfikacje, a potem nauczyć się usuwać błędy. Wszystkie przykłady są dostępne na pły cie CD dołączonej do książki. Rozdział ten rozpoczyna się od przykładowego elektronicznego formularza zamówień i na jego podstawie przedstawiono sposób używania zmiennych, operatorów i wyrażeń w PHP. Opisane są również typy zmiennych i reguły pierwszeństwa operatorów. Prezentujemy także sposoby dostępu do zmiennych formularza oraz metody manipulacji nimi w celu obliczenia sumy zamówienia klienta i podatku pobieranego od tej kwoty. W dalszej części przykładowy formularz zamówienia został rozwinięty poprzez dodanie skryptu PHP, który sprawdza poprawność wprowadzonych danych. Omówiona została idea wartości boolowskich oraz przykłady użycia instrukcji i f i ełse, operatora ?: oraz instrukcji switch. W końcowej części rozdziału znajduje się opis pętli — kod PHP generujący powtarzające się tablice HTML. W tym rozdziale zostaną poruszone następujące zagadnienia: ■ osadzanie PHP w HTML, ■ dodawanie zawartości dynamicznej, ■ dostęp do zmiennych formularza. ■ identyfikatory, ■ zmienne zadeklarowane przez użytkownika. ■ typy zmiennych,
36
Część I ♦ Stosowanie PHP
■ przypisywanie wartości zmiennym, ■ deklarowanie i używanie stałych, ■ zasięg zmiennych, ■ operatory i pierwszeństwo, ■ obliczanie wartości wyrażeń, ■ zarządzanie zmiennymi, ■ podejmowanie decyzji za pom ocą instrukcji i f, el se i swi tch, ■ wykorzystywanie iteracji — pętle whi 1e, do i for.
Zastosowanie PHP Praca nad przykładami przedstawionymi w tym rozdziale oraz w pozostałej części książki wymaga dostępu do serwera WWW z zainstalowanym PHP. Aby maksymalnie wykorzy stać przykłady i opisy konkretnych przypadków, należy je uruchomić i podjąć próbę mody fikacji. Żeby to zrobić, potrzebne jest miejsce do przeprowadzania testów. Jeżeli PHP nie jest zainstalowane, trzeba rozpocząć od zainstalowania go samodzielnie lub przez adm inistratora systemu. Instrukcja znajduje się w dodatku A, „Instalacja PHP5 i MySQL5”. Wszystkie komponenty niezbędne do zainstalowania PHP w systemach Unix lub Windows znajdują się na płycie CD dołączonej do książki.
Tworzenie przykładowej aplikacji: „Części sam ochodowe Janka” Do najbardziej popularnych zadań każdego obsługiwanego przez serwer języka skryp towego należy przetw arzanie formularzy HTML. Poznawanie PHP rozpoczynamy od implementacji formularza dla „Części samochodowych Janka”, fikcyjnej firmy zajmu jącej się sprzedażą części. Cały kod przykładów przedstawionych w tym rozdziale znaj duje się w katalogu o nazwie rozdziałJ)] (przykłady są dostępne na płycie CD dołączo nej do książki).
Formularz za m ó w ie n ia Programista HTML pracujący dla firmy Janka stworzył formularz zamówienia na czę ści, które Janek sprzedaje. Ten stosunkowo prosty formularz widoczny na rysunku 1.1 jest podobny do wielu innych istniejących w sieci WWW. Na początku Janek chciałby wie dzieć. co zamówił jego klient, obliczyć sumę tego zamówienia oraz ustalić kwotę podatku VAT od tego zamówienia. Część kodu HTML dla tego formularza jest przedstawiona na listingu 1.1.
Rozdział 1. ♦ Podstaw owy kurs PHP
Rysunek 1.1. Na początkowym formularzu zamówienia Janka zapisano jedynie produkty i ich ilość
Mk 6dyc)a Wdok y>ubTcrTT*io«.h(ml
- I>jtxxv-
37
muktwAs r7/: c l Priejd;
Goto«« Listing 1.1. tormularz.html — kod H I ML dla podstawowego formularza zamówienia Janka