okladka
Ta praktyczna książka, ukazująca przede wszystkim zastosowania komercyjne, zawiera liczne przykłady. Ilustrują one realizację następujących zadań: uwierzytelnianie użytkowników, konstruowanie koszyka na zakupy, dynamiczne generowanie dokumentów PDF i obrazków, wysyłanie i zarządzanie pocztą elektroniczną, ułatwianie dyskusji między użytkownikami oraz zarządzanie zawartością. Autorzy położyli istotny nacisk na kwestię bezpieczeństwa.

Oprócz składni i biblioteki funkcji PHP, niniejsza 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 pracujących we wszystkich domenach zastosowań. Inne pojęcia, takie jak uwierzytelnianie, szyfrowanie i kontrola sesji, mają szczególne znaczenie dla projektów programistycznych opartych na Internecie.

  • 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 w Internecie

O Autorach (21)
Wprowadzenie (23)
  • Dlaczego warto przeczytać niniejszą książkę? (23)
  • Korzyści wynikające z lektury tej książki (24)
  • Czym jest PHP? (25)
  • Nowości w PHP, wersja 4 (25)
  • Czym jest MySQL? (26)
  • Dlaczego warto wykorzystywać PHP i MySQL? (26)
  • Niektóre zalety PHP (27)
    • Wydajność (27)
    • Integracja z bazami danych (27)
    • Wbudowane biblioteki (27)
    • Koszt (28)
    • Nauka PHP (28)
    • Przenośność (28)
    • Kod źródłowy (28)
  • Niektóre zalety MySQL (28)
    • Wydajność (29)
    • Niski koszt (29)
    • Łatwość wykorzystania (29)
    • Przenośność (29)
    • Kod źródłowy (29)
  • Układ treści książki (29)
  • Kody źródłowe (30)
  • Uwagi końcowe (30)
Część I Stosowanie PHP (31)
Rozdział 1. Podstawowy kurs PHP (33)
  • Zastosowanie PHP (34)
  • Przykładowa aplikacja: "Części samochodowe Janka" (34)
    • Formularz zamówienia (35)
    • Przetwarzanie formularza (36)
  • Osadzanie PHP w HTML (36)
    • Zastosowanie znaczników PHP (38)
    • Style znaczników PHP (38)
    • Instrukcje PHP (39)
    • Odstępy (39)
    • Komentarze (40)
  • Dodawanie zawartości dynamicznej (41)
    • Wywoływanie funkcji (41)
    • Funkcja date() (42)
  • Dostęp do zmiennych formularza (42)
    • Zmienne formularza (42)
    • Łączenie ciągów (44)
    • Zmienne i ciągi znaków (44)
  • Identyfikatory (45)
  • Zmienne zadeklarowane przez użytkownika (45)
  • Przypisywanie wartości zmiennym (45)
  • Typy zmiennych (46)
    • Typy danych w PHP (46)
    • Siła typu (46)
    • Rzutowanie typu (47)
    • Zmienne zmiennych (47)
  • Stałe (48)
  • Zasięg zmiennych (48)
  • Operatory (49)
    • Operatory arytmetyczne (49)
    • Operatory ciągów (50)
    • Operatory przypisania (50)
    • Operatory porównań (53)
    • Operatory logiczne (54)
    • 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 (59)
    • Sprawdzanie i ustawianie typów zmiennych (59)
    • Sprawdzanie stanu zmiennej (60)
    • Reinterpretacja zmiennych (61)
  • Struktury kontrolujące (61)
  • Podejmowanie decyzji za pomocą instrukcji warunkowych (61)
    • Instrukcja if (61)
    • Bloki kodu (62)
    • Uwaga poboczna: wcinanie kodu (62)
    • Instrukcja else (62)
    • Instrukcja elseif (63)
    • Instrukcja switch (64)
    • Porównanie różnych instrukcji warunkowych (66)
  • Iteracja: powtarzanie działań (66)
    • Pętle while (67)
    • Pętle for (68)
    • Pętle do..while (69)
  • Wyłamywanie się ze struktury skryptu (70)
  • W następnym rozdziale: zapisywanie zamówienia klienta (70)
