PHP i MySQL. Tworzenie stron WWW.
Vademecum profesjonalisty
Wydanie czwarte
Autorzy: Luke Welling, Laura Thomson
TÅ‚umaczenie: 978-83-246-0821-8
ISBN: 83-7197-641-0
Tytuł oryginału: PHP and MySQL Web
Development, Fourth Edition
Format: 172×245, stron: 856
Kolejne, uaktualnione wydanie najbardziej znanego, bestsellerowego podręcznika dla
webmasterów na temat tworzenia dynamicznych witryn internetowych! Ponad 30 000
sprzedanych egzemplarzy poprzednich wydań!!! Recepta na sukces w przypadku
tworzenia profesjonalnych stron WWW jest niezwykle prosta: wystarczÄ… ogromne
możliwoSci PHP, niezrównana wydajnoSć MySQL i wielka, chętna do pomocy społecznoSć,
skupiona wokół tego tandemu. Wynik? Błyskawiczna realizacja zaawansowanych stron
i aplikacji internetowych. Wszystko, czego Ci jeszcze trzeba, to fachowa wiedza,
pozwalająca wykorzystać ten potencjał!
PHP i MySQL to jeden z najlepszych, najpopularniejszych zestawów do tworzenia
rozwiązań internetowych, a książka, którą trzymasz w rękach, to czwarte wydanie
bestsellerowego i kultowego już kompendium wiedzy na temat tych narzędzi. Dzięki niej
zorientujesz się w każdym z aspektów wykorzystania PHP wraz z bazą danych MySQL.
Poznasz język PHP, metody przechowywania i wyszukiwania danych oraz operacje na
plikach. Dowiesz się, jak tworzyć uniwersalny kod i sprawnie pracować z bazą danych.
Nauczysz się szybko lokalizować i rozwiązywać problemy oraz zapewniać bezpieczeństwo
aplikacjom, a także efektywnie stosować technologię AJAX. Podręcznik zawiera także
mnóstwo praktycznych przykładów, demonstrujących wykorzystanie PHP i MySQL do
realizacji różnych zadań związanych z funkcjonowaniem dynamicznych witryn WWW.
" Wybrane zalety PHP i MySQL
" Podstawy języka PHP
" Metody przechowywania i wyszukiwania danych
" Operacje na plikach
" Zastosowanie tablic
" Wykorzystanie wyrażeń regularnych oraz operacje na ciągach znaków
" Tworzenie uniwersalnego kodu -- ponowne jego wykorzystanie
" Obiekty w PHP
" Obsługa wyjątków i błędów
" Praca z bazÄ… danych MySQL
" Nawiązywanie połączenia z bazą z poziomu PHP
" Administracja MySQL
" Zaawansowane zagadnienia, zwiÄ…zane z bazÄ… MySQL
" Zapewnienie bezpieczeństwa tworzonym rozwiązaniom
" Metody uwierzytelniania przy użyciu PHP i MySQL
" Wykorzystanie protokołów i funkcji sieci
" Generowanie grafik
" Wykorzystanie sesji
" Obsługa poczty elektronicznej za pomocą PHP
" Użycie technologii AJAX
Kultowe kompendium wiedzy na temat tworzenia dynamicznych witryn!
Spis tre ci
O autorach ............................................................................................ 23
O wspó autorach .................................................................................. 25
Wprowadzenie ...................................................................................... 27
Cz I Stosowanie PHP ..................................................................37
Rozdzia 1. Podstawowy kurs PHP ........................................................................... 39
Zastosowanie PHP ...............................................................................................................40
Tworzenie przyk adowej aplikacji: Cz ci samochodowe Janka .....................................40
Formularz zamówienia ..................................................................................................40
Przetwarzanie formularza ..............................................................................................41
Osadzanie PHP w HTML ....................................................................................................42
Zastosowanie znaczników PHP .....................................................................................43
Instrukcje PHP ..............................................................................................................44
Odst py .........................................................................................................................44
Komentarze ...................................................................................................................45
Dodawanie zawarto ci dynamicznej ....................................................................................45
Wywo ywanie funkcji ...................................................................................................46
U ywanie funkcji date() ................................................................................................46
Dost p do zmiennych formularza ........................................................................................47
Zmienne formularza ......................................................................................................47
czenie ci gów ............................................................................................................49
Zmienne i ci gi znaków ................................................................................................50
Identyfikatory ......................................................................................................................51
Typy zmiennych ..................................................................................................................51
Typy danych w PHP ......................................................................................................51
Si a typu ........................................................................................................................52
Rzutowanie typu ............................................................................................................52
Zmienne zmiennych ......................................................................................................53
Deklarowanie i u ywanie sta ych ........................................................................................53
Zasi g zmiennych ................................................................................................................54
U ywanie operatorów ..........................................................................................................55
Operatory arytmetyczne ................................................................................................55
Operatory ci gów ..........................................................................................................56
Operatory przypisania ...................................................................................................56
Operatory porówna ......................................................................................................58
Operatory logiczne ........................................................................................................59
Operatory bitowe ...........................................................................................................60
Pozosta e operatory .......................................................................................................60
8 PHP i MySQL. Tworzenie stron WWW. Vademecum profesjonalisty
Obliczanie sum w formularzu ..............................................................................................62
Pierwsze stwo i kolejno ...................................................................................................63
Zarz dzanie zmiennymi .......................................................................................................65
Sprawdzanie i ustawianie typów zmiennych .................................................................65
Sprawdzanie stanu zmiennej .........................................................................................66
Reinterpretacja zmiennych ............................................................................................67
Podejmowanie decyzji za pomoc instrukcji warunkowych ...............................................67
Instrukcja if ...................................................................................................................67
Bloki kodu .....................................................................................................................68
Instrukcja else ...............................................................................................................68
Instrukcja elseif .............................................................................................................69
Instrukcja switch ...........................................................................................................69
Porównanie ró nych instrukcji warunkowych ...............................................................71
Powtarzanie dzia a przy u yciu iteracji .............................................................................71
P tle while .....................................................................................................................72
P tle for i foreach ..........................................................................................................73
P tle do..while ...............................................................................................................74
Wy amywanie si ze struktury skryptu ................................................................................75
U ywanie alternatywnych sk adni struktur steruj cych .......................................................75
U ywanie struktury declare .................................................................................................76
W nast pnym rozdziale .......................................................................................................76
Rozdzia 2. Przechowywanie i wyszukiwanie danych .......................................... 77
Zapisywanie danych do pó niejszego u ycia ......................................................................77
Przechowywanie i wyszukiwanie zamówie Janka .............................................................78
Przetwarzanie plików ..........................................................................................................79
Otwieranie pliku ..................................................................................................................79
Tryby otwarcia pliku .....................................................................................................79
Stosowanie funkcji fopen() do otwarcia pliku ...............................................................80
Otwieranie pliku przez protokó FTP lub HTTP ...........................................................82
Problemy z otwieraniem plików ....................................................................................82
Zapisywanie danych w pliku ...............................................................................................84
Parametry funkcji fwrite() .............................................................................................85
Formaty plików .............................................................................................................85
Zamykanie pliku ..................................................................................................................86
Odczyt z pliku .....................................................................................................................87
Otwieranie pliku w celu odczytu fopen() .................................................................89
Wiedzie , kiedy przesta feof() ................................................................................89
Odczytywanie pliku wiersz po wierszu fgets(), fgetss() i fgetcsv() ..........................89
Odczyt ca ego pliku readfile(), fpassthru(), file() .....................................................90
Odczyt pojedynczego znaku fgetc() .........................................................................91
Odczytywanie zadanej d ugo ci fread() ....................................................................91
Inne przydatne funkcje plikowe ...........................................................................................91
Sprawdzanie istnienia pliku file_exists() ..................................................................92
Okre lanie wielko ci pliku filesize() ........................................................................92
Kasowanie pliku unlink() .........................................................................................92
Poruszanie si wewn trz pliku rewind(), fseek() i ftell() ..........................................92
Blokowanie pliku ................................................................................................................93
Lepszy sposób obróbki danych systemy zarz dzania bazami danych ...........................94
Problemy zwi zane ze stosowaniem plików jednorodnych ...........................................95
Jak RDBMS rozwi zuj powy sze problemy? ..............................................................95
Propozycje dalszych lektur ..................................................................................................96
W nast pnym rozdziale .......................................................................................................96
Spis tre ci 9
Rozdzia 3. Stosowanie tablic .................................................................................. 97
Czym s tablice? ..................................................................................................................97
Tablice indeksowane numerycznie ......................................................................................98
Inicjowanie tablic indeksowanych numerycznie ...........................................................98
Dost p do zawarto ci tablicy .........................................................................................99
Dost p do tablic przy zastosowaniu p tli ....................................................................100
Tablice z innymi indeksami ...............................................................................................100
Inicjowanie tablicy ......................................................................................................100
Dost p do elementów tablicy ......................................................................................101
Stosowanie p tli ..........................................................................................................101
Operatory tablicowe ..........................................................................................................103
Tablice wielowymiarowe ..................................................................................................103
Sortowanie tablic ...............................................................................................................106
Stosowanie funkcji sort() ............................................................................................106
Stosowanie funkcji asort() i ksort() do porz dkowania tablic .....................................107
Sortowanie odwrotne ...................................................................................................107
Sortowanie tablic wielowymiarowych ...............................................................................108
Typy sortowa definiowane przez u ytkownika .........................................................108
Odwrotne sortowanie zdefiniowane przez u ytkownika .............................................109
Zmiany kolejno ci elementów w tablicach ........................................................................110
Stosowanie funkcji shuffle() .......................................................................................110
Stosowanie funkcji array_reverse() .............................................................................111
adowanie tablic z plików .................................................................................................112
Wykonywanie innych dzia a na tablicach ........................................................................114
Poruszanie si wewn trz tablicy
funkcje each(), current(), reset(), end(), next(), pos() i prev() .............................114
Do czanie dowolnej funkcji do ka dego elementu tablicy funkcja array_walk() ....115
Liczenie elementów tablicy: count(), sizeof() i array_count_values() .........................116
Konwersja tablic na zmienne skalarne funkcja extract() ........................................117
Propozycje dalszych lektur ................................................................................................118
W nast pnym rozdziale .....................................................................................................118
Rozdzia 4. Manipulowanie ci gami i wyra enia regularne .............................. 119
Przyk adowa aplikacja Inteligentny Formularz Pocztowy ...........................................119
Formatowanie ci gów .......................................................................................................121
Przycinanie ci gów funkcje chop(), ltrim() i trim() ................................................121
Formatowanie ci gów w celu ich prezentacji ..............................................................122
Formatowanie ci gów do przechowania funkcje addslashes() i stripslashes() ......125
czenie i rozdzielanie ci gów za pomoc funkcji ci gów ...............................................127
Stosowanie funkcji explode(), implode() i join() .........................................................127
Stosowanie funkcji strtok() .........................................................................................128
Stosowanie funkcji substr() .........................................................................................128
Porównywanie ci gów .......................................................................................................129
Porz dkowanie ci gów funkcje strcmp(), strcasecmp() i strnatcmp() ....................129
Sprawdzanie d ugo ci ci gu za pomoc funkcji strlen() ..............................................130
Dopasowywanie i zamiana podci gów za pomoc funkcji ci gów ...................................130
Znajdowanie ci gów w ci gach funkcje strstr(), strchr(), strrchr() i stristr() ..........131
Odnajdywanie pozycji podci gu funkcje strpos() i strrpos() ..................................131
Zamiana podci gów funkcje str_replace() i substr_replace() .................................132
Wprowadzenie do wyra e regularnych ............................................................................133
Podstawy .....................................................................................................................133
Zbiory i klasy znaków .................................................................................................134
Powtarzalno .............................................................................................................135
Podwyra enia ..............................................................................................................135
Podwyra enia policzalne .............................................................................................135
10 PHP i MySQL. Tworzenie stron WWW. Vademecum profesjonalisty
Kotwiczenie na pocz tku lub na ko cu ci gu ..............................................................136
Rozga zianie ..............................................................................................................136
Dopasowywanie specjalnych znaków literowych .......................................................136
Podsumowanie znaków specjalnych ...........................................................................137
Umieszczanie wszystkiego razem (Inteligentny Formularz) .......................................137
Odnajdywanie podci gów za pomoc wyra e regularnych .............................................138
Zamiana podci gów za pomoc wyra e regularnych ......................................................139
Rozdzielanie ci gów za pomoc wyra e regularnych .....................................................139
Propozycje dalszych lektur ................................................................................................140
W nast pnym rozdziale .....................................................................................................140
Rozdzia 5. Ponowne wykorzystanie kodu i tworzenie funkcji ........................... 141
Zalety ponownego stosowania kodu ..................................................................................141
Koszt ...........................................................................................................................142
Niezawodno .............................................................................................................142
Spójno ......................................................................................................................142
Stosowanie funkcji require() i include() ............................................................................142
Rozszerzenia plików i require() ...................................................................................143
Stosowanie require() w szablonach stron WWW ..............................................................144
Stosowanie opcji auto_prepend_file i auto_append_file .............................................148
Stosowanie funkcji w PHP ................................................................................................149
Wywo ywanie funkcji .................................................................................................149
Wywo anie niezdefiniowanej funkcji ..........................................................................151
Wielko liter a nazwy funkcji ....................................................................................152
Definiowanie w asnych funkcji .........................................................................................152
Podstawowa struktura funkcji ...........................................................................................152
Nadawanie nazwy funkcji ...........................................................................................153
Parametry ..........................................................................................................................154
Zasi g ................................................................................................................................156
Przekazanie przez referencj czy przekazanie przez warto ? ..........................................158
Stosowanie s owa kluczowego return ................................................................................159
Zwracanie warto ci przez funkcje .....................................................................................160
Implementacja rekurencji ..................................................................................................161
Przestrzenie nazw ........................................................................................................162
Propozycje dalszych lektur ................................................................................................163
W nast pnym rozdziale .....................................................................................................163
Rozdzia 6. Obiektowy PHP .................................................................................... 165
Koncepcje programowania obiektowego ...........................................................................165
Klasy i obiekty ............................................................................................................166
Polimorfizm ................................................................................................................167
Dziedziczenie ..............................................................................................................167
Tworzenie klas, atrybutów i operacji w PHP .....................................................................168
Struktura klasy ............................................................................................................168
Konstruktory ...............................................................................................................168
Destruktory ..................................................................................................................169
Tworzenie egzemplarzy .....................................................................................................169
Stosowanie atrybutów klasy ..............................................................................................170
Kontrolowanie dost pu przy u yciu private i public .........................................................172
Wywo ywanie operacji klas ...............................................................................................172
Implementacja dziedziczenia w PHP .................................................................................173
Kontrolowanie widoczno ci w trakcie dziedziczenia przy u yciu private i protected .174
Uniewa nianie .............................................................................................................175
Zapobieganie dziedziczeniu i uniewa nianiu przy u yciu final ..................................176
Wielodziedziczenie .....................................................................................................177
Implementowanie interfejsów .....................................................................................177
Spis tre ci 11
Tworzenie klas ..................................................................................................................178
Tworzenie kodu dla w asnej klasy .....................................................................................179
Zaawansowane mechanizmy obiektowe w PHP ................................................................186
U ywanie sta ych klasowych ......................................................................................186
Implementowanie metod statycznych .........................................................................186
Sprawdzanie typu klasy i wskazywanie typu ..............................................................186
Pó ne wi zania statyczne ............................................................................................187
Klonowanie obiektów .................................................................................................188
U ywanie klas abstrakcyjnych ....................................................................................188
Przeci anie metod przy u yciu __call() .....................................................................188
U ywanie metody __autoload() ..................................................................................189
Implementowanie iteratorów i iteracji .........................................................................190
Przekszta canie klas w a cuchy znaków ....................................................................191
U ywanie API Reflection ............................................................................................192
W nast pnym rozdziale .....................................................................................................192
Rozdzia 7. Obs uga b dów i wyj tków .............................................................. 195
Koncepcja obs ugi wyj tków .............................................................................................195
Klasa Exception .................................................................................................................196
Wyj tki definiowane przez u ytkownika ..........................................................................197
Wyj tki w Cz ciach samochodowych Janka ....................................................................200
Wyj tki i inne mechanizmy obs ugi b dów w PHP ..........................................................202
Propozycje dalszych lektur ................................................................................................203
W nast pnym rozdziale .....................................................................................................203
Cz II Stosowanie MySQL ...........................................................205
Rozdzia 8. Projektowanie internetowej bazy danych ........................................ 207
Koncepcje relacyjnych baz danych ...................................................................................208
Tabele ..........................................................................................................................208
Kolumny .....................................................................................................................208
Wiersze .......................................................................................................................208
Warto ci ......................................................................................................................208
Klucze .........................................................................................................................209
Schematy .....................................................................................................................209
Relacje .........................................................................................................................210
Jak zaprojektowa internetow baz danych? ...................................................................211
Okre l obiekty wiata realnego, których model chcesz wykona ................................211
Unikaj przechowywania redundantnych danych .........................................................211
Zapisuj atomowe warto ci kolumn ..............................................................................213
Dobierz w a ciwe klucze .............................................................................................214
Pomy l o zapytaniach, które zadasz bazie ...................................................................214
Unikaj tworzenia tabel z wieloma pustymi polami .....................................................214
Typy tabel podsumowanie ......................................................................................215
Architektura internetowej bazy danych .............................................................................215
Propozycje dalszych lektur ................................................................................................216
W nast pnym rozdziale .....................................................................................................216
Rozdzia 9. Tworzenie internetowej bazy danych ............................................... 217
U ytkowanie monitora MySQL ........................................................................................218
Logowanie si do serwera MySQL ...................................................................................219
Tworzenie baz i rejestrowanie u ytkowników ..................................................................220
Definiowanie u ytkowników i przywilejów ......................................................................220
12 PHP i MySQL. Tworzenie stron WWW. Vademecum profesjonalisty
Wprowadzenie do systemu przywilejów MySQL .............................................................221
Zasada najmniejszego przywileju ................................................................................221
Rejestrowanie u ytkowników: polecenie GRANT ......................................................221
Typy i poziomy przywilejów ......................................................................................223
Polecenie REVOKE ....................................................................................................224
Przyk ady u ycia polece GRANT i REVOKE ..........................................................225
Rejestrowanie u ytkownika cz cego si z internetu .......................................................226
U ywanie odpowiedniej bazy danych ...............................................................................226
Tworzenie tabel bazy danych ............................................................................................227
Znaczenie dodatkowych atrybutów kolumn ................................................................228
Typy kolumn ...............................................................................................................229
Rzut oka na baz danych polecenia SHOW i DESCRIBE .....................................231
Tworzenie indeksów ...................................................................................................232
Identyfikatory MySQL ......................................................................................................232
Wybór typów danych w kolumnach ..................................................................................233
Typy liczbowe .............................................................................................................233
Propozycje dalszych lektur ................................................................................................236
W nast pnym rozdziale .....................................................................................................237
Rozdzia 10. Praca z baz danych MySQL ............................................................. 239
Czym jest SQL? ................................................................................................................239
Zapisywanie danych do bazy .............................................................................................240
Wyszukiwanie danych w bazie ..........................................................................................242
Wyszukiwanie danych spe niaj cych okre lone kryteria ............................................243
Wyszukiwanie danych w wielu tabelach .....................................................................245
Szeregowanie danych w okre lonym porz dku ...........................................................249
Grupowanie i agregowanie danych .............................................................................250
Wskazanie wierszy, które maj by wy wietlone .......................................................252
U ywanie podzapyta .................................................................................................252
Dokonywanie zmian rekordów w bazie danych ................................................................255
Zmiana struktury istniej cych tabel ...................................................................................255
Usuwanie rekordów z bazy danych ...................................................................................257
Usuwanie tabel ..................................................................................................................257
Usuwanie ca ych baz danych .............................................................................................258
Propozycje dalszych lektur ................................................................................................258
W nast pnym rozdziale .....................................................................................................258
Rozdzia 11. czenie si z baz MySQL za pomoc PHP .................................... 259
Jak dzia a internetowa baza danych? .................................................................................259
Wykonywanie zapyta do bazy danych z poziomu strony WWW ....................................262
Sprawdzenie poprawno ci wpisanych danych .............................................................263
Ustanawianie po czenia z baz danych ......................................................................264
Wybór w a ciwej bazy danych ....................................................................................265
Wysy anie zapyta do bazy danych ............................................................................265
Odczytywanie rezultatów zapyta ...............................................................................266
Zamykanie po czenia z baz danych .........................................................................267
Wstawianie nowych danych do bazy .................................................................................267
U ywanie instrukcji przygotowywanych ...........................................................................270
U ywanie innych interfejsów bazodanowych PHP ...........................................................272
Stosowanie ogólnego interfejsu bazodanowego: PEAR MDB2 ..................................272
Propozycje dalszych lektur ................................................................................................274
W nast pnym rozdziale .....................................................................................................274
Spis tre ci 13
Rozdzia 12. Administrowanie MySQL dla zaawansowanych .............................. 275
Szczegó y systemu przywilejów ........................................................................................275
Tabela user ..................................................................................................................276
Tabele db i host ...........................................................................................................278
Tabele tables_priv, columns_priv i procs_priv ...........................................................278
Kontrola dost pu: w jaki sposób MySQL u ywa tabel przywilejów ...........................279
Zmiana przywilejów: kiedy zmiany zostan uwzgl dnione? ......................................281
Ochrona bazy danych ........................................................................................................282
MySQL z perspektywy systemu operacyjnego ...........................................................282
Has a ...........................................................................................................................282
Przywileje u ytkowników ...........................................................................................283
MySQL i internet ........................................................................................................283
Uzyskiwanie szczegó owych informacji o bazie danych ...................................................284
Uzyskiwanie informacji poleceniem SHOW ...............................................................284
Uzyskiwanie informacji o kolumnach za pomoc polecenia DESCRIBE ...................286
Jak wykonywane s zapytania: polecenie EXPLAIN ..................................................286
Optymalizowanie bazy danych ..........................................................................................291
Optymalizacja projektu bazy danych ..........................................................................291
Przywileje ....................................................................................................................291
Optymalizacja tabel .....................................................................................................291
Stosowanie indeksów ..................................................................................................292
U ywanie warto ci domy lnych ..................................................................................292
Wi cej wskazówek ......................................................................................................292
Tworzenie kopii zapasowej bazy danych MySQL ............................................................292
Przywracanie bazy danych MySQL ..................................................................................293
Implementowanie replikacji ..............................................................................................293
Konfigurowanie serwera nadrz dnego ........................................................................294
Transfer danych pocz tkowych ...................................................................................294
Konfigurowanie odbiorcy lub odbiorców ....................................................................295
Propozycje dalszych lektur ................................................................................................296
W nast pnym rozdziale .....................................................................................................296
Rozdzia 13. Zaawansowane programowanie w MySQL ...................................... 297
Instrukcja LOAD DATA INFILE .....................................................................................297
Maszyny zapisu .................................................................................................................298
Transakcje .........................................................................................................................299
Definicje dotycz ce transakcji .....................................................................................299
U ycie transakcji w InnoDB .......................................................................................300
Klucze obce .......................................................................................................................301
Procedury sk adowane .......................................................................................................302
Prosty przyk ad ............................................................................................................302
Zmienne lokalne ..........................................................................................................304
Kursory i struktury steruj ce .......................................................................................305
Propozycje dalszych lektur ................................................................................................308
W nast pnym rozdziale .....................................................................................................308
Cz III E-commerce i bezpiecze stwo ......................................309
Rozdzia 14. Komercyjne witryny internetowe ....................................................... 311
Co chcemy osi gn ? ........................................................................................................311
Rodzaje komercyjnych stron WWW .................................................................................311
Publikowanie informacji w broszurach internetowych ................................................312
Przyjmowanie zamówie na produkty i us ugi ............................................................315
Dostarczanie us ug lub wyrobów maj cych posta cyfrow .......................................319
14 PHP i MySQL. Tworzenie stron WWW. Vademecum profesjonalisty
Zwi kszanie warto ci produktów i us ug ....................................................................319
Ograniczanie kosztów .................................................................................................320
Ryzyko i zagro enia ..........................................................................................................320
Crackerzy ....................................................................................................................321
Przyci gni cie niewystarczaj cej liczby klientów .......................................................321
Awarie sprz tu komputerowego ..................................................................................322
Awarie sieci elektrycznych, komunikacyjnych i komputerowych
oraz systemu wysy kowego ......................................................................................322
Silna konkurencja ........................................................................................................322
B dy w oprogramowaniu ...........................................................................................323
Zmiany polityki rz dowej ...........................................................................................323
Ograniczenie pojemno ci systemów ...........................................................................323
Wybór strategii ..................................................................................................................323
W nast pnym rozdziale .....................................................................................................324
Rozdzia 15. Bezpiecze stwo komercyjnych stron WWW ..................................... 325
Jak wag maj posiadane przez nas informacje? .............................................................326
Zagro enia bezpiecze stwa ...............................................................................................326
Ujawnienie informacji poufnych .................................................................................327
Utrata lub zniszczenie danych .....................................................................................328
Modyfikacje danych ....................................................................................................329
Blokada us ugi .............................................................................................................330
B dy w oprogramowaniu ...........................................................................................331
Zaprzeczenie korzystania z us ugi ...............................................................................332
U yteczno , wydajno , koszty i bezpiecze stwo ...........................................................333
Opracowanie polityki bezpiecze stwa ...............................................................................333
Zasady uwierzytelniania ....................................................................................................334
Podstawy szyfrowania .......................................................................................................335
Szyfrowanie z kluczem prywatnym ............................................................................336
Szyfrowanie z kluczem publicznym ............................................................................337
Podpis cyfrowy ............................................................................................................338
Certyfikaty cyfrowe ...........................................................................................................339
Bezpieczne serwery WWW ...............................................................................................339
Monitorowanie i zapisywanie zdarze ..............................................................................340
Zapory sieciowe ................................................................................................................341
Tworzenie kopii zapasowych ............................................................................................342
Tworzenie kopii zapasowych zwyk ych plików ..........................................................342
Tworzenie kopii zapasowych i odzyskiwanie baz danych MySQL .............................342
Bezpiecze stwo fizyczne ...................................................................................................343
W nast pnym rozdziale .....................................................................................................343
Rozdzia 16. Bezpiecze stwo aplikacji internetowych ......................................... 345
Strategie zapewniania bezpiecze stwa ..............................................................................345
Planowanie z wyprzedzeniem .....................................................................................346
Równowaga mi dzy bezpiecze stwem i u yteczno ci ..............................................346
Monitorowanie bezpiecze stwa ..................................................................................347
Ogólne podej cie do bezpiecze stwa ..........................................................................347
Rozpoznawanie zagro e ..................................................................................................347
Dost p do danych poufnych i ich modyfikowanie ......................................................347
Utrata lub zniszczenie danych .....................................................................................348
Zablokowanie us ugi ...................................................................................................348
Wstrzykiwanie kodu ....................................................................................................349
Z amanie zabezpiecze dost pu do serwera ................................................................349
Identyfikacja u ytkowników .............................................................................................349
Crackerzy ....................................................................................................................350
Nie wiadomi u ytkownicy zainfekowanych komputerów ..........................................350
Spis tre ci 15
Rozczarowani pracownicy ..........................................................................................350
Z odzieje sprz tu komputerowego ..............................................................................350
Autorzy systemów .......................................................................................................350
Zabezpieczanie kodu ród owego ......................................................................................351
Filtrowanie danych pochodz cych od u ytkowników .................................................351
Uniewa nianie danych wynikowych ...........................................................................355
Organizacja kodu ród owego .....................................................................................356
Zawarto kodu ród owego .......................................................................................357
Zagadnienia dotycz ce systemu plików ......................................................................358
Stabilno kodu i b dy ...............................................................................................358
Apostrofy wykonywania polece systemu operacyjnego i polecenie exec .................359
Zabezpieczanie serwera WWW oraz PHP .........................................................................360
Regularne uaktualnianie oprogramowania ..................................................................361
Analiza ustawie w pliku php.ini ................................................................................362
Konfiguracja serwera WWW ......................................................................................362
Aplikacje internetowe dzia aj ce na serwerach komercyjnych ...................................364
Bezpiecze stwo serwera bazy danych ...............................................................................365
U ytkownicy i system uprawnie ...............................................................................365
Wysy anie danych do serwera .....................................................................................366
czenie si z serwerem ..............................................................................................366
Praca serwera ..............................................................................................................367
Zabezpieczanie sieci ..........................................................................................................367
Instalacja zapory sieciowej ..........................................................................................368
Wykorzystanie strefy zdemilitaryzowanej ..................................................................368
Przygotowanie na ataki DoS i DDoS ..........................................................................369
Bezpiecze stwo komputerów i systemów operacyjnych ...................................................369
Uaktualnianie systemu operacyjnego ..........................................................................369
Udost pnianie tylko niezb dnych us ug ......................................................................370
Fizyczne zabezpieczenie serwera ................................................................................370
Planowanie dzia a na wypadek awarii .............................................................................371
W nast pnym rozdziale .....................................................................................................372
Rozdzia 17. Uwierzytelnianie przy u yciu PHP i MySQL ........................................ 373
Identyfikacja u ytkowników .............................................................................................373
Implementacja kontroli dost pu ........................................................................................374
Przechowywanie hase dost pu ...................................................................................376
Szyfrowanie hase .......................................................................................................378
Zastrzeganie wi cej ni jednej strony ..........................................................................379
Podstawowa metoda uwierzytelniania ...............................................................................380
Wykorzystanie podstawowej metody uwierzytelniania w PHP .........................................381
Wykorzystanie podstawowej metody uwierzytelniania na serwerze Apache
przy u yciu plików .htaccess ..........................................................................................383
Wykorzystanie modu u mod_auth_mysql do celów uwierzytelniania ...............................386
Instalacja modu u mod_auth_mysql ............................................................................386
Praca z mod_auth_mysql ............................................................................................387
Implementacja w asnej metody uwierzytelniania ..............................................................388
Propozycje dalszych lektur ................................................................................................388
W nast pnym rozdziale .....................................................................................................389
Rozdzia 18. Zabezpieczanie transakcji przy u yciu PHP i MySQL ....................... 391
Zapewnienie bezpiecze stwa transakcji ............................................................................391
Komputer u ytkownika ...............................................................................................392
Internet ........................................................................................................................393
System docelowy ........................................................................................................394
Wykorzystanie protoko u Secure Sockets Layer (SSL) ....................................................395
Kontrola danych pochodz cych od u ytkownika ..............................................................398
16 PHP i MySQL. Tworzenie stron WWW. Vademecum profesjonalisty
Bezpieczne przechowywanie danych ................................................................................399
Ustalanie, czy powinno si przechowywa numery kart kredytowych ..............................400
Szyfrowanie danych w PHP ..............................................................................................401
Instalacja GPG ............................................................................................................401
Testowanie GPG .........................................................................................................404
Propozycje dalszych lektur ................................................................................................408
W nast pnej cz ci ............................................................................................................408
Cz IV Zaawansowane techniki PHP ..........................................409
Rozdzia 19. Interakcja z systemem plików i serwerem ....................................... 411
Wprowadzenie do wysy ania plików .................................................................................411
Kod HTML s u cy do wysy ania plików ...................................................................412
Tworzenie PHP obs uguj cego plik ............................................................................413
Najcz ciej spotykane problemy .................................................................................417
Stosowanie funkcji katalogowych .....................................................................................418
Odczyt z katalogów .....................................................................................................418
Otrzymywanie informacji na temat aktualnego katalogu ...........................................421
Tworzenie i usuwanie katalogów ................................................................................421
Interakcja z systemem plików ...........................................................................................422
Otrzymywanie informacji o pliku ...............................................................................422
Zmiana w a ciwo ci pliku ...........................................................................................424
Tworzenie, usuwanie i przenoszenie plików ...............................................................425
Stosowanie funkcji uruchamiaj cych programy ................................................................425
Interakcja ze rodowiskiem: funkcje getenv() i putenv() ..................................................427
Propozycje dalszych lektur ................................................................................................428
W nast pnym rozdziale .....................................................................................................428
Rozdzia 20. Stosowanie funkcji sieci i protoko u .................................................. 429
Przegl d protoko ów ..........................................................................................................429
Wysy anie i odczytywanie poczty elektronicznej ..............................................................430
Korzystanie z danych z innych witryn WWW ...................................................................430
Stosowanie funkcji po cze sieciowych ..........................................................................433
Tworzenie kopii bezpiecze stwa lub kopii lustrzanej pliku ..............................................436
Stosowanie FTP w celu utworzenia kopii bezpiecze stwa lub kopii lustrzanej pliku ......436
Wysy anie plików ........................................................................................................442
Unikanie przekroczenia dopuszczalnego czasu ...........................................................442
Stosowanie innych funkcji FTP ...................................................................................443
Propozycje dalszych lektur ................................................................................................443
W nast pnym rozdziale .....................................................................................................444
Rozdzia 21. Zarz dzanie dat i czasem ................................................................ 445
Uzyskiwanie informacji o dacie i czasie w PHP ................................................................445
Stosowanie funkcji date() ............................................................................................445
Obs uga znaczników czasu Uniksa .............................................................................447
Stosowanie funkcji getdate() .......................................................................................448
Sprawdzanie poprawno ci dat przy u yciu funkcji checkdate() ..................................449
Formatowanie znaczników czasu ................................................................................450
Konwersja pomi dzy formatami daty PHP i MySQL ........................................................450
Obliczanie dat w PHP ........................................................................................................452
Obliczanie dat w MySQL ..................................................................................................454
Stosowanie mikrosekund ...................................................................................................455
Stosowanie funkcji kalendarzowych .................................................................................455
Propozycje dalszych lektur ................................................................................................456
W nast pnym rozdziale .....................................................................................................456
Spis tre ci 17
Rozdzia 22. Generowanie obrazków .................................................................... 457
Konfigurowanie obs ugi obrazków w PHP ........................................................................457
Formaty obrazków .............................................................................................................458
JPEG ...........................................................................................................................459
PNG .............................................................................................................................459
WBMP ........................................................................................................................459
GIF ..............................................................................................................................459
Tworzenie obrazków .........................................................................................................460
Tworzenie kadru obrazka ............................................................................................460
Rysowanie lub umieszczanie tekstu w obrazku ...........................................................461
Wy wietlanie ostatecznej grafiki .................................................................................463
Ko cowe czynno ci porz dkuj ce ..............................................................................464
Stosowanie automatycznie generowanych obrazków na innych stronach .........................464
Stosowanie tekstu i czcionek do tworzenia obrazków .......................................................465
Konfiguracja podstawowego kadru .............................................................................467
Dopasowanie tekstu do przycisku ...............................................................................468
Nadawanie tekstowi odpowiedniej pozycji .................................................................470
Wpisywanie tekstu do przycisku .................................................................................471
Etap ko cowy ..............................................................................................................471
Rysowanie figur i wykresów danych .................................................................................471
Inne funkcje obrazków ......................................................................................................478
Propozycje dalszych lektur ................................................................................................478
W nast pnym rozdziale .....................................................................................................478
Rozdzia 23. Stosowanie kontroli sesji w PHP ......................................................... 479
Czym jest kontrola sesji? ...................................................................................................479
Podstawowa zasada dzia ania sesji ....................................................................................479
Czym jest cookie? .......................................................................................................480
Konfiguracja cookies w PHP ......................................................................................480
Stosowanie cookies w sesji .........................................................................................481
Przechowywanie identyfikatora sesji ..........................................................................481
Implementacja prostych sesji .............................................................................................482
Rozpoczynanie sesji ....................................................................................................482
Zg aszanie zmiennych sesji .........................................................................................482
Stosowanie zmiennych sesji ........................................................................................483
Usuwanie zmiennych i niszczenie sesji .......................................................................483
Przyk ad prostej sesji .........................................................................................................483
Konfiguracja kontroli sesji ................................................................................................485
Implementacja uwierzytelniania w kontroli sesji ...............................................................485
Propozycje dalszych lektur ................................................................................................491
W nast pnym rozdziale .....................................................................................................491
Rozdzia 24. Inne przydatne w asno ci .................................................................. 493
Stosowanie magicznych cudzys owów ..............................................................................493
Wykonywanie ci gów funkcja eval() ...........................................................................494
Zako czenie wykonania die i exit ................................................................................495
Serializacja zmiennych i obiektów ....................................................................................495
Pobieranie informacji na temat rodowiska PHP ...............................................................496
Uzyskiwanie informacji na temat za adowanych rozszerze ......................................496
Identyfikacja w a ciciela skryptu ................................................................................497
Uzyskiwanie informacji na temat daty modyfikacji skryptu .......................................497
Czasowa zmiana rodowiska wykonawczego ...................................................................497
Pod wietlanie róde ..........................................................................................................498
U ywanie PHP w wierszu polece ....................................................................................499
W nast pnej cz ci ............................................................................................................500
18 PHP i MySQL. Tworzenie stron WWW. Vademecum profesjonalisty
Cz V Tworzenie praktycznych projektów PHP i MySQL .........501
Rozdzia 25. Stosowanie PHP i MySQL w du ych projektach ............................... 503
Zastosowanie in ynierii oprogramowania w tworzeniu aplikacji WWW ..........................504
Planowanie i prowadzenie projektu aplikacji WWW ........................................................504
Ponowne stosowanie kodu .................................................................................................505
Tworzenie kodu atwego w utrzymaniu .............................................................................506
Standardy kodowania ..................................................................................................506
Dzielenie kodu ............................................................................................................509
Stosowanie standardowej struktury katalogów ...........................................................509
Dokumentacja i dzielenie wewn trznych funkcji ........................................................510
Implementacja kontroli wersji ...........................................................................................510
Wybór rodowiska programistycznego .............................................................................511
Dokumentacja projektów ...................................................................................................511
Prototypowanie ..................................................................................................................512
Oddzielanie logiki i zawarto ci .........................................................................................513
Optymalizacja kodu ...........................................................................................................514
Stosowanie prostych optymalizacji .............................................................................514
Stosowanie produktów firmy Zend .............................................................................514
Testowanie ........................................................................................................................515
Propozycje dalszych lektur ................................................................................................516
W nast pnym rozdziale .....................................................................................................516
Rozdzia 26. Usuwanie b dów ............................................................................... 517
B dy programistyczne ......................................................................................................517
B dy sk adni ...............................................................................................................517
B dy wykonania .........................................................................................................519
B dy logiczne .............................................................................................................523
Pomoc w usuwaniu b dów w zmiennych .........................................................................525
Poziomy zg aszania b dów ...............................................................................................527
Zmiana ustawie zg aszania b dów ..................................................................................528
Wyzwalanie w asnych b dów ..........................................................................................529
Elegancka obs uga b dów ................................................................................................529
W nast pnym rozdziale .....................................................................................................532
Rozdzia 27. Tworzenie uwierzytelniania u ytkowników i personalizacji ............ 533
Sk adniki rozwi zania .......................................................................................................533
Identyfikacja u ytkownika i personalizacja .................................................................534
Przechowywanie zak adek ..........................................................................................535
Rekomendowanie zak adek .........................................................................................535
Przegl d rozwi zania .........................................................................................................535
Implementacja bazy danych ..............................................................................................537
Implementacja podstawowej witryny ................................................................................538
Implementacja uwierzytelniania u ytkowników ...............................................................540
Rejestracja u ytkowników ..........................................................................................540
Logowanie ...................................................................................................................545
Wylogowanie ..............................................................................................................548
Zmiana has a ...............................................................................................................549
Ustawianie zapomnianych hase ..................................................................................551
Implementacja przechowywania i odczytywania zak adek ..............................................555
Dodawanie zak adek ...................................................................................................555
Wy wietlanie zak adek ................................................................................................557
Usuwanie zak adek ......................................................................................................557
Implementacja rekomendacji .............................................................................................559
Rozwijanie projektu i mo liwe rozszerzenia .....................................................................562
W nast pnym rozdziale .....................................................................................................562
Spis tre ci 19
Rozdzia 28. Tworzenie koszyka na zakupy ........................................................... 563
Sk adniki rozwi zania .......................................................................................................563
Tworzenie katalogu online ..........................................................................................564
ledzenie zakupów u ytkownika podczas przegl dania ..............................................564
Implementacja systemu p atno ci ................................................................................564
Interfejs administratora ...............................................................................................565
Przegl d rozwi zania .........................................................................................................565
Implementacja bazy danych ..............................................................................................568
Implementacja katalogu online ..........................................................................................570
Przedstawianie kategorii .............................................................................................571
Wy wietlanie ksi ek danej kategorii .........................................................................574
Przedstawianie szczegó owych danych ksi ki ...........................................................575
Implementacja koszyka na zakupy ....................................................................................577
Stosowanie skryptu pokaz_kosz.php ...........................................................................577
Podgl d koszyka ..........................................................................................................580
Dodawanie produktów do koszyka .............................................................................582
Zapisywanie uaktualnionego koszyka .........................................................................583
Wy wietlanie podsumowania w pasku nag ówka .......................................................584
Pobyt w kasie ..............................................................................................................584
Implementacja p atno ci ....................................................................................................589
Implementacja interfejsu administratora ...........................................................................591
Rozwijanie projektu ..........................................................................................................598
Zastosowanie istniej cego systemu ...................................................................................598
W nast pnym rozdziale .....................................................................................................598
Rozdzia 29. Tworzenie serwisu poczty elektronicznej opartego na WWW ......... 599
Sk adniki rozwi zania .......................................................................................................599
Protoko y poczty: POP3 i IMAP .................................................................................599
Obs uga POP3 i IMAP w PHP ....................................................................................600
Przegl d rozwi zania .........................................................................................................601
Konfiguracja bazy danych .................................................................................................603
Architektura skryptu ..........................................................................................................604
Logowanie i wylogowanie .................................................................................................608
Konfiguracja kont ..............................................................................................................611
Tworzenie nowego konta ............................................................................................613
Modyfikacja istniej cego konta ...................................................................................614
Usuwanie konta ...........................................................................................................614
Odczytywanie poczty ........................................................................................................615
Wybór konta ................................................................................................................615
Przegl danie zawarto ci skrzynki ................................................................................617
Odczytywanie wiadomo ci pocztowych .....................................................................619
Przegl danie nag ówków wiadomo ci .........................................................................622
Usuwanie wiadomo ci .................................................................................................623
Wysy anie wiadomo ci ......................................................................................................623
Wysy anie nowej wiadomo ci .....................................................................................624
Odpowiadanie i przekazywanie poczty .......................................................................625
Rozwijanie projektu ..........................................................................................................626
W nast pnym rozdziale .....................................................................................................627
Rozdzia 30. Tworzenie mened era list pocztowych ............................................. 629
Sk adniki rozwi zania .......................................................................................................629
Konfiguracja bazy danych list i abonentów .................................................................630
Wysy anie plików ........................................................................................................630
Wysy anie wiadomo ci z za cznikami .......................................................................631
Przegl d rozwi zania .........................................................................................................631
Konfiguracja bazy danych .................................................................................................633
20 PHP i MySQL. Tworzenie stron WWW. Vademecum profesjonalisty
Architektura skryptu ..........................................................................................................635
Implementacja logowania ..................................................................................................641
Tworzenie nowego konta ............................................................................................641
Logowanie ...................................................................................................................643
Implementacja funkcji u ytkownika ..................................................................................645
Przegl danie list ..........................................................................................................646
Przegl danie informacji na temat listy ........................................................................650
Przegl danie archiwum listy .......................................................................................652
Zapisywanie i wypisywanie ........................................................................................653
Zmiana konfiguracji konta ..........................................................................................654
Zmiana has a ...............................................................................................................654
Wylogowanie ..............................................................................................................656
Implementacja funkcji administratora ...............................................................................656
Tworzenie nowej listy .................................................................................................657
Wysy anie nowych wiadomo ci ..................................................................................658
Obs uga wysy ania wielu plików .................................................................................661
Podgl d wiadomo ci ...................................................................................................664
Rozsy anie wiadomo ci ...............................................................................................665
Rozwijanie projektu ..........................................................................................................670
W nast pnym rozdziale .....................................................................................................670
Rozdzia 31. Tworzenie forum WWW ........................................................................ 671
Proces ................................................................................................................................671
Sk adniki rozwi zania .......................................................................................................672
Przegl d rozwi zania .........................................................................................................673
Projektowanie bazy danych ...............................................................................................674
Przegl danie drzewa artyku ów .........................................................................................676
Rozwijanie i zwijanie ..................................................................................................678
Wy wietlanie artyku ów ..............................................................................................680
Korzystanie z klasy wezel_drzewa ..............................................................................681
Przegl danie pojedynczych artyku ów ..............................................................................687
Dodawanie nowych artyku ów ..........................................................................................688
Rozszerzenia ......................................................................................................................694
Wykorzystanie istniej cego systemu .................................................................................694
W nast pnym rozdziale .....................................................................................................694
Rozdzia 32. Tworzenie dokumentów spersonalizowanych w formacie PDF ...... 695
Opis projektu .....................................................................................................................695
Ocena formatów dokumentów ....................................................................................696
Sk adniki rozwi zania .......................................................................................................700
System pyta i odpowiedzi ..........................................................................................700
Oprogramowanie generuj ce dokumenty ....................................................................700
Przegl d rozwi zania .........................................................................................................703
Zadawanie pyta .........................................................................................................704
Ocena odpowiedzi .......................................................................................................705
Tworzenie certyfikatu RTF .........................................................................................707
Tworzenie certyfikatu PDF z szablonu .......................................................................710
Generowanie dokumentu PDF za pomoc PDFlib ......................................................713
Skrypt Witaj, wiecie dla PDFlib .............................................................................713
Tworzenie certyfikatu za pomoc PDFlib ...................................................................717
Problemy zwi zane z nag ówkami ....................................................................................723
Rozwijanie projektu ..........................................................................................................724
W nast pnym rozdziale .....................................................................................................724
Spis tre ci 21
Rozdzia 33. Korzystanie z us ug sieciowych za pomoc XML i SOAP ................ 725
Opis projektu: korzystanie z j zyka XML i us ug sieciowych ...........................................725
Podstawy XML ...........................................................................................................726
Podstawy us ug sieciowych .........................................................................................729
Sk adniki rozwi zania .......................................................................................................730
Korzystanie z interfejsu us ug sieciowych Amazon.com ............................................730
Wczytywanie dokumentów XML: odpowiedzi REST ................................................731
Korzystanie z SOAP za pomoc PHP .........................................................................732
Buforowanie ................................................................................................................732
Opis rozwi zania ...............................................................................................................732
Aplikacja g ówna ........................................................................................................734
Wy wietlanie listy ksi ek z danej kategorii ...............................................................742
Tworzenie obiektu klasy WynikiWyszukiwania .........................................................743
Korzystanie z REST do wykonywania da i odczytywania wyników .....................750
Korzystanie z protoko u SOAP do wykonywania dania i odczytywania wyniku ....755
Buforowanie danych pochodz cych z dania ............................................................756
Konstrukcja koszyka na zakupy ..................................................................................758
Przej cie do kasy na witrynie Amazon.com ................................................................761
Instalacja kodu ród owego ...............................................................................................762
Kierunki rozwoju ...............................................................................................................762
Literatura ...........................................................................................................................762
Rozdzia 34. Tworzenie aplikacji Web 2.0 z wykorzystaniem technologii Ajax .....763
Czym jest technologia Ajax? .............................................................................................764
dania i odpowiedzi HTTP .......................................................................................764
DHTML i XML ...........................................................................................................765
Kaskadowe arkusze stylów (CSS) ...............................................................................766
Skrypty dzia aj ce po stronie klienta ...........................................................................767
Skrypty dzia aj ce po stronie serwera .........................................................................768
XML i XSLT ...............................................................................................................768
Podstawy technologii Ajax ................................................................................................768
Obiekt XMLHTTPRequest .........................................................................................768
Komunikowanie si z serwerem ..................................................................................770
Przetwarzanie odpowiedzi serwera .............................................................................772
Po czenie wszystkich elementów aplikacji ................................................................773
Dodanie nowych elementów do wcze niejszych projektów ..............................................775
Dodanie elementów Ajaksa do witryny Zak adkaPHP ................................................777
ród a dodatkowych informacji ........................................................................................788
Dodatkowe informacje na temat Document Object Model (DOM) .............................789
Biblioteki JavaScript dla aplikacji Ajax ......................................................................789
Witryny internetowe przeznaczone dla programistów Ajax ........................................790
Dodatki .................................................................................................791
Dodatek A Instalacja PHP i MySQL ....................................................................... 793
Instalacja Apache, PHP i MySQL w systemie UNIX ........................................................794
Instalacja przy u yciu binariów ...................................................................................794
Instalacja przy u yciu kodów ród owych ..................................................................794
Plik httpd.conf informacje ko cowe .......................................................................800
Czy obs uga PHP dzia a poprawnie? ...........................................................................800
Czy SSL dzia a poprawnie? ........................................................................................801
22 PHP i MySQL. Tworzenie stron WWW. Vademecum profesjonalisty
Instalacja Apache, PHP i MySQL w systemie Windows ..................................................802
Instalacja MySQL w systemie Windows .....................................................................803
Instalacja serwera Apache w systemie Windows ........................................................804
Instalacja PHP w systemie Windows ..........................................................................806
Instalowanie PEAR ...........................................................................................................808
Inne konfiguracje ...............................................................................................................809
Dodatek B Zasoby internetowe ............................................................................ 811
Zasoby po wi cone PHP ...................................................................................................811
Zasoby po wi cone MySQL i SQL ...................................................................................813
Zasoby po wi cone serwerowi Apache .............................................................................813
Zasoby po wi cone tworzeniu stron WWW ......................................................................814
Skorowidz ............................................................................................. 815
Rozdzia 2.
Przechowywanie
i wyszukiwanie danych
W poprzednim rozdziale omówili my sposoby dost pu do danych umieszczonych w formularzu
HTML i metody manipulowania nimi. Teraz przedstawiamy metody zapisywania informacji w celu
pó niejszego ich wykorzystania. W wi kszo ci przypadków, w czaj c w to przyk ad z poprzed-
niego rozdzia u, celem jest przechowanie danych i pó niejsze ich za adowanie. W tym przyk adzie
nale y zapami ta zamówienie klienta, aby pó niej je zrealizowa .
W tym rozdziale opiszemy sposoby zapisania do pliku zamówienia przedstawionego w przyk adzie
oraz metody pó niejszego odczytania tego pliku. Poka emy równie , dlaczego takie rozwi za-
nie nie zawsze jest najlepsze. Pracuj c z wi ksz liczb zamówie , powinno si zamiast niego
u ywa systemu zarz dzania bazami danych, takiego jak MySQL.
W tym rozdziale zostan poruszone nast puj ce zagadnienia:
zapisywanie danych do pó niejszego u ycia,
otwieranie pliku,
tworzenie i zapisywanie pliku,
zamykanie pliku,
czytanie z pliku,
blokowanie pliku,
usuwanie pliku,
inne przydatne informacje na temat plików,
lepszy sposób obróbki danych: systemy zarz dzania bazami danych.
Zapisywanie danych do pó niejszego u ycia
Istniej dwa sposoby przechowywania danych w pliku jednorodnym oraz w bazie danych.
Plik jednorodny mo e mie wiele ró nych formatów, lecz zazwyczaj terminem tym oznacza si
prosty plik tekstowy. W opisywanym przyk adzie dane s zapisywane w pliku tekstowym, jedno
zamówienie w jednym wierszu.
78 Cz I Stosowanie PHP
Zapisywanie zamówie w taki w a nie sposób jest rozwi zaniem bardzo prostym w realizacji, ale
zarazem jest ono obarczone licznymi ograniczeniami, co zostanie pokazane w dalszej cz ci roz-
dzia u. Przy obróbce danych znacznej wielko ci stosuje si zazwyczaj bazy danych. Mimo to
pliki jednorodne znajduj zastosowania i istniej przypadki, w których wiedza na ich temat jest
konieczna.
Proces zapisu i odczytu plików w PHP przebiega w zbli ony sposób jak w wielu innych, podob-
nych j zykach programowania. Osoby znaj ce j zyk C lub skrypty pow oki Uniksa powinny bez
trudu rozpozna podobie stwa tych procedur.
Przechowywanie i wyszukiwanie zamówie Janka
Poni ej u yta zostanie nieco zmodyfikowana wersja formularza zamówie , przedstawionego
w poprzednim rozdziale. Na pocz tku nale y przeanalizowa ten formularz i kod PHP stworzony
w celu obróbki zamówie .
Kod HTML i skrypty PHP zastosowane w tym rozdziale znajduj si w folderze rozdzial_02
(przyk ady s dost pne na p ycie CD do czonej do ksi ki).
Formularz zosta zmodyfikowany w celu atwego uzyskania adresu klienta. Nowa wersja formularza
jest przedstawiona na rysunku 2.1.
Rysunek 2.1.
Wersja formularza
zamówie pobieraj ca
równie adres klienta
Pole formularza zawieraj ce adres klienta nosi nazw adres. Podczas przetwarzania w PHP daje
ono zmienn o nazwie $adres, pod warunkiem stosowania stylu krótkiego dost pu do zmiennych.
Nale y pami ta , e przy zastosowaniu stylu d ugiego odwo anie do tej zmiennej to $REQUEST
['adres'], $_POST['adres'] lub $_GET['adres'], zale nie od metody zatwierdzenia (szczegó y
opisali my w rozdziale 1.).
W tym rozdziale ka de nadchodz ce zamówienie zostanie zapisane w tym samym pliku. Skon-
struowany pó niej interfejs WWW pozwoli pracownikom Janka na przegl danie przyj tych
zamówie .
Rozdzia 2. Przechowywanie i wyszukiwanie danych 79
Przetwarzanie plików
Zapisywanie danych w pliku nast puje w trzech etapach. S to:
1. Otwarcie pliku. Je eli dany plik nie istnieje, nale y go utworzy .
2. Zapisanie danych w pliku.
3. Zamkni cie pliku.
Podobnie, trójetapowo, przebiega odczytywanie danych z pliku:
1. Otwarcie pliku. Je eli plik nie mo e zosta otwarty (np. nie istnieje), fakt ten musi zosta
rozpoznany i program powinien zako czy si w elegancki sposób (tzn. nie bombarduj c
u ytkownika dok adnymi i niepotrzebnymi mu informacjami o b dach).
2. Odczytanie danych z pliku.
3. Zamkni cie pliku.
Przy odczytywaniu danych z pliku dost pnych jest wiele sposobów ustalania ilo ci pobieranych
naraz danych. Rozwi zania najcz ciej stosowane zostan opisane bardziej szczegó owo w poni -
szych punktach. Na pocz tek przedstawimy mechanizm otwierania plików.
Otwieranie pliku
Aby otworzy plik w PHP, stosuje si funkcj fopen(). Otwieraj c plik, nale y zadeklarowa spo-
sób, w jaki b dzie on u ywany. Sposób ten nosi nazw trybu otwarcia pliku.
Tryby otwarcia pliku
System operacyjny serwera musi mie informacje na temat przeznaczenia otwieranego pliku.
Musi wiedzie , czy plik mo e równocze nie zosta otwarty przez inny skrypt oraz czy u ytkow-
nik posiada uprawnienia do dost pu i modyfikacji pliku. Przede wszystkim tryb otwarcia pliku
dostarcza systemowi operacyjnemu mechanizmu przetwarzania da dost pu od innych u yt-
kowników b d skryptów oraz metody sprawdzania uprawnie dost pu do konkretnych plików.
Przy otwieraniu pliku nale y mie trzy informacje:
1. Mo na otworzy plik w nast puj cych trybach: tylko do odczytu, tylko do zapisu lub
do obu tych celów.
2. Przy zapisywaniu danych w pliku mo na nadpisa istniej ce dane b d doda nowe
na jego ko cu. Mo na równie opracowa zgrabny sposób zaka czania programu zamiast
nadpisywania pliku na pliku, który ju istnieje.
3. Przy zapisywaniu pliku przy u yciu systemu rozró niaj cego pliki tekstowe i binarne
mo na okre li dany typ.
Funkcja fopen() rozpoznaje po czenia tych trzech opcji.
80 Cz I Stosowanie PHP
Stosowanie funkcji fopen() do otwarcia pliku
Aby zapisa zamówienie klienta do pliku zamówie Janka, nale y zastosowa nast puj cy wiersz
kodu:
$wp = fopen("$DOCUMENT_ROOT/../zamowienia/zamowienia.txt", 'w');
Przy wywo aniu funkcja fopen spodziewa si dwóch lub trzech parametrów. Zazwyczaj stosuje
si dwa, jak pokazano w powy szym przyk adzie.
Pierwszy parametr to nazwa pliku, który ma zosta otwarty. Mo na tu okre li cie k dost pu
do pliku, jak w powy szym przyk adzie; plik zamowienia.txt znajduje si w katalogu zamówie .
Zastosowana zosta a wbudowana w PHP zmienna $SERVER['DOCUMENT_ROOT'] lecz, ze wzgl du
na uci liwo stosowania pe nych nazw zmiennych formy, przypisali my jej krótsz nazw .
Zmienna ta wskazuje na podstawowy element drzewa katalogów serwera WWW. W wierszu
tym u yto symbolu .., oznaczaj cego katalog nadrz dny katalogu macierzystego , który ze
wzgl du na bezpiecze stwo znajduje si poza drzewem katalogów. Nie mo na pozwoli na inny
sposób dost pu przez WWW do tego pliku poza dostarczanym interfejsem. cie ka tego typu
jest nazywana cie k wzgl dn , poniewa opisuje miejsce w systemie plików w zale no ci od
katalogu macierzystego.
Podobnie jak w przypadku nadawania zmiennym formy krótkich nazw, na pocz tku skryptu
nale y umie ci nast puj cy wiersz:
$DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT'];
w celu skopiowania zawarto ci zmiennej nosz cej nazw d ug do zmiennej o krótkiej nazwie.
Analogicznie do ró norodno ci metod dost pu do danych formy, istniej równie ró ne sposoby
dost pu do predefiniowanych zmiennych serwera. W zale no ci od ustawie serwera (szczegó-
owe informacje na ten temat mo na znale w rozdziale 1.) mo na pozyska katalog macierzysty
za pomoc :
$_SERVER['DOCUMENT_ROOT']
$DOCUMENT_ROOT
$HTTP_SERVER_VARS['DOCUMENT_ROOT']
Podobnie jak w przypadku danych formy, zalecany jest pierwszy sposób.
Mo na równie okre li bezwzgl dn cie k dost pu do pliku, b d c cie k od katalogu
g ównego (/ w systemach Unix i zazwyczaj C:\ w systemach Windows). Na przyk adowym ser-
werze Uniksa cie ka ta mo e wygl da nast puj co: /home/ksiazka/zamowienia. Niedogodno ci
tej metody, zw aszcza w wypadku korzystania z obcego serwera, jest mo liwo modyfikacji
cie ki bezwzgl dnej, co mo e oznacza powa ne zmiany w wielu skryptach.
Je eli cie ka nie zostanie podana, PHP b dzie szuka pliku i ewentualnie utworzy go w tym samym
katalogu, w którym znajduje si skrypt. Mo e si to ró ni w zale no ci od faktu, czy PHP jest
uruchamiany poprzez jaki skrypt CGI, i zale y od konfiguracji serwera.
W rodowisku Uniksa stosuje si uko niki (/), natomiast w rodowisku Windows mo na u ywa
lewych (\) lub prawych uko ników (/), które musz jednak zosta oznaczone jako znaki specjalne,
aby funkcja fopen w a ciwie je zinterpretowa a. W tym celu nale y po prostu doda przed ka dym
symbolem jeszcze jeden lewy uko nik, jak pokazano w poni szym przyk adzie:
$wp = fopen("..\\..\\zamowienia\\zamowienia.txt", 'w');
Rozdzia 2. Przechowywanie i wyszukiwanie danych 81
Niewiele osób stosuje w cie kach dost pu w kodzie PHP znaki odwrotnych uko ników, ponie-
wa oznacza oby to, e kod ten b dzie dzia a tylko w systemach Windows. Stosowanie zwyk ych
uko ników pozwala na przenoszenie kodu mi dzy maszynami pracuj cymi w systemach Unix
i Windows bez konieczno ci wprowadzania w nim zmian.
Drugim parametrem funkcji fopen() jest tryb otwarcia pliku, okre laj cy jego przeznaczenie.
Powinien on zosta podany jako ci g. W powy szym przyk adzie funkcji fopen() zostaje prze-
kazana warto w, co oznacza otwarcie pliku do zapisu. Podsumowanie trybów otwarcia pliku
przedstawiono w tabeli 2.1.
Tabela 2.1. Podsumowanie trybów otwarcia pliku w funkcji fopen
Tryb Nazwa trybu Znaczenie
r Odczyt Otwarcie pliku do odczytu, poczynaj c od pocz tku pliku
r+ Odczyt Otwarcie pliku do odczytu i zapisu, poczynaj c od pocz tku pliku
w Zapis Otwarcie pliku do zapisu, poczynaj c od pocz tku pliku. Je eli plik istnieje, bie ca
zawarto zostanie skasowana. W przeciwnym wypadku nast pi próba jego utworzenia
w+ Zapis Otwarcie pliku do zapisu i odczytu, poczynaj c od pocz tku pliku. Je eli plik istnieje,
bie ca zawarto zostanie skasowana, je eli za nie, nast pi próba jego utworzenia
x Ostro ny zapis Otwarcie pliku do zapisu rozpoczynaj cego si na pocz tku pliku. Je li plik ju istnieje,
nie zostanie otwarty, funkcja fopen() zwróci warto false, a PHP wygeneruje ostrze enie
x+ Ostro ny zapis Otwarcie pliku do zapisu i odczytu rozpoczynaj cego si na pocz tku pliku. Je li plik ju
istnieje, nie zostanie otwarty, funkcja fopen() zwróci warto false, a PHP wygeneruje
ostrze enie
a Dodawanie Otwarcie pliku do dodawania zawarto ci, pocz wszy od ko ca istniej cej zawarto ci.
Je eli plik nie istnieje, nast pi próba jego utworzenia
a+ Dodawanie Otwarcie pliku do dodawania zawarto ci i odczytu, pocz wszy od ko ca istniej cej
zawarto ci. Je eli plik nie istnieje, nast pi próba jego utworzenia
b Tryb binarny Stosowany w po czeniu z jednym z powy szych typów w wypadku korzystania
z systemu rozró niaj cego pliki tekstowe i binarne. Windows go rozró nia, Unix nie.
Programi ci PHP zalecaj , by zawsze u ywa tej opcji w celu zapewnienia sobie
maksymalnej przeno no ci. Jest to tryb domy lny
t Tryb tekstowy Stosowany w po czeniu z jednym z powy szych trybów. Tryb ten jest dost pny
jedynie w systemie Windows. Nie jest on zalecany, chyba e przed przeniesieniem
kodu zostanie zamieniony na tryb b
Tryb otwarcia pliku zastosowany w przyk adzie zale y od sposobu, w jaki system zostanie u yty.
Powy ej wyst puje tryb 'w', co oznacza, e w pliku b dzie mog o by zapami tane tylko jedno
zamówienie. Ka de nowo przyj te zamówienie nadpisze poprzednie. Nie jest to rozwi zanie
zbyt rozs dne, wi c lepiej u y trybu dodawania (oraz, zgodnie z zaleceniem, trybu binarnego):
$wp = fopen("$DOCUMENT_ROOT/../zamowienia/zamowienia.txt", 'ab');
Istnieje równie trzeci, opcjonalny parametr funkcji fopen(). Stosuje si go w celu szukania pliku
w lokalizacjach podanych w opcji include_path (ustawianej w konfiguracji PHP szczegó y
w dodatku A). Aby u y tej opcji, nale y nada temu parametrowi warto 1. Nie trzeba wtedy
podawa cie ki dost pu do pliku.
$wp = fopen('zamowienia.txt', 'ab', true);
Czwarty parametr równie jest opcjonalny. Funkcja fopen() dopuszcza, by nazwy plików by y
poprzedzone nazw protoko u (na przyk ad http://), a same pliki by y otwierane ze zdalnych
82 Cz I Stosowanie PHP
lokalizacji. Niektóre protoko y pozwalaj ponadto na przekazywanie dodatkowych parametrów.
Taki sposób u ycia funkcji fopen() zostanie opisany bardziej szczegó owo w dalszej cz ci tego
rozdzia u.
Je eli funkcji fopen() uda si otwarcie pliku, zwraca ona zasób b d cy w rzeczywisto ci uchwy-
tem albo wska nikiem pliku i przechowuje go w zmiennej, w powy szym przyk adzie: $wp.
Zmienna ta jest stosowana przy kolejnych próbach dost pu do pliku, to znaczy przy odczytywa-
niu lub zapisywaniu danych.
Otwieranie pliku przez protokó FTP lub HTTP
Funkcja fopen() s u y do otwierania do odczytu lub zapisu plików lokalnych. Za jej pomoc mo na
tak e otwiera pliki poprzez FTP, HTTP i inne protoko y. W asno t mo na zablokowa , wy -
czaj c w pliku php.ini dyrektyw allow_url_fopen. Je eli wi c otwieranie plików zdalnych przy
u yciu fopen() sprawia k opoty, najpierw nale y zajrze do pliku php.ini.
Je eli wprowadzona nazwa pliku rozpoczyna si od ftp://, otwarte zostanie pasywne po czenie
FTP z serwerem, którego adres zosta wprowadzony, a funkcja zwróci warto wska nika na
pocz tek pliku.
Je eli wprowadzona nazwa pliku rozpoczyna si od http://, otwarte zostanie pasywne po czenie
HTTP z serwerem, którego adres zosta wprowadzony, a funkcja zwróci warto wska nika na
odpowied . Przy zastosowaniu trybu HTTP w starszych wersjach PHP adres odnosz cy si do
katalogu musi zawiera ko cz ce uko niki, jak w poni szym przyk adzie:
http://www.serwer.com/
a nie
http://www.serwer.com
Przy zastosowaniu drugiej wersji adresu (bez uko nika) serwer WWW u yje zwyk ego przekiero-
wania HTTP i prze le w odpowiedzi pierwszy z powy szych adresów (warto wykona to zadanie).
Nale y pami ta , e nazwy domen w URL-ach nie s ró nicowane ze wzgl du na wielko liter,
w przeciwie stwie do cie ek i nazw plików.
Problemy z otwieraniem plików
Popularnym b dem jest próba otwarcia pliku, co do którego nie posiada si praw odczytu lub
zapisu. (B d taki pojawia si zazwyczaj w systemach operacyjnych z rodziny Unix, od czasu do
czasu mo na jednak spotka si z nim w systemie Windows.) W takim przypadku PHP wy wietli
ostrze enie podobne do przedstawionego na rysunku 2.2.
Po pope nieniu takiego b du nale y upewni si , czy skrypt, który jest stosowany, posiada prawo
dost pu do danego pliku. Zale nie od konfiguracji serwera, skrypt mo e by uruchomiony z pra-
wami u ytkownika serwera WWW lub z prawami w a ciciela swojego katalogu.
W wi kszo ci systemów skrypt zostanie uruchomiony jako u ytkownik serwera WWW. Je eli
na przyk ad skrypt znajduje si w systemie uniksowym w katalogu ~/public_html/rozdzia 2,
nale y utworzy ogólnodost pny katalog, w którym przechowywane b d zamówienia. Aby to
uczyni , mo na wpisa :
mkdir ~/zamowienia
chmod 777 ~/zamowienia/
Rozdzia 2. Przechowywanie i wyszukiwanie danych 83
Rysunek 2.2.
Podczas nieudanej
próby otwarcia pliku PHP
wy wietla specyficzne
ostrze enie
Nale y pami ta , e katalogi i pliki z ogólnym prawem zapisu s bardzo niebezpieczne. W szczegól-
no ci nie powinno si u ywa katalogów dost pnych bezpo rednio z poziomu WWW, które posia-
daj mo liwo zapisu. Z tego powodu przyk adowy katalog zamowienia zosta umieszczony
dwa poziomy wy ej, ponad katalogiem public_html. Szczegó owe informacje na temat bezpie-
cze stwa s przedstawione w rozdziale 15.
Z e ustawienia dost pu do plików to najpopularniejszy, lecz nie jedyny b d pope niany przy
otwieraniu plików. Je eli plik nie mo e zosta otwarty, trzeba koniecznie o tym wiedzie , aby nie
próbowa odczytywa ani zapisywa w nim danych.
Je eli wywo anie funkcji fopen() nie powiedzie si , zwróci ona warto false. Mo na wtedy
zast pi oryginalny komunikat o b dzie PHP innym, bardziej przyjaznym dla u ytkownika:
@ $wp = fopen("$DOCUMENT_ROOT/../zamowienia/zamowienia.txt", 'ab');
if (!$wp) {
echo "
Zamówienie Pa stwa nie mo e zosta przyj te w tej chwili.
Prosz spróbowa pó niej.