
PHP i MySQL to wydajny tandem, pozwalający na realizację wielu projektów związanych z programowaniem aplikacji internetowych. Autorzy książki "PHP i MySQL. Tworzenie stron WWW. Wydanie drugie. Vademecum profesjonalisty" stworzyli więc unikatowy podręcznik, który łączy w sobie opis funkcjonalności PHP i MySQL z prezentacją wielu praktycznych rozwiązań, stworzonych za pomocą tych narzędzi. To podejście okazało się trafione, czego dowodem jest ogromna popularność pierwszego wydania tej książki.Oprócz składni i biblioteki funkcji PHP, książka opisuje również podstawowe pojęcia z dziedziny profesjonalnej inżynierii oprogramowania związanego z siecią WWW. Niektóre, takie jak utrzymywanie, współpraca i testowanie, są kwestiami istotnymi dla inżynierów oprogramowania. Inne pojęcia, takie jak uwierzytelnianie, szyfrowanie i kontrola sesji, mają szczególne znaczenie dla projektów programistycznych opartych na Internecie.
- Podstawowy kurs PHP
- Tworzenie i obsługa baz danych za pomocą MySQL
- Dynamiczne tworzenie kodu HTML, obrazków i dokumentów
- Tworzenie bezpiecznych usług za pomocą uwierzytelniania i SSL
- Tworzenie koszyka na zakupy dla witryn handlu elektronicznego
- Opis praktyk związanych z inżynierią oprogramowania dla większych projektów WWW
- Zastosowanie obiektowych technik programistycznych
- Tworzenie spersonalizowanych dokumentów PDF
- Korzystanie z usług WWW za pomocą XML i SOAP
Opinia o pierwszym wydaniu:
(...) Podręcznik jest godny polecenia co najmniej z dwóch powodów. Po pierwsze poruszana tematyka jest bardzo obszerna i obejmuje większość typowych problemów programisty WWW. Ponadto wszelkie kłopoty rozwiązywane są za pomocą dwóch popularnych komponentów (PHP i MySQL), dzięki czemu niejednokrotnie unikniemy przedzierania się przez dokumentację obu produktów.
-- Chip, 08/2002