Rozdział 2. Przechowywanie i wyszukiwanie danych (71)
  • Zapisywanie danych do późniejszego użycia (72)
  • Przechowywanie i wyszukiwanie zamówień Janka (72)
  • Podstawowe informacje na temat przetwarzania plików (73)
  • Otwieranie pliku (74)
    • Tryby otwarcia pliku (74)
    • Stosowanie funkcji fopen() do otwarcia pliku (74)
    • Otwieranie pliku przez protokół FTP lub HTTP (76)
    • Problemy z otwieraniem plików (76)
  • Zapisywanie danych w pliku (78)
    • 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() (81)
    • Odczytywanie pliku linia po linii - 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 (84)
    • 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 (87)
    • 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)
Rozdział 3. Stosowanie tablic (91)
  • Czym są tablice? (92)
  • 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 funkcjami each() i list() (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 (102)
    • Typy sortowań definiowane przez użytkownika (102)
    • Odwrotne sortowanie zdefiniowane przez użytkownika (104)
  • 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)
Rozdział 4. Manipulowanie ciągami i wyrażenia regularne (115)
  • Przykładowa aplikacja - Inteligentny Formularz Pocztowy (115)
  • Formatowanie ciągów (117)
    • Przycinanie ciągów - funkcje chop(), ltrim() i trim() (118)
    • 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 (123)
    • Stosowanie funkcji explode(), implode() i join() (123)
    • Stosowanie funkcji strtok() (124)
    • Stosowanie funkcji substr() (125)
  • Porównywanie ciągów (125)
    • Porządkowanie ciągów - funkcje strcmp(), strcasecmp() i strnatcmp() (126)
    • Sprawdzanie długości ciągu za pomocą funkcji strlen() (126)
  • Dopasowywanie i zamiana podciągów za pomocą funkcji ciągów (127)
    • 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 (133)
    • Kotwiczenie na początku lub na końcu ciągu (133)
    • Rozgałęzianie (133)
    • Dopasowywanie specjalnych znaków literowych (134)
    • Podsumowanie znaków specjalnych (134)
    • 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 przy pomocy 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)
Rozdział 5. Ponowne wykorzystanie kodu i tworzenie funkcji (139)
  • Dlaczego ponownie stosować kod? (140)
    • Koszt (140)
    • Niezawodność (140)
    • Spójność (140)
  • Stosowanie funkcji require() i include() (141)
    • Stosowanie funkcji require() (141)
    • Rozszerzenia plików i require() (142)
    • Znaczniki PHP i require() (142)
  • Stosowanie require() w szablonach stron WWW (143)
    • 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 (153)
    • Nadawanie nazwy funkcji (154)
  • Parametry (154)
  • Zasięg (156)
  • Przekazanie przez referencję czy przekazanie przez wartość (158)
  • Powrót z funkcji (160)
  • Zwracanie wartości przez funkcje (161)
    • Bloki kodu (162)
  • Rekurencja (163)
  • Propozycje dalszych lektur (165)
  • W następnym rozdziale (165)
Rozdział 6. Obiektowy PHP (167)
  • Koncepcje programowania obiektowego (167)
    • Klasy i obiekty (167)
    • Polimorfizm (169)
    • Dziedziczenie (169)
  • Tworzenie klas, atrybutów i operacji w PHP (170)
    • Struktura klasy (170)
    • Konstruktory (170)
  • Tworzenie egzemplarzy (171)
  • Stosowanie atrybutów klasy (172)
  • Wywoływanie operacji klas (173)
  • Implementacja dziedziczenia w PHP (174)
    • Unieważnianie (175)
    • Wielodziedziczenie (176)
  • Tworzenie klas (177)
  • Tworzenie kodu dla własnej klasy (178)
  • W następnej części (186)
