
Wyczerpujące omówienie najpopularniejszego środowiska
do tworzenia dynamicznych witryn WWW
- Poznaj zasady programowania w PHP5 i w pełni wykorzystaj jego nowe możliwości
- Zastosuj bazę danych jako zaplecze dla stron WWW
- Zaprojektuj i stwórz dynamiczną witrynę WWW za pomocą PHP i MySQL
O PHP i MySQL słyszał już chyba każdy, kto zajmuje się projektowaniem witryn WWW. Skrypty napisane w języku PHP i korzystające z bazy danych MySQL "napędzają" tysiące dynamicznych stron WWW -- sklepów, portali oraz aplikacji e-commerce. Duet PHP i MySQL to stabilne, wydajne i proste do opanowania środowisko o ogromnych możliwościach. Dostępne są nieodpłatnie, co jest jednym z głównych powodów ich popularności. Za ich pomocą można stworzyć zarówno proste wiadomości na stronie WWW, jak i rozbudowane systemy autoryzacji użytkowników, płatności elektronicznych, galerii i wiele innych aplikacji internetowych.
"PHP5 i MySQL. Biblia" to kompleksowe omówienie zagadnień związanych z tworzeniem witryn WWW z wykorzystaniem tych technologii. Przedstawia zasady programowania w języku PHP5 z uwzględnieniem reguł projektowania obiektowego. Opisuje bazę danych MySQL, język SQL oraz sposoby połączenia skryptów PHP z tabelami w bazie danych. Czytając ją, nauczysz się osadzać kod PHP w dokumentach HTML, korzystać z mechanizmów obsługi sesji oraz języka XML, korzystać z innych baz danych oraz zabezpieczać witryny WWW stworzone za pomocą PHP. Dowiesz się, jak zaimplementować obsługę wyjątków oraz jak usuwać błędy z kodu źródłowego. Napiszesz skrypty stanowiące komponenty rozbudowanego dynamicznego serwisu WWW, które z powodzeniem będziesz mógł wykorzystać w wielu swoich projektach.
- Typy danych, zmienne, polecenia i funkcje w PHP
- Operacje na tekstach, wartościach liczbowych i tablicach
- Administrowanie bazą MySQL
- Łączenie skryptów PHP z bazą danych
- Tworzenie elementów generowanych dynamicznie
- Programowanie obiektowe w PHP
- Mechanizmy obsługi sesji i plików cookie
- Korzystanie z biblioteki PEAR
- Obsługa wyjątków i usuwanie błędów z kodów źródłowych
- Korzystanie z baz danych PostgreSQL oraz Oracle
- Łączenie PHP z JavaScript i Javą
- Przetwarzanie plików XML i tworzenie usług sieciowych
- Generowanie grafiki za pomocą PHP
- Uwierzytelnianie użytkowników
W tej książce znajdziesz wszystko, czego potrzebujesz
aby w pełni wykorzystać możliwości PHP i MySQL.
O autorach (27)
Przedmowa (29)
Część I Podstawy PHP (35)
Rozdział 1. Dlaczego PHP i MySQL? (37)
- Co to jest PHP? (37)
- Co to jest MySQL? (38)
- Historia PHP (39)
- Historia MySQL (40)
- Dlaczego kochamy PHP? (40)
- Koszt (41)
- PHP jest łatwy (43)
- PHP można wbudować (44)
- PHP jest niezależny od platformy (46)
- PHP nie bazuje na znacznikach (46)
- PHP jest stabilny (46)
- PHP jest szybki (47)
- PHP jest otwarty (48)
- PHP dobrze współpracuje z innymi produktami (49)
- Szybki rozwój języka (50)
- Popularność PHP rośnie (50)
- PHP nie jest niczyją własnością (51)
- Społeczność PHP (52)
- Podsumowanie (53)
Rozdział 2. Skrypty wykonywane na serwerze WWW (55)
- Statyczny HTML (55)
- Technologie wykonywane po stronie klienta (58)
- Skrypty wykonywane na serwerze (62)
- Do czego przydają się skrypty serwera (67)
- Podsumowanie (68)
Rozdział 3. Rozpoczynamy pracę z PHP (69)
- Dzierżawa lub własny serwer (69)
- Wariant z dostawcą Internetu (69)
- Własny serwer - wady i zalety (73)
- Rozwiązania pośrednie (73)
- Instalowanie PHP (74)
- Zanim zaczniesz (74)
- Procedura instalacji (76)
- Narzędzia programistyczne (83)
- Podsumowanie (87)
Rozdział 4. Dodajemy PHP do HTML (89)
- HTML jest gotowy na PHP (89)
- Przełączanie się z HTML do PHP (89)
- Kanoniczne znaczniki PHP (90)
- Krótkie znaczniki otwierające (w stylu SGML) (90)
- Witaj świecie (91)
- Wejście w tryb PHP i wyjście z niego (92)
- Dołączanie plików (93)
- Podsumowanie (95)
Rozdział 5. Składnia i zmienne (97)
- PHP wiele wybacza (97)
- HTML to nie PHP (98)
- Składnia PHP bazuje na C (98)
- PHP nie przejmuje się odstępami (98)
- PHP jest czasami wrażliwy na wielkość liter (98)
- Instrukcje to wyrażenia zakończone średnikiem (99)
- Bloki (102)
- Komentarze (102)
- Komentarze wielowierszowe w stylu C (103)
- Komentarze jednowierszowe: # i // (103)
- Zmienne (103)
- PHP przyjął styl zmiennych Perl (104)
- Deklarowanie zmiennych (104)
- Przypisywanie zmiennym wartości (104)
- Zmiana wartości zmiennych (105)
- Nieprzypisane zmienne (105)
- Zasięg zmiennych (106)
- Możesz dowolnie zmieniać tryby pracy (107)
- Stałe (108)
- Typy w PHP nie są źródłem zmartwień (108)
- Brak deklaracji typów zmiennych (109)
- Automatyczna konwersja typów (109)
- Typy nadawane poprzez kontekst (109)
- Typy w PHP (109)
- Typy proste (110)
- Integer (110)
- Double (111)
- Boolean (113)
- NULL (114)
- String (115)
- Wyjście (119)
- Echo i print (119)
- Zmienne i ciągi (120)
- Podsumowanie (121)
Rozdział 6. Sterowanie i funkcje (123)
- Wyrażenia logiczne (124)
- Stałe logiczne (124)
- Operatory logiczne (124)
- Operatory porównania (126)
- Operator trójskładnikowy (128)
- Instrukcje warunkowe (129)
- If-else (129)
- Switch (133)
- Pętle (134)
- Pętle ograniczone i nieograniczone (134)
- While (134)
- Do-while (135)
- For (136)
- Przykłady pętli (137)
- Break i continue (140)
- Pętle nieskończone (141)
- Składnia alternatywna (142)
- Przerywanie wykonania (142)
- Użycie funkcji (145)
- Zwracane wartości a efekty uboczne (145)
- Dokumentacja funkcji (146)
- Nagłówki w dokumentacji (147)
- Szukanie opisu funkcji (147)
- Definiowanie własnych funkcji (148)
- Czym jest funkcja? (148)
- Składnia definicji funkcji (148)
- Przykład definicji funkcji (149)
- Parametry formalne i parametry aktualne (150)
- Nieprawidłowa liczba argumentów (151)
- Funkcje a zasięg zmiennych (152)
- Zmienne globalne i lokalne (153)
- Zmienne statyczne (154)
- Wyjątki (155)
- Zasięg funkcji (156)
- Include oraz require (157)
- Rekurencja (158)
- Podsumowanie (160)
Rozdział 7. Przekazywanie danych pomiędzy stronami (161)
- HTTP jest protokołem bezstanowym (161)
- Argumenty GET (162)
- Inne zastosowania adresów URL w stylu GET (164)
- Argumenty POST (166)
- Formatowanie zmiennych formularza (167)
- Konsolidacja formularzy i obsługujących je kodów (170)
- Używanie zmiennych tablicowych w połączeniu z formularzami (171)
- Tablice superglobalne PHP (174)
- Rozszerzony przykład: kalkulator do ćwiczeń (176)
- Podsumowanie (178)
Rozdział 8. Ciągi (179)
- Ciągi w PHP (179)
- Dołączanie ciągów przy użyciu nawiasów klamrowych (180)
- Znaki i indeksy ciągu (181)
- Operatory dla ciągów (181)
- Złączenie i przypisanie (182)
- Składnia heredoc (182)
- Funkcje operujące na ciągach (183)
- Sprawdzanie ciągów (184)
- Szukanie znaków i podciągów (184)
- Porównywanie i przeszukiwanie (185)
- Przeszukiwanie (186)
- Wycinanie podciągu (187)
- Funkcje porządkujące (188)
- Zastępowanie ciągów (189)
- Funkcje zmiany wielkości liter (191)
- Funkcje znaków sterujących (192)
- Formatowanie danych (193)
- Rozszerzony przykład: kalkulator do ćwiczeń (195)
- Podsumowanie (198)
Rozdział 9. Tablice i funkcje operujące na tablicach (199)
- Użycie tablic (199)
- Czym są tablice PHP? (200)
- Tworzenie tablic (202)
- Bezpośrednie przypisanie (202)
- Konstrukcja array() (202)
- Podawanie indeksów przy użyciu array() (203)
- Funkcje zwracające tablice (203)
- Odczytywanie wartości (204)
- Odczytywanie przy użyciu indeksu (204)
- Konstrukcja list() (204)
- Tablice wielowymiarowe (205)
- Informacje o tablicach (206)
- Usuwanie z tablicy (207)
- Iteracje (207)
- Obsługa iteracji (208)
- Użycie funkcji iteracyjnych (209)
- Nasza ulubiona metoda iteracji: foreach (209)
- Iteracje za pomocą current() i next() (211)
- Powtórne przeglądanie za pomocą reset() (212)
- Wypisywanie w odwrotnym porządku za pomocą end() i prev() (213)
- Pobieranie wartości kluczy za pomocą key() (213)
- Wartości puste i funkcja each() (214)
- Przeglądanie tablicy za pomocą array_walk() (215)
- Rozszerzony przykład: kalkulator do ćwiczeń (216)
- Podsumowanie (229)
Rozdział 10. Liczby (231)
- Typy numeryczne (231)
- Operatory matematyczne (232)
- Operatory arytmetyczne (232)
- Operatory arytmetyczne i typy (232)
- Operator inkrementacji (233)
- Operator przypisania (234)
- Operatory porównania (234)
- Kolejność operacji i nawiasy (235)
- Proste funkcje matematyczne (236)
- Liczby losowe (236)
- Inicjowanie generatora (237)
- Przykład: losowy wybór (238)
- Rozszerzony przykład: kalkulator do ćwiczeń (240)
- Podsumowanie (245)
Rozdział 11. Podstawowe pułapki PHP (247)
- Problemy związane z instalacją (247)
- Źródło pliku wyświetlane w przeglądarce (248)
- Blok PHP pokazuje się jako tekst lub przeglądarka chce zapisać plik (248)
- Nieodnaleziony serwer lub niemożliwe wyświetlenie strony (248)
- Problemy z wyświetlaniem (248)
- Całkowicie pusta strona (249)
- Dokument nie zawiera żadnych danych (249)
- Niekompletna lub nieprawidłowa strona (250)
- Kod PHP pokazuje się w przeglądarce (253)
- Niepowodzenie przy ładowaniu strony (254)
- Nieodnaleziona strona (254)
- Nieudane otwarcie pliku do włączenia (254)
- Błędy analizy składni (254)
- Komunikat błędu składni (254)
- Brakujący średnik (255)
- Brak znaku $ (255)
- Nieprawidłowa zmiana trybu (256)
- Nieoznaczone apostrofy (257)
- Niezakończone ciągi znaków (257)
- Inne błędy składni (258)
- Uprawnienia do plików (258)
- Brak dołączanych plików (259)
- Ostrzeżenie przy włączaniu pliku (259)
- Nieprzypisane zmienne (260)
- Zmienna nie pokazuje się w wynikowym ciągu (260)
- Zmienna liczbowa nieoczekiwanie przyjmuje wartość zero (260)
- Jak zachowują się niezainicjowane zmienne (260)
- Nadpisane zmienne (262)
- Zmienna ma poprawną wartość, ale nie taką, jakiej oczekiwałeś (262)
- Problemy z funkcjami (263)
- Wywołanie niezdefiniowanej funkcji moja_funkcja() (263)
- Wywołanie niezdefiniowanej funkcji (264)
- Wywołanie niezdefiniowanej funkcji array() (264)
- Nie można ponownie zadeklarować funkcji (264)
- Nieprawidłowa liczba argumentów (265)
- Błędy matematyczne (265)
- Ostrzeżenie o dzieleniu przez zero (265)
- Niespodziewane wyniki działań (265)
- NaN (lub NAN) (265)
- Przekroczenie czasu oczekiwania (266)
- Podsumowanie (267)
Część II PHP i bazy danych (271)
Rozdział 12. Wybór bazy danych dla PHP (273)
- Czym jest baza danych? (273)
- Dlaczego używamy baz danych? (274)
- Utrzymanie i skalowalność (274)
- Przenośność (274)
- Unikanie nudnego programowania (274)
- Szukanie (275)
- Bezpieczeństwo (275)
- Architektura wielowarstwowa (275)
- Potencjalna wada: wydajność (276)
- Wybór bazy danych (276)
- Możesz nie mieć wyboru (276)
- Plikowe, relacyjne i obiektowo-relacyjne bazy danych (277)
- ODBC/JDBC kontra własne API (278)
- Zmiana bazy danych (278)
- Przegląd zaawansowanych funkcji (279)
- GUI (279)
- Podzapytania (279)
- Zapytanie SELECT INTO (279)
- Złożone złączenia (280)
- Wielowątkowość i blokowanie (280)
- Transakcje (280)
- Procedury i wyzwalacze (281)
- Indeksy (281)
- Klucze obce i więzy integralności (282)
- Replikacja bazy danych (282)
- Bazy danych obsługiwane przez PHP (282)
- Warstwa abstrakcji bazy danych (lub jej brak) (284)
- Wybieramy MySQL (285)
- Podsumowanie (286)
Rozdział 13. Samouczek SQL (287)
- Relacyjne bazy danych i SQL (287)
- Standardy SQL (288)
- Podstawowe wyrażenia SQL (288)
- SELECT (289)
- INSERT (293)
- UPDATE (294)
- DELETE (294)
- Projekt bazy danych (294)
- Bezpieczeństwo i uprawnienia (297)
- Ustawianie uprawnień (297)
- Przechowywanie haseł w innym miejscu (298)
- Użycie dwóch warstw ochrony haseł (299)
- Tworzenie kopii bezpieczeństwa (300)
- Podsumowanie (300)
Rozdział 14. Administracja bazą danych MySQL (303)
- Licencje MySQL (304)
- Instalowanie MySQL - przejście do wersji 4. (305)
- Czynności przed instalacją (305)
- Pobieranie MySQL (307)
- Instalowanie MySQL w Windows (307)
- Instalowanie MySQL w systemie Unix (308)
- Instalowanie MySQL w systemie Mac OS X (309)
- Czynności poinstalacyjne (309)
- Podstawowe komendy klienta MySQL (310)
- Administracja użytkownika MySQL (311)
- Programowanie lokalne (314)
- Samodzielna strona internetowa (314)
- Współdzielone utrzymywanie stron internetowych (315)
- PHPMyAdmin (315)
- Kopie zapasowe (319)
- Powielanie (320)
- Odzyskiwanie (323)
- myisamchk (324)
- mysqlcheck (325)
- Podsumowanie (325)
Rozdział 15. Funkcje PHP i MySQL (327)
- Łączenie z MySQL (328)
- Tworzenie zapytań w MySQL (329)
- Pobieranie wyniku (330)
- Pobieranie opisu danych (333)
- Korzystanie z wielokrotnych połączeń (334)
- Kontrola błędów (335)
- Tworzenie baz danych MySQL za pomocą PHP (337)
- Funkcje MySQL (340)
- Podsumowanie (342)
Rozdział 16. Wyświetlanie zapytań w tabelach (345)
- Tabele HTML i tabele bazy danych (346)
- Przekształcenie jeden w jeden (346)
- Przykład: wyświetlanie jednej tabeli (346)
- Przykładowe tabele (348)
- Ulepszanie wyświetlania (349)
- Złożone odwzorowania (352)
- Wiele zapytań albo skomplikowane wyświetlanie (352)
- Użycie kilku zapytań (353)
- Przykład skomplikowanego wyświetlania (355)
- Tworzenie przykładowych tabel (356)
- Podsumowanie (358)
Rozdział 17. Tworzenie formularzy z zapytań (359)
- Formularze HTML (359)
- Podstawowy formularz zatwierdzania danych do bazy danych (360)
- Samoprzetwarzanie (362)
- Edytowanie danych w formularzu HTML (369)
- TEXT i TEXTAREA (369)
- CHECKBOX (371)
- RADIO (373)
- SELECT (377)
- Podsumowanie (379)
Rozdział 18. Efektywność PHP i MySQL (381)
- Połączenia - ograniczanie i powtórne użycie (381)
- Przykład nieprawidłowego użycia: jedno połączenie na wyrażenie (382)
- Kilka wyników nie wymaga kilku połączeń (383)
- Trwałe połączenia (383)
- Indeksy i projekt tabel (384)
- Indeksowanie (384)
- Indeksowanie wszystkich pól (387)
- Inne rodzaje indeksów (388)
- Projekt tabeli (390)
- Przenoszenie pracy na serwer bazy danych (390)
- Baza jest szybsza od Ciebie (391)
- Przykład nieprawidłowego użycia: pętla zamiast warunku (391)
- Tworzenie pól daty i czasu (393)
- Szukanie ostatnio wstawionego wiersza (394)
- Podsumowanie (395)
Rozdział 19. Pułapki tandemu PHP-MySQL (397)
- Brak połączenia (397)
- Problemy z uprawnieniami (399)
- Nieoznaczone apostrofy (401)
- Nieprawidłowe zapytania SQL (403)
- Pomyłki w nazwach (405)
- Pomyłki przy przecinkach (405)
- Ciągi nieotoczone apostrofami (405)
- Niezainicjowane zmienne (406)
- Zbyt mało danych, zbyt dużo danych (406)
- Funkcje języka SQL (407)
- mysql_affected_rows() kontra mysql_num_rows() (407)
- mysql_result() (408)
- OCIFetch() (408)
- Kontrola poprawności (408)
- Podsumowanie (409)
Część III Zaawansowane funkcje i techniki (411)
Rozdział 20. Programowanie zorientowane obiektowo w PHP (413)
- Co to jest programowanie zorientowane obiektowo? (414)
- Prosty pomysł (414)
- Opracowanie: obiekty jako typy danych (416)
- Opracowanie: dziedziczenie (416)
- Opracowanie: enkapsulacja (417)
- Opracowanie: konstruktory i destruktory (418)
- Terminologia (418)
- Podstawowe konstrukcje PHP dla OOP (420)
- Definiowanie klas (420)
- Dostęp do zmiennych składowych (421)
- Tworzenie egzemplarzy (421)
- Funkcje konstruktora (422)
- Dziedziczenie (423)
- Nadpisywanie funkcji (424)
- Połączone podklasy (424)
- Modyfikowanie i przypisywanie obiektów (426)
- Kwestie zasięgu (426)
- Zaawansowane funkcje OOP (427)
- Elementy publiczne, prywatne i chronione (427)
- Interfejsy (429)
- Stałe (429)
- Klasy abstrakcyjne (429)
- Symulowanie funkcji klas (430)
- Wywoływanie funkcji rodzica (431)
- Automatyczne wywołanie konstruktorów rodzica (432)
- Symulowanie metod przeciążenia (433)
- Serializacja (434)
- Funkcje introspekcji (436)
- Przegląd funkcji (437)
- Przykład: genealogia klas (439)
- Przykład: dopasowywanie zmiennych i kolumn bazy danych (442)
- Przykład: uogólniony test metod (444)
- Rozszerzony przykład: formularze HTML (447)
- Rozwiązywanie problemów (452)
- Symptom: zmienna składowa nie ma wartości w funkcji składowej (452)
- Symptom: błąd analizatora składni, oczekuję T_VARIABLE ... (452)
- Style OOP w PHP (453)
- Konwencje nazywania (453)
- Dodatki funkcji (453)
- Projektowanie dziedziczenia (454)
- Podsumowanie (455)
Rozdział 21. Zaawansowane funkcje operujące na tablicach (457)
- Przekształcenia tablic (457)
- Pobieranie kluczy i wartości (458)
- Zamiana, odwracanie i mieszanie (459)
- Łączenie, dopełnianie, wycinanie i zastępowanie (460)
- Stosy i kolejki (461)
- Zamiana pomiędzy tablicą i zmiennymi (464)
- Sortowanie (465)
- Funkcje wyświetlające tablice (466)
- Podsumowanie (467)
Rozdział 22. Łańcuch i funkcje wyrażeń regularnych (469)
- Tokenizing i funkcje analizatora składni (470)
- Dlaczego wyrażenia regularne? (472)
- Wyrażenia regularne w PHP (473)
- Przykład wyrażeń stylu POSIX (473)
- Funkcje wyrażeń regularnych (475)
- Wyrażenia regularne zgodne z Perl (476)
- Przykład: prosty program do wyodrębniania hiperłączy (479)
- Wyrażenie regularne (479)
- Używanie wyrażenia w funkcji (481)
- Zaawansowane funkcje łańcuchów (483)
- Funkcje HTML (483)
- Mieszanie przy użyciu MD5 (483)
- Łańcuchy jako zbiory znaków (485)
- Funkcje podobne do łańcuchów (487)
- Podsumowanie (487)
Rozdział 23. Funkcje systemu operacyjnego i dostępu do plików (489)
- Uprawnienia do plików PHP (489)
- Funkcje czytania i zapisywania plików (490)
- Otwarcie pliku (491)
- Czytanie pliku (494)
- Tworzenie mechanizmu pobierania plików przy użyciu fpassthru() (496)
- Zapis do pliku (497)
- Zamknięcie pliku (498)
- Funkcje systemu plików i katalogów (498)
- feof (501)
- file_exists (501)
- filesize (501)
- Funkcje sieciowe (501)
- Funkcje logu systemowego (501)
- Funkcje DNS (502)
- Funkcje gniazd (502)
- Funkcje daty i czasu (502)
- Jeżeli nie znasz daty ani czasu (503)
- Jeżeli już odczytałeś datę i czas albo znacznik czasu (504)
- Funkcje konwersji kalendarza (505)
- Podsumowanie (506)
Rozdział 24. Sesje, cookies i HTTP (507)
- Czym są sesje? (507)
- Co stanowi problem? (508)
- Dlaczego się tym zajmujemy? (508)
- Alternatywy sesji (508)
- Adres IP (509)
- Ukryte zmienne (509)
- Cookie (510)
- Jak działają sesje w PHP (510)
- Uaktywnianie sesji w PHP (511)
- Dystrybucja zmiennych sesji (511)
- Gdzie są przechowywane dane? (514)
- Przykładowy kod sesji (515)
- Funkcje obsługi sesji (518)
- Zagadnienia konfiguracji (520)
- Cookies (521)
- Funkcja setcookie() (522)
- Przykłady (523)
- Usuwanie cookie (524)
- Odczytywanie cookie (524)
- register_globals i nadpisywanie zmiennych (525)
- Pułapki cookie (526)
- Wysyłanie nagłówków HTTP (528)
- Przykład: przekierowanie (528)
- Przykład: uwierzytelnianie HTTP (529)
- Pułapki związane z nagłówkami (530)
- Pułapki i wykrywanie usterek (530)
- Podsumowanie (531)
Rozdział 25. Typy i rodzaje konwersji (533)
- Typ zaokrąglający (533)
- Zasoby (534)
- Co to są zasoby? (534)
- Jak obsługiwać zasoby (535)
- Typ testujący (535)
- Przypisanie i koercja (535)
- Przekroczenie typu liczb całkowitych (540)
- Odnajdywanie największej liczby całkowitej (541)
- Podsumowanie (541)
Rozdział 26. Zaawansowane użycie funkcji (543)
- Zmienna liczba argumentów (543)
- Argumenty domyślne (544)
- Tablice jako substytut wielu argumentów (544)
- Wiele argumentów w PHP4 i wersjach późniejszych (545)
- Wywołanie przez wartość (547)
- Wywołanie przez referencję (548)
- Zmienne jako nazwy funkcji (549)
- Bardziej skomplikowany przykład (549)
- Podsumowanie (553)
Rozdział 27. Matematyka (555)
- Stałe matematyczne (555)
- Sprawdzanie liczb (556)
- Konwersja podstawy (557)
- Funkcje wykładnicze i logarytmy (560)
- Trygonometria (561)
- Arytmetyka o dowolnej dokładności (BC) (563)
- Przykład użycia funkcji o dowolnej dokładności (565)
- Konwersja obliczeń na dowolną dokładność (565)
- Podsumowanie (567)
Rozdział 28. PEAR (569)
- Co to jest PEAR? (570)
- System pakietów PEAR (571)
- Próbka pakietów PEAR (571)
- Jak działa baza danych PEAR (572)
- Menedżer pakietów (572)
- Używanie menedżera (576)
- PHP Foundation Classes (PFC) (577)
- PHP Extension Code Library (PECL) (578)
- Styl kodowania PEAR (578)
- Wcięcia, odstępy i długość linii (578)
- Formatowanie struktur kontrolnych (579)
- Formatowanie funkcji i wywołań funkcji (580)
- Podsumowanie (581)
Rozdział 29. Bezpieczeństwo (583)
- Możliwe ataki (584)
- Zniszczenie witryny (584)
- Dostęp do kodu źródłowego (585)
- Odczytywanie dowolnych plików (587)
- Uruchamianie dowolnych programów (590)
- Wirusy i inne e-stworzenia (591)
- Bezpieczeństwo poczty elektronicznej (592)
- Register_globals (593)
- Przekazywanie plików (595)
- Szyfrowanie (599)
- Szyfrowanie kluczem publicznym (600)
- Szyfrowanie pojedynczym kluczem (601)
- Szyfrowanie cookies (603)
- Mieszanie (604)
- Cyfrowe podpisywanie plików (605)
- Secure Sockets Layer (606)
- Dla Twojej informacji: bezpieczne witryny sieciowe (607)
- Podsumowanie (607)
Rozdział 30. Konfiguracja (609)
- Podglądanie zmiennych środowiska (609)
- Poznajemy konfigurację PHP (609)
- Opcje kompilacji (610)
- Opcje kompilacji dla postaci CGI (614)
- Pliki konfiguracyjne Apache (616)
- Plik php.ini (618)
- Poprawianie wydajności PHP (622)
- Podsumowanie (624)
Rozdział 31. Wyjątki i obsługa błędów (627)
- Obsługa błędów w PHP5 (627)
- Błędy i wyjątki (628)
- Klasa wyjątku (629)
- Blok try/catch (630)
- Zgłaszanie wyjątku (630)
- Definiowanie własnych podklas Exception (631)
- Ograniczenia wyjątków w PHP (633)
- Inne metody obsługi błędów (633)
- Natywne błędy PHP (633)
- Definiowanie procedury obsługi błędów (635)
- Wyzwalanie błędów użytkownika (635)
- Odnotowywanie w dzienniku i debugowanie (636)
- Podsumowanie (637)
Rozdział 32. Debugowanie (639)
- Ogólne strategie rozwiązywania problemów (640)
- Jednorazowo zmiana jednej rzeczy (640)
- Spróbuj odizolować problem (640)
- Upraszczaj, później rozbudowuj (640)
- Sprawdź oczywiste rzeczy (640)
- Dokumentuj swoje rozwiązania (641)
- Po naprawie przetestuj (641)
- Menażeria błędów (641)
- Błędy w trakcie kompilacji (641)
- Błędy w trakcie działania (641)
- Błędy logiczne (642)
- Używanie dzienników zdarzeń serwera sieciowego (642)
- Zgłaszanie błędów PHP i odnotowywanie w dzienniku (644)
- Zgłaszanie błędów (645)
- Zapisywanie błędów w dzienniku (645)
- Wybór błędów do zgłaszania lub odnotowania w dzienniku (646)
- Funkcje zgłaszania błędów (646)
- Wyświetlane komunikaty diagnostyczne (646)
- Używanie print_r() (647)
- Używanie syslog() (648)
- Odnotowywanie do dziennika we własnej lokalizacji (649)
- Używanie error_log() (650)
- Graficzne narzędzia do debugowania (651)
- Unikanie błędów na pierwszym miejscu (651)
- Odnajdywanie błędów, jeśli się pojawią (652)
- Podsumowanie (653)
Rozdział 33. Styl (655)
- Zalety prawidłowego stylu (655)
- Czytelność (656)
- Komentarze (658)
- PHPDoc (659)
- Nazwy zmiennych i plików (659)
- Jednolitość stylu (661)
- Łatwość konserwacji (662)
- Unikaj magicznych liczb (662)
- Funkcje (662)
- Pliki dołączane (663)
- Interfejs obiektowy (663)
- Użycie programu kontroli wersji (664)
- Solidność (664)
- Niedostępność usługi (664)
- Niespodziewany typ zmiennej (665)
- Zwięzłość i wydajność (665)
- Używaj właściwych algorytmów (665)
- Poprawianie wydajności (666)
- Zwięzłość: zmniejszanie (667)
- Wskazówki na temat zwięzłości (668)
- Tryb HTML czy PHP? (670)
- Minimalny PHP (671)
- Maksymalny PHP (672)
- Średni PHP (672)
- Styl heredoc (673)
- Oddzielanie kodu od projektu (675)
- Funkcje (675)
- Arkusze stylów w PHP (675)
- Szablony i spójność stron (676)
- Podsumowanie (677)
Część IV Połączenia (679)
Rozdział 34. PostgreSQL (681)
- Dlaczego wybrać PostgreSQL? (681)
- Dlaczego tak czy owak obiektowo relacyjna? (683)
- Instalowanie PostgreSQL (683)
- Instalacja w systemie Linux (684)
- Ale czy jest to jeszcze baza danych? (685)
- Aż do prawdziwej pracy (687)
- PHP i PostgreSQL (688)
- Baza danych Cartoons (688)
- Podsumowanie (696)
Rozdział 35. Oracle (697)
- Kiedy potrzebujesz Oracle? (697)
- Pieniądze (698)
- Inne konkurencyjne zasoby (698)
- Ogromne zestawy danych (699)
- Wiele dużych zapisów lub błędne przekształcanie danych (699)
- Wyzwalacze (699)
- Odpowiedzialność prawna (700)
- Dwuletnie perspektywy (700)
- Oracle i architektura sieciowa (700)
- Wyspecjalizowani członkowie zespołu (700)
- Wspólne konstruowanie baz danych (701)
- Ograniczone zmiany schematu (701)
- Narzędzia (lub ich brak) (701)
- Replikacja i poprawna praca mimo usterek (701)
- Buforowanie danych (702)
- Używanie funkcji OCI8 (702)
- Sterowanie łańcuchami (703)
- Przetwarzanie i wykonywanie (703)
- Zgłaszanie błędów (704)
- Zarządzanie pamięcią (704)
- Proszenie o wartości null (704)
- Pobieranie całych zestawów danych (704)
- Duże litery (704)
- Transakcyjność (705)
- Procedury składowane i kursory (706)
- Projekt: edytor (707)
- Projekt: wsadowy edytor produktów (715)
- Podsumowanie (723)
Rozdział 36. Funkcje bazodanowe PEAR (725)
- Dyskusyjne zalety niezależności od baz danych (725)
- Rdzenne mechanizmy komunikacji z bazami danych (728)
- Abstrakcja bazodanowa (729)
- Zasady działania PEAR DB (730)
- Nazwy źródeł danych (DSN) (730)
- Połączenie (732)
- Wykonywanie zapytań (732)
- Odczytywanie wierszy (733)
- Rozłączanie (733)
- Kompletny przykład (733)
- Funkcje PEAR DB (735)
- Składowe klasy DB (735)
- Składowe klasy DB_Common (735)
- Składowe klasy DB_Result (736)
- Podsumowanie (736)
Rozdział 37. E-mail (737)
- Informacje na temat architektury e-mail (737)
- Serwer TCP/IP (738)
- Mail Transfer Agent (MTA), czyli serwer SMTP (739)
- Kolejka poczty (740)
- Mail User Agent, czyli lokalny klient pocztowy (740)
- Program pobierający pocztę (serwer POP/IMAP) (740)
- Zarządca list wysyłkowych (742)
- Pobieranie poczty za pomocą PHP (742)
- Tworzenie od podstaw (743)
- Tworzenie na przykładzie (743)
- Tworzenie przez upiększanie (744)
- Wysyłanie poczty za pomocą PHP (744)
- Konfiguracja Windows (744)
- Konfiguracja Uniksa (745)
- Funkcja mail (745)
- Więcej na temat aplikacji pocztowych (747)
- Wysyłanie poczty z formularza (747)
- Wysyłanie poczty przy użyciu bazy danych (749)
- Wysyłanie załączników w poczcie MIME (750)
- Własna aplikacja pocztowa w PHP (752)
- Wysyłanie poczty z cronjob (754)
- Problemy w czasie korzystania z poczty (756)
- Podsumowanie (757)
Rozdział 38. PHP i JavaScript (759)
- Tworzenie kodu JavaScript w PHP (759)
- Pojedynek obiektów (760)
- PHP nie analizuje wysyłanych danych (760)
- Kiedy używać JavaScript (761)
- PHP jako koło zapasowe do JavaScript (762)
- JavaScript statyczny kontra dynamiczny (764)
- Dynamiczna generacja formularzy (765)
- Przesyłanie danych z JavaScript do PHP (769)
- Podsumowanie (772)
Rozdział 39. PHP i Java (775)
- PHP dla programistów Java (775)
- Podobieństwa (776)
- Różnice (777)
- Java Server Pages i PHP (778)
- Przewodnik po książce (779)
- Integrowanie języków PHP i Java (780)
- Java SAPI (780)
- Rozszerzenie Java (781)
- Obiekt Java (783)
- Błędy i wyjątki (784)
- Możliwe problemy (785)
- Bez żadnych ograniczeń (786)
- Podsumowanie (786)
Rozdział 40. PHP i XML (789)
- Co to jest XML? (789)
- Praca z XML (792)
- Dokumenty i DTD (793)
- Struktura DTD (795)
- Analizatory kontrolujące i niekontrolujące poprawności (797)
- SAX kontra DOM (797)
- DOM (798)
- Stosowanie DOM XML (799)
- Funkcje DOM (799)
- SAX (801)
- Użycie SAX (802)
- Opcje SAX (803)
- Funkcje PHP dla SAX (804)
- API SimpleXML (805)
- Użycie SimpleXML (805)
- Funkcje SimpleXML (805)
- Przykładowa aplikacja SAX (806)
- Pułapki i wyszukiwanie błędów (812)
- Podsumowanie (812)
Rozdział 41. Usługi sieciowe (815)
- Koniec programowania, jakie znamy (815)
- Smutna prawda o wymianie danych (816)
- Pełna prostota (816)
- REST, XML-RPC, SOAP, .NET (819)
- REST (820)
- XML-RPC (820)
- SOAP (821)
- Usługi .NET (823)
- Słabe strony dzisiejszych usług sieciowych (823)
- Duże i wolne (823)
- Prawdopodobne znaczne obciążenie (823)
- Standardy (824)
- Ukrywanie i wyszukiwanie (824)
- Kto za to płaci i w jaki sposób? (825)
- Projekt: klient REST (825)
- Projekt: serwer i klient SOAP (829)
- Podsumowanie (833)
Rozdział 42. Grafika (835)
- Dostępne możliwości (835)
- Grafiki HTML (836)
- Tworzenie obrazków przy użyciu biblioteki gd (840)
- Czym jest biblioteka gd? (841)
- Formaty obrazków i przeglądarki (841)
- Wybór wersji (842)
- Instalacja (843)
- Zasady działania biblioteki gd (844)
- Funkcje (847)
- Obrazki i protokół HTTP (848)
- Przykład: fraktale (850)
- Rozwiązywanie problemów (858)
- Całkowicie pusta strona (858)
- Błąd "Headers already sent" (858)
- Zepsuty obrazek (859)
- Podsumowanie (860)
Część V Studium przypadków (861)
Rozdział 43. Dziennik sieciowy (863)
- Dlaczego dziennik? (863)
- Najprostszy dziennik (864)
- Dodanie HTML-owego narzędzia do edycji (869)
- Dołączenie bazy danych (871)
- Możliwe rozszerzenia (878)
- Podsumowanie (878)
Rozdział 44. Uwierzytelnianie użytkowników (879)
- Projektowanie systemu uwierzytelniania użytkowników (879)
- Unikanie powszechnych problemów związanych z bezpieczeństwem (881)
- Wyłączenie register_globals (881)
- Kontrola długości napisów a bezpieczeństwo (882)
- Jednokierunkowe szyfrowanie haseł (883)
- Rejestracja (884)
- Zalogowanie i wylogowanie (890)
- Narzędzia użytkowników (894)
- Zapomniane hasła (895)
- Zmiana poufnych danych użytkowników (897)
- Edycja niechronionych danych użytkowników (902)
- Narzędzia administracyjne (905)
- Autoryzacja: basic auth, cookie, baza danych i IP (906)
- Logowanie jako użytkownik (907)
- Podsumowanie (909)
Rozdział 45. System ocen użytkowników (911)
- Projekt początkowy (912)
- Dziedzina: witryna z cytatami (912)
- Możliwe oceny (912)
- Połączenie ocen z treścią (913)
- Zbieranie głosów (914)
- Agregowanie wyników (920)
- Rozszerzenia i możliwości (921)
- Podsumowanie (922)
Rozdział 46. Quiz (923)
- Pojęcia wykorzystywane w tym rozdziale (923)
- Gra (924)
- Nasza wersja gry (924)
- Przykładowe ekrany (924)
- Zasady (926)
- Zagraj w to sam (927)
- Kod (927)
- Pliki źródłowe (927)
- Utworzenie bazy danych (952)
- Rozważania projektowe (956)
- Rozdzielenie kodu i wyświetlania (956)
- Trwałość danych (956)
- Obsługa wyjątków (957)
- Podsumowanie (957)
Rozdział 47. Konwersja statycznych witryn HTML (959)
- Planowanie wielkiej modernizacji (959)
- Aby nie wylać dziecka z kąpielą (960)
- Ocena techniczna (961)
- Przeprojektowanie interfejsu użytkownika (962)
- Planowanie nowego schematu bazy danych (965)
- Przenoszenie danych do bazy danych (969)
- Poprawianie danych (969)
- Wprowadzanie danych (970)
- Zbieranie danych (974)
- Szablony (977)
- Wydajność i buforowanie (984)
- Podsumowanie (986)
Rozdział 48. Wizualizacja danych przy użyciu diagramów Venna (987)
- Skalowane diagramy Venna (987)
- Struktura kodu (988)
- Wymagana trygonometria (989)
- Planowanie wyświetlania (992)
- Uproszczenie założeń (992)
- Określenie rozmiaru i skali (993)
- Wyświetlenie wyniku (998)
- Wizualizacja bazy danych (999)
- Rozszerzenia (1004)
- Podsumowanie (1005)
Dodatki (1007)
Dodatek A PHP dla programistów C (1009)
Dodatek B PHP dla hakerów Perl (1015)
Dodatek C PHP dla programistów HTML (1021)
Dodatek D Zasoby Sieci na temat PHP (1029)
Skorowidz (1041)