okladka

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)
    • Błąd HTTP nr 403 (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)
    • Typy danych MySQL (338)
  • 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)
    • Apache (642)
    • IIS (644)
  • 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)
    • Buforowanie (985)
  • Podsumowanie (986)
Rozdział 48. Wizualizacja danych przy użyciu diagramów Venna (987)
  • Skalowane diagramy Venna (987)
    • Zadanie (988)
  • 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)
    • Testowanie (1003)
  • 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)