Część II Stosowanie MySQL (187)
Rozdział 7. Projektowanie internetowej bazy danych (189)
  • Koncepcje relacyjnych baz danych (190)
    • Tabele (190)
    • Kolumny (190)
    • Wiersze (191)
    • Wartości (191)
    • Klucze (191)
    • Schematy (192)
    • Relacje (192)
  • Jak zaprojektować internetową bazę danych (193)
    • Określ obiekty świata realnego, których model chcesz wykonać (193)
    • Unikaj przechowywania redundantnych danych (194)
    • Zapisuj atomowe wartości kolumn (195)
    • Dobierz właściwe klucze (196)
    • Pomyśl o zapytaniach, które zadasz bazie (197)
    • Unikaj tworzenia tabel z wieloma pustymi polami (197)
    • Typy tabel - podsumowanie (197)
  • Architektura internetowej bazy danych (198)
    • Architektura (198)
  • Propozycje dalszych lektur (199)
  • W następnym rozdziale (199)
Rozdział 8. Tworzenie internetowej bazy danych (201)
  • Uwagi na temat użytkowania monitora MySQL (202)
  • Jak zalogować się do serwera MySQL (203)
  • Tworzenie baz i rejestrowanie użytkowników (205)
    • Tworzenie bazy danych (205)
  • Użytkownicy i przywileje (205)
  • Wprowadzenie do systemu przywilejów MySQL (206)
    • Zasada najmniejszego przywileju (206)
    • Rejestrowanie użytkowników: polecenie GRANT (206)
    • Typy i poziomy przywilejów (208)
    • Polecenie REVOKE (210)
    • Przykłady użycia poleceń GRANT i REVOKE (210)
  • Rejestrowanie użytkownika łączącego się z Internetu (211)
    • Wylogowanie się użytkownika root (212)
  • Używanie odpowiedniej bazy danych (212)
  • Tworzenie tabel bazy danych (212)
    • Znaczenie dodatkowych atrybutów kolumn (214)
    • Typy kolumn (215)
    • Rzut oka na bazę danych - polecenia SHOW i DESCRIBE (217)
  • Identyfikatory MySQL (218)
  • Typy danych w kolumnach (219)
    • Typy liczbowe (219)
  • Propozycje dalszych lektur (223)
  • W następnym rozdziale (223)
Rozdział 9. Praca z bazą danych MySQL (225)
  • Czym jest SQL? (225)
  • Zapisywanie danych do bazy (226)
  • Wyszukiwanie danych w bazie (228)
    • Wyszukiwanie danych spełniających określone kryteria (229)
    • Wyszukiwanie danych w wielu tabelach (230)
    • Szeregowanie danych w określonym porządku (236)
    • Grupowanie i agregowanie danych (237)
    • Wskazanie wierszy, które mają być wyświetlone (239)
  • Dokonywanie zmian rekordów w bazie danych (240)
  • Zmiana struktury istniejących tabel (241)
  • Usuwanie rekordów z bazy danych (242)
  • Usuwanie tabel (242)
  • Usuwanie całych baz danych (243)
  • Propozycje dalszych lektur (243)
  • W następnym rozdziale (243)
Rozdział 10. Łączenie się z bazą MySQL za pomocą PHP (245)
  • Jak działa internetowa baza danych (246)
  • Etapy wysyłania zapytań do bazy danych z poziomu strony WWW (248)
  • Sprawdzenie poprawności wpisanych danych (249)
  • Ustanawianie połączenia z bazą danych (250)
  • Wybór właściwej bazy danych (252)
  • Wysyłanie zapytań do bazy danych (252)
  • Odczytywanie rezultatów zapytań (253)
  • Zamykanie połączenia z bazą danych (255)
  • Wstawianie nowych danych do bazy (255)
  • Inne użyteczne funkcje PHP i MySQL (258)
    • Zwalnianie zasobów (258)
    • Tworzenie i usuwanie baz danych (259)
  • Inne interfejsy bazodanowe PHP (259)
  • Propozycje dalszych lektur (259)
  • W następnym rozdziale (260)