Wprowadzenie (21)
Część I Stosowanie PHP (29)
Rozdział 1. Podstawowy kurs PHP (31)
- Zastosowanie PHP (32)
- Przykładowa aplikacja: "Części samochodowe Janka" (32)
- Formularz zamówienia (32)
- Przetwarzanie formularza (34)
- Osadzanie PHP w HTML (34)
- Zastosowanie znaczników PHP (35)
- Style znaczników PHP (36)
- Instrukcje PHP (36)
- Odstępy (37)
- Komentarze (37)
- Dodawanie zawartości dynamicznej (38)
- Wywoływanie funkcji (39)
- Funkcja date() (39)
- Dostęp do zmiennych formularza (39)
- Zmienne formularza (40)
- Łączenie ciągów (42)
- Zmienne i ciągi znaków (43)
- Identyfikatory (44)
- Zmienne zadeklarowane przez użytkownika (44)
- Przypisywanie wartości zmiennym (44)
- Typy zmiennych (45)
- Typy danych w PHP (45)
- Siła typu (45)
- Rzutowanie typu (46)
- Zmienne zmiennych (46)
- Stałe (47)
- Zasięg zmiennych (47)
- Operatory (48)
- Operatory arytmetyczne (49)
- Operatory ciągów (50)
- Operatory przypisania (50)
- Operatory porównań (52)
- Operatory logiczne (53)
- Operatory bitowe (54)
- Pozostałe operatory (54)
- Stosowanie operatorów: obliczanie sum w formularzu (56)
- Pierwszeństwo i kolejność: wyznaczanie wartości wyrażeń (57)
- Zarządzanie zmiennymi (58)
- Sprawdzanie i ustawianie typów zmiennych (58)
- Sprawdzanie stanu zmiennej (59)
- Reinterpretacja zmiennych (60)
- Struktury kontrolujące (60)
- Podejmowanie decyzji za pomocą instrukcji warunkowych (60)
- Instrukcja if (61)
- Bloki kodu (61)
- Instrukcja else (62)
- Instrukcja elseif (62)
- Instrukcja switch (63)
- Porównanie różnych instrukcji warunkowych (65)
- Iteracja: powtarzanie działań (65)
- Pętle while (66)
- Pętle for i foreach (67)
- Pętle do..while (69)
- Wyłamywanie się ze struktury skryptu (69)
- W następnym rozdziale: zapisywanie zamówienia klienta (69)
- Zapisywanie danych do późniejszego użycia (71)
- Przechowywanie i wyszukiwanie zamówień Janka (72)
- Podstawowe informacje na temat przetwarzania plików (73)
- Otwieranie pliku (73)
- Tryby otwarcia pliku (73)
- Stosowanie funkcji fopen() do otwarcia pliku (74)
- Otwieranie pliku przez protokół FTP lub HTTP (76)
- Problemy z otwieraniem plików (77)
- Zapisywanie danych w pliku (79)
- Parametry funkcji fwrite() (79)
- Formaty plików (79)
- Zamykanie pliku (80)
- Odczyt z pliku (80)
- Otwieranie pliku w celu odczytu - fopen() (81)
- Wiedzieć, kiedy przestać - feof() (82)
- Odczytywanie pliku wiersz po wierszu - fgets(), fgetss() i fgetcsv() (82)
- Odczyt całego pliku - readfile(), fpassthru(), file() (83)
- Odczyt pojedynczego znaku - fgetc() (84)
- Odczytywanie zadanej długości - fread() (84)
- Inne przydatne funkcje plikowe (85)
- Sprawdzanie istnienia pliku - file_exists() (85)
- Określanie wielkości pliku - filesize() (85)
- Kasowanie pliku - unlink() (85)
- Poruszanie się wewnątrz pliku - rewind(), fseek() i ftell() (85)
- Blokowanie pliku (86)
- Lepszy sposób obróbki danych - systemy zarządzania bazami danych (88)
- Problemy związane ze stosowaniem plików jednorodnych (88)
- Jak RDBMS rozwiązują powyższe problemy? (88)
- Propozycje dalszych lektur (89)
- W następnym rozdziale (89)
- Czym są tablice? (91)
- Tablice indeksowane numerycznie (92)
- Inicjowanie tablic indeksowanych numerycznie (92)
- Dostęp do zawartości tablicy (93)
- Dostęp do tablic przy zastosowaniu pętli (94)
- Tablice asocjacyjne (94)
- Inicjowanie tablicy asocjacyjnej (94)
- Dostęp do elementów tablicy (95)
- Stosowanie pętli z tablicami asocjacyjnymi (95)
- Tablice wielowymiarowe (97)
- Sortowanie tablic (100)
- Stosowanie funkcji sort() (100)
- Stosowanie funkcji asort() i ksort() do porządkowania tablic asocjacyjnych (101)
- Sortowanie odwrotne (101)
- Sortowanie tablic wielowymiarowych (101)
- Typy sortowań definiowane przez użytkownika (102)
- Odwrotne sortowanie zdefiniowane przez użytkownika (103)
- Zmiany kolejności elementów w tablicach (104)
- Stosowanie funkcji shuffle() (104)
- Stosowanie funkcji array_reverse() (105)
- Ładowanie tablic z plików (106)
- Inne działania na tablicach (109)
- Poruszanie się wewnątrz tablicy - funkcje each(), current(), reset(), end(), next(), pos() i prev() (109)
- Dołączanie dowolnej funkcji do każdego elementu tablicy - funkcja array_walk() (110)
- Liczenie elementów tablicy: count(), sizeof() i array_count_values() (111)
- Konwersja tablic na zmienne skalarne - funkcja extract() (112)
- Propozycje dalszych lektur (113)
- W następnym rozdziale (113)
- Przykładowa aplikacja - Inteligentny Formularz Pocztowy (115)
- Formatowanie ciągów (117)
- Przycinanie ciągów - funkcje chop(), ltrim() i trim() (117)
- Formatowanie ciągów w celu ich prezentacji (118)
- Formatowanie ciągów do przechowania - funkcje AddSlashes() i StripSlashes() (121)
- Łączenie i rozdzielanie ciągów za pomocą funkcji ciągów (122)
- Stosowanie funkcji explode(), implode() i join() (123)
- Stosowanie funkcji strtok() (124)
- Stosowanie funkcji substr() (124)
- Porównywanie ciągów (125)
- Porządkowanie ciągów - funkcje strcmp(), strcasecmp() i strnatcmp() (125)
- Sprawdzanie długości ciągu za pomocą funkcji strlen() (126)
- Dopasowywanie i zamiana podciągów za pomocą funkcji ciągów (126)
- Znajdowanie ciągów w ciągach - funkcje strstr(), strchr(), strrchr() i stristr() (127)
- Odnajdywanie pozycji podciągu - funkcje strpos() i strrpos() (128)
- Zamiana podciągów - funkcje str_replace() i substr_replace() (129)
- Wprowadzenie do wyrażeń regularnych (130)
- Podstawy (130)
- Zbiory i klasy znaków (131)
- Powtarzalność (132)
- Podwyrażenia (132)
- Podwyrażenia policzalne (132)
- Kotwiczenie na początku lub na końcu ciągu (133)
- Rozgałęzianie (133)
- Dopasowywanie specjalnych znaków literowych (133)
- Podsumowanie znaków specjalnych (133)
- Umieszczanie wszystkiego razem (Inteligentny Formularz) (134)
- Odnajdywanie podciągów za pomocą wyrażeń regularnych (135)
- Zamiana podciągów za pomocą wyrażeń regularnych (136)
- Rozdzielanie ciągów za pomocą wyrażeń regularnych (136)
- Porównanie funkcji ciągów i funkcji wyrażeń regularnych (137)
- Propozycje dalszych lektur (137)
- W następnym rozdziale (137)
- Dlaczego ponownie stosować kod? (139)
- Koszt (140)
- Niezawodność (140)
- Spójność (140)
- Stosowanie funkcji require() i include() (140)
- Stosowanie funkcji require() (141)
- Rozszerzenia plików i require() (142)
- Znaczniki PHP i require() (142)
- Stosowanie require() w szablonach stron WWW (142)
- Stosowanie opcji auto_prepend_file i auto_append_file (147)
- Stosowanie funkcji include() (148)
- Stosowanie funkcji w PHP (149)
- Wywoływanie funkcji (150)
- Wywołanie niezdefiniowanej funkcji (151)
- Wielkość liter a nazwy funkcji (152)
- Dlaczego powinno się definiować własne funkcje? (152)
- Podstawowa struktura funkcji (152)
- Nadawanie nazwy funkcji (153)
- Parametry (154)
- Zasięg (156)
- Przekazanie przez referencję czy przekazanie przez wartość? (158)
- Powrót z funkcji (159)
- Zwracanie wartości przez funkcje (160)
- Bloki kodu (161)
- Rekurencja (162)
- Propozycje dalszych lektur (164)
- W następnym rozdziale (164)
- Koncepcje programowania obiektowego (165)
- Klasy i obiekty (165)
- Polimorfizm (167)
- Dziedziczenie (167)
- Tworzenie klas, atrybutów i operacji w PHP (168)
- Struktura klasy (168)
- Konstruktory (168)
- Tworzenie egzemplarzy (169)
- Stosowanie atrybutów klasy (169)
- Wywoływanie operacji klas (171)
- Implementacja dziedziczenia w PHP (172)
- Unieważnianie (173)
- Wielodziedziczenie (174)
- Tworzenie klas (175)
- Tworzenie kodu dla własnej klasy (175)
- W następnej części (183)
Rozdział 7. Projektowanie internetowej bazy danych (187)
- Koncepcje relacyjnych baz danych (188)
- Tabele (188)
- Kolumny (188)
- Wiersze (188)
- Wartości (188)
- Klucze (189)
- Schematy (190)
- Relacje (190)
- Jak zaprojektować internetową bazę danych? (191)
- Określ obiekty świata realnego, których model chcesz wykonać (191)
- Unikaj przechowywania redundantnych danych (191)
- Zapisuj atomowe wartości kolumn (193)
- Dobierz właściwe klucze (194)
- Pomyśl o zapytaniach, które zadasz bazie (194)
- Unikaj tworzenia tabel z wieloma pustymi polami (194)
- Typy tabel - podsumowanie (195)
- Architektura internetowej bazy danych (196)
- Architektura (196)
- Propozycje dalszych lektur (197)
- W następnym rozdziale (197)
- Uwagi na temat użytkowania monitora MySQL (200)
- Jak zalogować się do serwera MySQL (201)
- Tworzenie baz i rejestrowanie użytkowników (202)
- Tworzenie bazy danych (202)
- Użytkownicy i przywileje (203)
- Wprowadzenie do systemu przywilejów MySQL (203)
- Zasada najmniejszego przywileju (203)
- Rejestrowanie użytkowników: polecenie GRANT (204)
- Typy i poziomy przywilejów (205)
- Polecenie REVOKE (207)
- Przykłady użycia poleceń GRANT i REVOKE (207)
- Rejestrowanie użytkownika łączącego się z Internetu (208)
- Wylogowanie się użytkownika root (209)
- Używanie odpowiedniej bazy danych (209)
- Tworzenie tabel bazy danych (210)
- Znaczenie dodatkowych atrybutów kolumn (211)
- Typy kolumn (212)
- Rzut oka na bazę danych - polecenia SHOW i DESCRIBE (214)
- Identyfikatory MySQL (215)
- Typy danych w kolumnach (216)
- Typy liczbowe (216)
- Propozycje dalszych lektur (220)
- W następnym rozdziale (220)
- Czym jest SQL? (221)
- Zapisywanie danych do bazy (222)
- Wyszukiwanie danych w bazie (224)
- Wyszukiwanie danych spełniających określone kryteria (225)
- Wyszukiwanie danych w wielu tabelach (227)
- Szeregowanie danych w określonym porządku (232)
- Grupowanie i agregowanie danych (233)
- Wskazanie wierszy, które mają być wyświetlone (235)
- Dokonywanie zmian rekordów w bazie danych (235)
- Zmiana struktury istniejących tabel (236)
- Usuwanie rekordów z bazy danych (237)
- Usuwanie tabel (238)
- Usuwanie całych baz danych (238)
- Propozycje dalszych lektur (238)
- W następnym rozdziale (238)
- Jak działa internetowa baza danych? (240)
- Etapy wysyłania zapytań do bazy danych z poziomu strony WWW (243)
- Sprawdzenie poprawności wpisanych danych (243)
- Ustanawianie połączenia z bazą danych (244)
- Wybór właściwej bazy danych (246)
- Wysyłanie zapytań do bazy danych (246)
- Odczytywanie rezultatów zapytań (247)
- Zamykanie połączenia z bazą danych (248)
- Wstawianie nowych danych do bazy (248)
- Inne użyteczne funkcje PHP i MySQL (252)
- Zwalnianie zasobów (252)
- Tworzenie i usuwanie baz danych (252)
- Inne interfejsy bazodanowe PHP (252)
- Stosowanie ogólnego intrefejsu bazodanowego: PEAR DB (253)
- Propozycje dalszych lektur (256)
- W następnym rozdziale (256)
- Szczegóły systemu przywilejów (257)
- Tabela user (258)
- Tabele db i host (259)
- Tabele tables_priv i columns_priv (261)
- Kontrola dostępu: w jaki sposób MySQL używa tabel przywilejów (261)
- Zmiana przywilejów: kiedy zmiany zostaną uwzględnione? (262)
- Ochrona bazy danych (263)
- MySQL z perspektywy systemu operacyjnego (263)
- Hasła (263)
- Przywileje użytkowników (264)
- MySQL i Internet (265)
- Uzyskiwanie szczegółowych informacji o bazie danych (265)
- Uzyskiwanie informacji poleceniem SHOW (266)
- Uzyskiwanie informacji o kolumnach za pomocą polecenia DESCRIBE (267)
- Jak wykonywane są zapytania: polecenie EXPLAIN (268)
- Przyspieszanie wykonania zapytań za pomocą indeksów (271)
- Wskazówki dotyczące optymalizacji (271)
- Optymalizacja projektu bazy danych (272)
- Przywileje (272)
- Optymalizacja tabel (272)
- Stosowanie indeksów (272)
- Używanie wartości domyślnych (273)
- Używanie stałych połączeń z bazą (273)
- Więcej wskazówek (273)
- Różne typy tabel (273)
- Ładowanie danych z pliku (274)
- Tworzenie kopii zapasowej bazy danych MySQL (274)
- Przywracanie bazy danych MySQL (275)
- Propozycje dalszych lektur (275)
- W następnej części (275)
Rozdział 12. Komercyjne witryny internetowe (279)
- Co chcemy osiągnąć? (279)
- Rodzaje komercyjnych stron WWW (279)
- Broszury internetowe (280)
- Przyjmowanie zamówień na produkty i usługi (283)
- Dostarczanie usług lub wyrobów mających postać cyfrową (287)
- Zwiększanie wartości produktów i usług (288)
- Ograniczanie kosztów (288)
- Ryzyko i zagrożenia (289)
- Crackerzy (289)
- Przyciągnięcie niewystarczającej liczby klientów (290)
- Awarie sprzętu komputerowego (290)
- Awarie sieci elektrycznych, komunikacyjnych i komputerowych oraz systemu wysyłkowego (291)
- Silna konkurencja (291)
- Błędy w oprogramowaniu (291)
- Zmiany polityki rządowej (292)
- Ograniczenie pojemności systemów (292)
- Wybór strategii (292)
- W następnym rozdziale (293)
- Jaką wagę mają posiadane przez nas informacje? (296)
- Zagrożenia bezpieczeństwa (296)
- Ujawnienie informacji poufnych (297)
- Utrata lub zniszczenie danych (299)
- Modyfikacje danych (299)
- Blokada usługi (300)
- Błędy w oprogramowaniu (301)
- Zaprzeczenie korzystania z usługi (303)
- Równoważenie użyteczności, wydajności, kosztów i bezpieczeństwa (304)
- Opracowanie polityki bezpieczeństwa (305)
- Zasady uwierzytelniania (305)
- Wykorzystanie mechanizmu uwierzytelniania (306)
- Podstawy szyfrowania (307)
- Szyfrowanie z kluczem prywatnym (308)
- Szyfrowanie z kluczem publicznym (309)
- Podpis cyfrowy (310)
- Certyfikaty cyfrowe (311)
- Bezpieczne serwery WWW (312)
- Monitorowanie i zapisywanie zdarzeń (314)
- Zapory sieciowe (314)
- Tworzenie kopii zapasowych (315)
- Tworzenie kopii zapasowych zwykłych plików (315)
- Tworzenie kopii zapasowych i odzyskiwanie baz danych MySQL (316)
- Bezpieczeństwo fizyczne (316)
- W następnym rozdziale (317)
- Identyfikacja użytkowników (319)
- Implementacja kontroli dostępu (320)
- Przechowywanie haseł dostępu (323)
- Szyfrowanie haseł (325)
- Zastrzeganie więcej niż jednej strony (327)
- Podstawowa metoda uwierzytelniania (327)
- Wykorzystanie podstawowej metody uwierzytelniania w PHP (329)
- Wykorzystanie podstawowej metody uwierzytelniania na serwerze Apache
przy użyciu plików .htaccess (330)
- Wykorzystanie podstawowej metody uwierzytelniania na serwerze IIS (334)
- Wykorzystanie modułu mod_auth_mysql do celów uwierzytelniania (337)
- Instalacja modułu mod_auth_mysql (337)
- Zadziałało? (338)
- Praca z mod_auth_mysql (338)
- Implementacja własnej metody uwierzytelniania (339)
- Propozycje dalszych lektur (340)
- W następnym rozdziale (340)
- Zapewnienie bezpieczeństwa transakcji (341)
- Komputer użytkownika (342)
- Internet (344)
- System docelowy (345)
- Wykorzystanie protokołu Secure Sockets Layer (SSL) (346)
- Kontrola danych pochodzących od użytkownika (349)
- Bezpieczne przechowywanie danych (350)
- Cel przechowywania numerów kart kredytowych (352)
- Szyfrowanie danych w PHP (352)
- Propozycje dalszych lektur (361)
- W następnej części (361)
Rozdział 16. Interakcja z systemem plików i serwerem (365)
- Wprowadzenie do wysyłania plików (365)
- Kod HTML służący do wysyłania plików (366)
- Uwaga na temat bezpieczeństwa (367)
- Tworzenie obsługującego plik PHP (367)
- Najczęściej spotykane problemy (372)
- Stosowanie funkcji katalogowych (372)
- Odczyt z katalogów (373)
- Otrzymywanie informacji na temat aktualnego katalogu (374)
- Tworzenie i usuwanie katalogów (374)
- Interakcja z systemem plików (375)
- Otrzymywanie informacji o pliku (375)
- Zmiana właściwości pliku (378)
- Tworzenie, usuwanie i przenoszenie plików (378)
- Stosowanie funkcji uruchamiających programy (379)
- Interakcja ze środowiskiem: funkcje getenv() i putenv() (382)
- Propozycje dalszych lektur (382)
- W następnym rozdziale (382)
- Przegląd protokołów (383)
- Wysyłanie i odczytywanie poczty elektronicznej (384)
- Korzystanie z innych usług WWW (384)
- Stosowanie funkcji połączeń sieciowych (387)
- Korzystanie z FTP (391)
- Stosowanie FTP w celu utworzenia kopii bezpieczeństwa lub kopii lustrzanej pliku (391)
- Wysyłanie plików (397)
- Unikanie przekroczenia dopuszczalnego czasu (398)
- Stosowanie innych funkcji FTP (398)
- Stosowanie ogólnej komunikacji sieciowej za pomocą cURL (399)
- Propozycje dalszych lektur (401)
- W następnym rozdziale (402)
- Uzyskiwanie informacji o dacie i czasie w PHP (403)
- Stosowanie funkcji date() (403)
- Obsługa znaczników czasu Uniksa (405)
- Stosowanie funkcji getdate() (406)
- Sprawdzanie poprawności dat (406)
- Konwersja pomiędzy formatami daty PHP i MySQL (407)
- Obliczanie dat (407)
- Stosowanie funkcji kalendarzowych (409)
- Propozycje dalszych lektur (410)
- W następnym rozdziale (410)
- Konfigurowanie obsługi obrazków w PHP (411)
- Formaty obrazków (412)
- JPEG (412)
- PNG (413)
- WBMP (413)
- GIF (413)
- Tworzenie obrazków (414)
- Tworzenie kadru obrazka (415)
- Rysowanie lub umieszczanie tekstu w obrazku (416)
- Wyświetlanie ostatecznej grafiki (417)
- Końcowe czynności porządkujące (419)
- Stosowanie automatycznie generowanych obrazków na innych stronach (419)
- Stosowanie tekstu i czcionek do tworzenia obrazków (420)
- Konfiguracja podstawowego kadru (423)
- Dopasowanie tekstu do przycisku (423)
- Nadawanie tekstowi odpowiedniej pozycji (426)
- Wpisywanie tekstu do przycisku (427)
- Etap końcowy (427)
- Rysowanie figur i wykresów danych (427)
- Inne funkcje obrazków (435)
- Propozycje dalszych lektur (435)
- W następnym rozdziale (435)
- Czym jest kontrola sesji? (437)
- Podstawowa zasada działania sesji (438)
- Czym jest cookie? (438)
- Konfiguracja cookies w PHP (439)
- Stosowanie cookies w sesji (439)
- Przechowywanie identyfikatora sesji (440)
- Implementacja prostych sesji (440)
- Rozpoczynanie sesji (440)
- Zgłaszanie zmiennych sesji (441)
- Stosowanie zmiennych sesji (441)
- Usuwanie zmiennych i niszczenie sesji (442)
- Przykład prostej sesji (442)
- Konfiguracja kontroli sesji (445)
- Implementacja uwierzytelniania w kontroli sesji (446)
- Propozycje dalszych lektur (451)
- W następnym rozdziale (452)
- Stosowanie magicznych cudzysłowów (453)
- Wykonywanie ciągów - funkcja eval() (454)
- Zakończenie wykonania - die i exit (455)
- Serializacja (455)
- Pobieranie informacji na temat środowiska PHP (456)
- Uzyskiwanie informacji na temat załadowanych rozszerzeń (457)
- Identyfikacja właściciela skryptu (457)
- Uzyskiwanie informacji na temat daty modyfikacji skryptu (457)
- Dynamiczne dodawanie rozszerzeń (458)
- Czasowa zmiana środowiska wykonawczego (458)
- Podświetlanie źródeł (459)
- W następnej części (460)
Rozdział 22. Stosowanie PHP i MySQL w dużych projektach (463)
- Zastosowanie inżynierii oprogramowania w tworzeniu aplikacji WWW (464)
- Planowanie i prowadzenie projektu aplikacji WWW (464)
- Ponowne stosowanie kodu (465)
- Tworzenie kodu łatwego w utrzymaniu (466)
- Standardy kodowania (466)
- Dzielenie kodu (469)
- Stosowanie standardowej struktury katalogów (470)
- Dokumentacja i dzielenie wewnętrznych funkcji (470)
- Implementacja kontroli wersji (470)
- Wybór środowiska programistycznego (472)
- Dokumentacja projektów (472)
- Prototypowanie (473)
- Oddzielanie logiki i zawartości (474)
- Optymalizacja kodu (475)
- Stosowanie prostych optymalizacji (475)
- Stosowanie produktów firmy Zend (476)
- Testowanie (476)
- Propozycje dalszych lektur (477)
- W następnym rozdziale (478)
- Błędy programistyczne (479)
- Błędy składni (480)
- Błędy wykonania (481)
- Błędy logiczne (486)
- Pomoc w usuwaniu błędów w zmiennych (488)
- Poziomy zgłaszania błędów (489)
- Zmiana ustawień zgłaszania błędów (491)
- Wyzwalanie własnych błędów (492)
- Elegancka obsługa błędów (492)
- W następnym rozdziale (494)
- Problem (495)
- Składniki rozwiązania (496)
- Identyfikacja użytkownika i personalizacja (496)
- Przechowywanie zakładek (497)
- Rekomendowanie zakładek (497)
- Przegląd rozwiązania (497)
- Implementacja bazy danych (498)
- Implementacja podstawowej witryny (500)
- Implementacja uwierzytelniania użytkowników (503)
- Rejestracja (503)
- Logowanie (509)
- Wylogowanie (512)
- Zmiana hasła (513)
- Ustawianie zapomnianych haseł (515)
- Implementacja przechowywania i odczytywania zakładek (519)
- Dodawanie zakładek (520)
- Wyświetlanie zakładek (522)
- Usuwanie zakładek (523)
- Implementacja rekomendacji (525)
- Rozwijanie projektu i możliwe rozszerzenia (529)
- W następnym rozdziale (529)
- Problem (531)
- Składniki rozwiązania (532)
- Tworzenie katalogu online (532)
- Śledzenie zakupów użytkownika podczas przeglądania (532)
- Płatność (532)
- Interfejs administratora (533)
- Przegląd rozwiązania (533)
- Implementacja bazy danych (536)
- Implementacja katalogu online (538)
- Przedstawianie kategorii (540)
- Wyświetlanie książek danej kategorii (543)
- Przedstawianie szczegółowych danych książki (544)
- Implementacja koszyka na zakupy (546)
- Stosowanie skryptu pokaz_kosz.php (546)
- Podgląd koszyka (549)
- Dodawanie produktów do koszyka (551)
- Zapisywanie uaktualnionego koszyka (553)
- Wyświetlanie podsumowania w pasku nagłówka (554)
- Pobyt w kasie (554)
- Implementacja płatności (559)
- Implementacja interfejsu administratora (561)
- Rozwijanie projektu (567)
- Zastosowanie istniejącego systemu (568)
- W następnym rozdziale (568)
- Problem (569)
- Wymagania systemu (570)
- Edycja zawartości (570)
- Umieszczanie zawartości w systemie (570)
- Bazy danych czy pliki? (571)
- Struktura dokumentu (572)
- Stosowanie metadanych (572)
- Formatowanie danych wyjściowych (573)
- Manipulacja obrazkiem (574)
- Projekt/przegląd rozwiązania (576)
- Projektowanie bazy danych (576)
- Implementacja (579)
- Fronton systemu (579)
- Wnętrze systemu (582)
- Wyszukiwanie (590)
- Ekran redaktora naczelnego (593)
- Rozwijanie projektu (594)
- W następnym rozdziale (594)
- Problem (595)
- Składniki rozwiązania (596)
- Przegląd rozwiązania (597)
- Konfiguracja bazy danych (599)
- Architektura skryptu (601)
- Logowanie i wylogowanie (606)
- Konfiguracja kont (609)
- Tworzenie nowego konta (611)
- Modyfikacja istniejącego konta (612)
- Usuwanie konta (612)
- Odczytywanie poczty (613)
- Wybór konta (613)
- Przeglądanie zawartości skrzynki (616)
- Odczytywanie wiadomości pocztowych (619)
- Przeglądanie nagłówków wiadomości (622)
- Usuwanie wiadomości (623)
- Wysyłanie wiadomości (624)
- Wysyłanie nowej wiadomości (624)
- Odpowiadanie i przekazywanie poczty (626)
- Rozwijanie projektu (627)
- W następnym rozdziale (628)
- Problem (629)
- Składniki rozwiązania (630)
- 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 (632)
- Architektura skryptu (635)
- Implementacja logowania (642)
- Tworzenie nowego konta (643)
- Logowanie (646)
- Implementacja funkcji użytkownika (648)
- Przeglądanie list (648)
- Przeglądanie informacji na temat listy (653)
- Przeglądanie archiwum listy (655)
- Zapisywanie i wypisywanie (656)
- Zmiana konfiguracji konta (657)
- Zmiana hasła (657)
- Wylogowanie (659)
- Implementacja funkcji administratora (660)
- Tworzenie nowej listy (660)
- Wysyłanie nowych wiadomości (662)
- Obsługa wysyłania wielu plików (665)
- Podgląd wiadomości (668)
- Rozsyłanie wiadomości (669)
- Rozwijanie projektu (675)
- W następnym rozdziale (676)
- Problem (677)
- Składniki rozwiązania (678)
- Przegląd rozwiązania (679)
- Projektowanie bazy danych (680)
- Przeglądanie drzewa artykułów (683)
- Rozwijanie i zwijanie (685)
- Wyświetlanie artykułów (688)
- Korzystanie z klasy wezel_drzewa (689)
- Przeglądanie pojedynczych artykułów (695)
- Dodawanie nowych artykułów (697)
- Rozszerzenia (703)
- Wykorzystanie istniejącego systemu (704)
- W następnym rozdziale (704)
- Problem (705)
- Ocena formatów dokumentów (706)
- Papier (706)
- ASCII (707)
- HTML (707)
- Formaty edytorów tekstu (707)
- Format RTF (708)
- PostScript (709)
- Format PDF (710)
- Składniki rozwiązania (710)
- System pytań i odpowiedzi (711)
- Oprogramowanie generujące dokumenty (711)
- Przegląd rozwiązania (713)
- Zadawanie pytań (714)
- Ocena odpowiedzi (716)
- Tworzenie certyfikatu RTF (718)
- Tworzenie certyfikatu PDF z szablonu (722)
- Generowanie dokumentu PDF za pomocą PDFlib (725)
- Skrypt "Witaj świecie" dla PDFlib (725)
- Tworzenie certyfikatu za pomocą PDFlib (729)
- Problemy związane z nagłówkami (736)
- Rozwijanie projektu (736)
- Propozycje dalszych lektur (736)
- Problem (737)
- Podstawy XML (738)
- Podstawy usług sieciowych (742)
- SOAP (742)
- WSDL (743)
- Składniki rozwiązania (743)
- Konstrukcja koszyka na zakupy (744)
- Korzystanie z interfejsu usług sieciowych Amazon.com (744)
- Wczytywanie dokumentów XML (745)
- Korzystanie z SOAP za pomocą PHP (745)
- Buforowanie (745)
- Opis rozwiązania (746)
- Aplikacja główna (750)
- Wyświetlanie listy książek z danej kategorii (754)
- Tworzenie obiektu klasy WynikiWyszukiwania (757)
- Przesyłanie dokumentów XML (765)
- Korzystanie z protokołu SOAP (770)
- Buforowanie danych (772)
- Konstrukcja koszyka na zakupy (774)
- Przejście do kasy na witrynie Amazon.com (777)
- Instalacja kodu źródłowego (778)
- Kierunki rozwoju (778)
- Literatura (778)
Dodatek A Instalacja PHP4 i MySQL (781)
- Uruchamianie PHP jako CGI lub moduł serwera (782)
- Instalacja Apache, PHP i MySQL w systemie UNIX (782)
- Instalacja przy użyciu binariów (782)
- Instalacja przy użyciu kodów źródłowych (783)
- Plik httpd.conf - informacje końcowe (790)
- Czy obsługa PHP działa poprawnie? (790)
- Czy SSL działa poprawnie? (792)
- Instalacja Apache, PHP i MySQL w systemie Windows (793)
- Instalacja MySQL w systemie Windows (793)
- Instalacja serwera Apache w systemie Windows (797)
- Instalacja PHP w systemie Windows (799)
- Instalowanie PEAR (803)
- Inne konfiguracje (804)
- Zasoby poświęcone PHP (805)
- Zasoby poświęcone MySQL i SQL (807)
- Zasoby poświęcone serwerowi Apache (807)
- Zasoby poświęcone tworzeniu stron WWW (808)