Rozdział 11. MySQL dla zaawansowanych (261)
  • Szczegóły systemu przywilejów (261)
    • Tabela user (262)
    • Tabele db i host (263)
    • Tabele tables_priv i columns_priv (264)
    • Kontrola dostępu: w jaki sposób MySQL używa tabel przywilejów (265)
    • Zmiana przywilejów: kiedy zmiany zostaną uwzględnione? (266)
  • Ochrona bazy danych (266)
    • MySQL z perspektywy systemu operacyjnego (267)
    • Hasła (267)
    • Przywileje użytkowników (268)
    • MySQL i Internet (269)
  • Uzyskiwanie szczegółowych informacji o bazie danych (269)
    • Uzyskiwanie informacji poleceniem SHOW (270)
    • Uzyskiwanie informacji o kolumnach za pomocą polecenia DESCRIBE (271)
    • Jak wykonywane są zapytania: polecenie EXPLAIN (272)
  • Przyspieszanie wykonania zapytań za pomocą indeksów (275)
  • Wskazówki dotyczące optymalizacji (276)
    • Optymalizacja projektu bazy danych (276)
    • Przywileje (276)
    • Optymalizacja tabel (276)
    • Stosowanie indeksów (277)
    • Używanie wartości domyślnych (277)
    • Używanie stałych połączeń z bazą (277)
    • Więcej wskazówek (277)
  • Różne typy tabel (277)
  • Ładowanie danych z pliku (278)
  • Propozycje dalszych lektur (278)
  • W następnej części (279)
Część III Handel elektroniczny i bezpieczeństwo (281)
Rozdział 12. Komercyjne witryny internetowe (283)
  • Co chcemy osiągnąć? (283)
  • Rodzaje komercyjnych stron WWW (284)
    • Broszury internetowe (284)
    • Przyjmowanie zamówień na produkty i usługi (287)
    • Dostarczanie usług lub wyrobów mających postać cyfrową (291)
    • Zwiększanie wartości produktów i usług (292)
    • Ograniczanie kosztów (293)
  • Ryzyko i zagrożenia (293)
    • Crackerzy (294)
    • Przyciągnięcie niewystarczającej liczby klientów (294)
    • Awarie sprzętu komputerowego (295)
    • Awarie sieci elektrycznych, komunikacyjnych i komputerowych oraz systemu wysyłkowego (295)
    • Silna konkurencja (295)
    • Błędy w oprogramowaniu (296)
    • Zmiany polityki rządowej (296)
    • Ograniczenie pojemności systemów (296)
  • Wybór strategii (297)
  • W następnym rozdziale (297)
Rozdział 13. Bezpieczeństwo komercyjnych stron WWW (299)
  • Jaką wagę mają posiadane przez nas informacje? (300)
  • Zagrożenia bezpieczeństwa (300)
    • Ujawnienie informacji poufnych (301)
    • Utrata lub zniszczenie danych (303)
    • Modyfikacje danych (304)
    • Blokada usługi (305)
    • Błędy w oprogramowaniu (306)
    • Zaprzeczenie korzystania z usługi (307)
  • Równoważenie użyteczności, wydajności, kosztów i bezpieczeństwa (308)
  • Opracowanie polityki bezpieczeństwa (309)
  • Zasady uwierzytelniania (309)
  • Wykorzystanie mechanizmu uwierzytelniania (311)
  • Podstawy szyfrowania (311)
  • Szyfrowanie z kluczem prywatnym (313)
  • Szyfrowanie z kluczem publicznym (313)
  • Podpis cyfrowy (314)
  • Certyfikaty cyfrowe (315)
  • Bezpieczne serwery WWW (317)
  • Monitorowanie i zapisywanie zdarzeń (318)
  • Zapory sieciowe (319)
  • Tworzenie kopii zapasowych (319)
    • Tworzenie kopii zapasowych zwykłych plików (320)
    • Tworzenie kopii zapasowych i odzyskiwanie baz danych MySQL (320)
  • Bezpieczeństwo fizyczne (321)
  • W następnym rozdziale (322)
Rozdział 14. Uwierzytelnianie przy użyciu PHP i MySQL (323)
  • Identyfikacja użytkowników (323)
  • Implementacja kontroli dostępu (324)
    • Przechowywanie haseł dostępu (327)
    • Szyfrowanie haseł (329)
    • Zastrzeganie więcej niż jednej strony (331)
  • Podstawowa metoda uwierzytelniania (332)
  • Wykorzystanie podstawowej metody uwierzytelniania w PHP (333)
  • Wykorzystanie podstawowej metody uwierzytelniania na serwerze Apache przy użyciu plików .htaccess (335)
  • Wykorzystanie podstawowej metody uwierzytelniania na serwerze IIS (339)
  • Wykorzystanie modułu mod_auth_mysql do celów uwierzytelniania (341)
    • Instalacja modułu mod_auth_mysql (342)
    • Zadziałało? (342)
    • Praca z mod_auth_mysql (343)
  • Implementacja własnej metody uwierzytelniania (344)
  • Propozycje dalszych lektur (344)
  • W następnym rozdziale (344)
Rozdział 15. Zabezpieczanie transakcji przy użyciu PHP i MySQL (345)
  • Zapewnienie bezpieczeństwa transakcji (345)
    • Komputer użytkownika (346)
    • Internet (348)
    • System docelowy (349)
  • Wykorzystanie protokołu Secure Sockets Layer (SSL) (350)
  • Kontrola danych pochodzących od użytkownika (353)
  • Bezpieczne przechowywanie danych (354)
  • Cel przechowywania numerów kart kredytowych (356)
  • Szyfrowanie danych w PHP (356)
  • Propozycje dalszych lektur (365)
  • W następnej części (365)
Część IV Zaawansowane techniki PHP (367)
Rozdział 16. Interakcja z systemem plików i serwerem (369)
  • Wprowadzenie do wysyłania plików (369)
    • Kod HTML służący do wysyłania plików (370)
    • Tworzenie obsługującego plik PHP (371)
    • Popularne problemy (374)
  • Stosowanie funkcji katalogowych (375)
    • Odczyt z katalogów (375)
    • Otrzymywanie informacji na temat aktualnego katalogu (377)
    • Tworzenie i usuwanie katalogów (377)
  • Interakcja z systemem plików (378)
    • Otrzymywanie informacji o pliku (378)
    • Zmiana właściwości pliku (380)
    • Tworzenie, usuwanie i przenoszenie plików (381)
  • Stosowanie funkcji uruchamiających programy (382)
  • Interakcja ze środowiskiem: funkcje getenv() i putenv() (384)
  • Propozycje dalszych lektur (384)
  • W następnym rozdziale (384)
Rozdział 17. Stosowanie funkcji sieci i protokołu (385)
  • Przegląd protokołów (385)
  • Wysyłanie i odczytywanie poczty elektronicznej (386)
  • Korzystanie z innych usług WWW (387)
  • Stosowanie funkcji połączeń sieciowych (389)
  • Korzystanie z FTP (393)
    • Stosowanie FTP w celu utworzenia kopii bezpieczeństwa lub kopii lustrzanej pliku (393)
    • Wysyłanie plików (399)
    • Unikanie przekroczenia dopuszczalnego czasu (400)
    • Stosowanie innych funkcji FTP (400)
  • Stosowanie ogólnej komunikacji sieciowej za pomocą cURL (401)
  • Propozycje dalszych lektur (403)
  • W następnym rozdziale (404)
Rozdział 18. Zarządzanie datą i czasem (405)
  • Uzyskiwanie informacji o dacie i czasie w PHP (405)
    • Stosowanie funkcji date() (405)
    • Obsługa znaczników czasu Uniksa (407)
    • Stosowanie funkcji getdate() (408)
    • Sprawdzanie poprawności dat (408)
  • Konwersja pomiędzy formatami daty PHP i MySQL (409)
  • Obliczanie dat (410)
  • Stosowanie funkcji kalendarzowych (411)
  • Propozycje dalszych lektur (412)
  • W następnym rozdziale (412)
Rozdział 19. Generowanie obrazków (413)
  • Konfigurowanie obsługi obrazków w PHP (413)
  • Formaty obrazków (414)
    • JPEG (414)
    • PNG (414)
    • WBMP (415)
    • GIF (415)
  • Tworzenie obrazków (416)
    • Tworzenie kadru obrazka (417)
    • Rysowanie lub umieszczanie tekstu w obrazku (417)
    • Wyświetlanie ostatecznej grafiki (419)
    • Końcowe czynności porządkujące (420)
  • Stosowanie automatycznie generowanych obrazków na innych stronach (421)
  • Stosowanie tekstu i czcionek do tworzenia obrazków (422)
    • Konfiguracja podstawowego kadru (425)
    • Dopasowanie tekstu do przycisku (425)
    • Nadawanie tekstowi odpowiedniej pozycji (428)
    • Wpisywanie tekstu do przycisku (428)
    • Etap końcowy (429)
  • Rysowanie figur i wykresów danych (429)
  • Inne funkcje obrazków (436)
  • Propozycje dalszych lektur (437)
  • W następnym rozdziale (437)
Rozdział 20. Stosowanie kontroli sesji w PHP (439)
  • Czym jest kontrola sesji? (439)
  • Podstawowa zasada działania sesji (440)
    • Czym jest cookie? (440)
    • Konfiguracja cookies w PHP (441)
    • Stosowanie cookies w sesji (441)
    • Przechowywanie identyfikatora sesji (442)
  • Implementacja prostych sesji (442)
    • Rozpoczynanie sesji (442)
    • Zgłaszanie zmiennych sesji (443)
    • Stosowanie zmiennych sesji (443)
    • Usuwanie zmiennych i niszczenie sesji (444)
  • Przykład prostej sesji (444)
  • Konfiguracja kontroli sesji (446)
  • Implementacja uwierzytelniania w kontroli sesji (447)
  • Propozycje dalszych lektur (453)
  • W następnym rozdziale (453)
Rozdział 21. Inne przydatne własności (455)
  • Stosowanie magicznych cudzysłowów (455)
  • Wykonywanie ciągów - funkcja eval() (456)
  • Zakończenie wykonania - die i exit (457)
  • Serializacja (458)
  • Pobieranie informacji na temat środowiska PHP (459)
    • Uzyskiwanie informacji na temat załadowanych rozszerzeń (459)
    • Identyfikacja właściciela skryptu (460)
    • Uzyskiwanie informacji na temat daty modyfikacji skryptu (460)
  • Dynamiczne dodawanie rozszerzeń (460)
  • Czasowa zmiana środowiska wykonawczego (461)
  • Podświetlanie źródeł (461)
  • W następnej części (462)
Część V Tworzenie praktycznych projektów PHP i MySQL (463)
Rozdział 22. Stosowanie PHP i MySQL w dużych projektach (465)
  • Zastosowanie inżynierii oprogramowania w tworzeniu aplikacji WWW (466)
  • Planowanie i prowadzenie projektu aplikacji WWW (466)
  • Ponowne stosowanie kodu (467)
  • Tworzenie kodu łatwego w utrzymaniu (468)
    • Standardy kodowania (468)
    • Dzielenie kodu (471)
    • Stosowanie standardowej struktury katalogów (472)
    • Dokumentacja i dzielenie wewnętrznych funkcji (472)
  • Implementacja kontroli wersji (473)
  • Wybór środowiska programistycznego (474)
  • Dokumentacja projektów (475)
  • Prototypowanie (476)
  • Oddzielanie logiki i zawartości (477)
  • Optymalizacja kodu (478)
    • Stosowanie prostych optymalizacji (478)
    • Stosowanie produktów firmy Zend (479)
  • Testowanie (480)
  • Propozycje dalszych lektur (481)
  • W następnym rozdziale (481)
Rozdział 23. Usuwanie błędów (483)
  • Błędy programistyczne (483)
    • Błędy składni (484)
    • Błędy wykonania (485)
    • Błędy logiczne (491)
  • Pomoc w usuwaniu błędów w zmiennych (492)
  • Poziomy zgłaszania błędów (494)
  • Zmiana ustawień zgłaszania błędów (495)
  • Wyzwalanie własnych błędów (497)
  • Elegancka obsługa błędów (497)
  • Zdalne usuwanie błędów (499)
  • W następnym rozdziale (500)
Rozdział 24. Tworzenie uwierzytelniania użytkowników i personalizacji (501)
  • Problem (502)
  • Składniki rozwiązania (502)
    • Identyfikacja użytkownika i personalizacja (502)
    • Przechowywanie zakładek (503)
    • Rekomendowanie zakładek (503)
  • Przegląd rozwiązania (504)
  • Implementacja bazy danych (505)
  • Implementacja podstawowej witryny (507)
  • Implementacja uwierzytelniania użytkowników (509)
    • Rejestracja (509)
    • Logowanie (515)
    • Wylogowanie (519)
    • Zmiana hasła (519)
    • Ustawianie zapomnianych haseł (522)
  • Implementacja przechowywania i odczytywania zakładek (525)
    • Dodawanie zakładek (526)
    • Wyświetlanie zakładek (528)
    • Usuwanie zakładek (529)
  • Implementacja rekomendacji (531)
  • Rozwijanie projektu i możliwe rozszerzenia (535)
  • W następnym rozdziale (535)
Rozdział 25. Tworzenie koszyka na zakupy (537)
  • Problem (537)
  • Składniki rozwiązania (538)
    • Tworzenie katalogu online (538)
    • Śledzenie zakupów użytkownika podczas przeglądania (538)
    • Płatność (539)
    • Interfejs administratora (539)
  • Przegląd rozwiązania (539)
  • Implementacja bazy danych (543)
  • Implementacja katalogu online (545)
    • Przedstawianie kategorii (547)
    • Wyświetlanie książek danej kategorii (549)
    • Przedstawianie szczegółowych danych książki (551)
  • Implementacja koszyka na zakupy (552)
    • Stosowanie skryptu pokaz_kosz.php (552)
    • Podgląd koszyka (555)
    • Dodawanie produktów do koszyka (557)
    • Zapisywanie uaktualnionego koszyka (559)
    • Wyświetlanie podsumowania w pasku nagłówka (560)
    • Pobyt w kasie (560)
  • Implementacja płatności (565)
  • Implementacja interfejsu administratora (568)
  • Rozwijanie projektu (575)
  • Zastosowanie istniejącego systemu (575)
  • W następnym rozdziale (576)
Rozdział 26. Tworzenie systemu zarządzania zawartością (577)
  • Problem (577)
  • Wymagania systemu (578)
  • Edycja zawartości (578)
    • Umieszczanie zawartości w systemie (578)
    • Bazy danych czy pliki? (579)
    • Struktura dokumentu (580)
  • Stosowanie metadanych (581)
  • Formatowanie danych wyjściowych (581)
  • Manipulacja obrazkiem (583)
  • Projekt/przegląd rozwiązania (585)
  • Projektowanie bazy danych (586)
  • Implementacja (587)
    • Fronton systemu (587)
    • Wnętrze systemu (590)
    • Wyszukiwanie (598)
    • Ekran redaktora naczelnego (601)
  • Rozwijanie projektu (603)
  • W następnym rozdziale (603)
Rozdział 27. Tworzenie serwisu poczty elektronicznej opartego na WWW (605)
  • Problem (605)
  • Składniki rozwiązania (606)
  • Przegląd rozwiązania (608)
  • Konfiguracja bazy danych (609)
  • Architektura skryptu (611)
  • Logowanie i wylogowanie (615)
  • Konfiguracja kont (618)
    • Tworzenie nowego konta (620)
    • Modyfikacja istniejącego konta (622)
    • Usuwanie konta (622)
  • Odczytywanie poczty (623)
    • Wybór konta (623)
    • Przeglądanie zawartości skrzynki (626)
    • Odczytywanie wiadomości pocztowych (629)
    • Przeglądanie nagłówków wiadomości (632)
    • Usuwanie wiadomości (632)
  • Wysyłanie wiadomości (633)
    • Wysyłanie nowej wiadomości (634)
    • Odpowiadanie i przekazywanie poczty (635)
  • Rozwijanie projektu (637)
  • W następnym rozdziale (637)
Rozdział 28. Tworzenie menedżera list pocztowych (639)
  • Problem (639)
  • Składniki rozwiązania (640)
    • Konfiguracja bazy danych list i abonentów (640)
  • Wysyłanie plików (641)
  • Wysyłanie wiadomości z załącznikami (641)
  • Przegląd rozwiązania (641)
  • Konfiguracja bazy danych (643)
  • Architektura skryptu (645)
  • Implementacja logowania (653)
    • Tworzenie nowego konta (653)
    • Logowanie (656)
  • Implementacja funkcji użytkownika (658)
    • Przeglądanie list (659)
    • Przeglądanie informacji na temat listy (663)
    • Przeglądanie archiwum listy (665)
    • Zapisywanie i wypisywanie (666)
    • Zmiana konfiguracji konta (667)
    • Zmiana hasła (668)
    • Wylogowanie (669)
  • Implementacja funkcji administratora (670)
    • Tworzenie nowej listy (670)
    • Wysyłanie nowych wiadomości (672)
    • Obsługa wysyłania wielu plików (675)
    • Podgląd wiadomości (679)
    • Rozsyłanie wiadomości (680)
  • Rozwijanie projektu (684)
  • W następnym rozdziale (685)
Rozdział 29. Tworzenie forum WWW (687)
  • Problem (687)
  • Składniki rozwiązania (688)
  • Przegląd rozwiązania (690)
  • Projektowanie bazy danych (690)
  • Przeglądanie drzewa artykułów (693)
    • Rozwijanie i zwijanie (696)
    • Wyświetlanie artykułów (698)
    • Korzystanie z klasy wezel_drzewa (699)
  • Przeglądanie pojedynczych artykułów (705)
  • Dodawanie nowych artykułów (708)
  • Rozszerzenia (714)
  • Wykorzystanie istniejącego systemu (714)
  • W następnym rozdziale (715)
Rozdział 30. Tworzenie dokumentów spersonalizowanych w formacie PDF (717)
  • Problem (717)
  • Ocena formatów dokumentów (718)
    • Papier (718)
    • ASCII (719)
    • HTML (719)
    • Formaty edytorów tekstu (719)
    • Format RTF (720)
    • PostScript (721)
    • Format PDF (722)
  • Składniki rozwiązania (723)
    • System pytań i odpowiedzi (723)
    • Oprogramowanie generujące dokumenty (723)
  • Przegląd rozwiązania (726)
    • Zadawanie pytań (727)
    • Ocena odpowiedzi (728)
    • Tworzenie certyfikatu RTF (731)
    • Tworzenie certyfikatu PDF z szablonu (734)
    • Generowanie dokumentu PDF za pomocą PDFlib (737)
    • Skrypt "Witaj świecie" dla PDFlib (737)
    • Tworzenie certyfikatu za pomocą PDFlib (741)
  • Problemy związane z nagłówkami (748)
  • Rozwijanie projektu (749)
  • Propozycje dalszych lektur (749)
Dodatki (751)
Dodatek A Instalacja PHP4 i MySQL (753)
  • Uruchamianie PHP jako CGI lub moduł serwera (753)
  • Instalacja Apache, PHP i MySQL w systemie UNIX (755)
    • Apache i mod_SSL (758)
    • Plik httpd.conf - informacje końcowe (761)
    • Czy obsługa PHP działa poprawnie? (762)
    • Czy SSL działa poprawnie? (762)
  • Instalacja Apache, PHP i MySQL w systemie Windows (764)
    • Instalacja MySQL w systemie Windows (764)
    • Instalacja serwera Apache w systemie Windows (766)
    • Różnice między serwerem Apache dla systemu UNIX i Windows (769)
    • Instalacja PHP w systemie Windows (770)
    • Instalacja na serwerze Microsoft IIS (772)
    • Instalacja na serwerze Microsoft PWS (773)
  • Inne konfiguracje (773)
Dodatek B Zasoby internetowe (775)
  • Zasoby poświęcone PHP (775)
  • Zasoby poświęcone MySQL i SQL (777)
  • Zasoby poświęcone serwerowi Apache (778)
  • Zasoby poświęcone tworzeniu stron WWW (778)
Skorowidz (779)