- Odkryj tajniki tworzenia dynamicznych witryn opartych na bazach danych
- Uniknij kompromitujących wpadek przy korzystaniu z formularzy
- Wczytaj wszystkie kluczowe elementy składni prosto do swego mózgu
- Zainstaluj kod PHP i MySQL
- Sprawdź swą wiedzę na temat skryptów, wykonując dziesiątki ćwiczeń
PHP wraz z MySQL stanowią najpopularniejszy zespół, służący do szybkiego tworzenia aplikacji internetowych o różnym stopniu złożoności. Dzięki dużym możliwościom, wydajności oraz optymalnemu podejściu do wielu zagadnień tworzą prawdopodobnie najpopularniejszą platformę do wprowadzania atrakcyjnych rozwiązań. Na temat wykorzystania możliwości PHP i MySQL napisano już wiele książek, jednak ta jest wyjątkowa - należy do popularnej i przyjaznej Czytelnikowi serii Head First!
"Head First PHP & MySQL. Edycja polska" nie jest kolejnym trudnym i nudnym podręcznikiem do nauki PHP i MySQL. Autorzy wykorzystują tu innowacyjne oraz niezwykle skuteczne techniki przyswajania wiedzy szybko i bezboleśnie. Z pomocą licznych ilustracji i ciekawych skojarzeń nauczą Cię, jak stosować PHP wraz z MySQL w Twojej codziennej pracy. Dzięki temu bez najmniejszych problemów przygotujesz formularz, przetworzysz dane wprowadzone przez użytkownika, a następnie zapiszesz je w bazie MySQL. Ponadto zostaniesz wtajemniczony w szczegóły języka PHP oraz SQL. Zapoznasz się z zagrożeniami oraz dowiesz się, jak chronić swoją aplikację przed atakami z zewnątrz. To wszystko sprawi, że pewnym krokiem wejdziesz w świat profesjonalnych aplikacji internetowych!
- Tworzenie i obsługa formularzy
- Zastosowanie zmiennej $_POST
- Wysyłanie wiadomości e-mail z poziomu PHP
- Wykonywanie zapytań SQL
- Pobieranie i wykorzystywanie danych z MySQL w PHP
- Elementarz języka PHP
- Przesyłanie plików
- Bezpieczeństwo danych w PHP
- Zastosowanie sesji oraz ciasteczek
- Sortowanie wyników
- Obsługa kanałów RSS
- Zamieszczanie materiałów multimedialnych
- Zastosowanie formatu XML
- Instalacja i konfiguracja serwera Apache
Wykorzystaj nowoczesne metody nauki
i opanuj możliwości duetu PHP-MySQL!
Wprowadzenie
- Dla kogo przeznaczona jest ta książka? (28)
- Kto prawdopodobnie powinien zrezygnować z tej książki? (28)
- Wiemy, co sobie myślisz (29)
- Wiemy, co sobie myśli Twój mózg (29)
- Metapoznanie: myślenie o myśleniu (31)
- Oto, co MY zrobiliśmy (32)
- A oto, co TY możesz zrobić, aby zmusić mózg do posłuszeństwa (33)
- Przeczytaj koniecznie (34)
- Zespół recenzentów technicznych (36)
- Podziękowania (37)
1. Ożywianie statycznych stron
- Strony HTML są statyczne i nudne (40)
- PHP ożywia strony WWW (41)
- Formularz pomoże Markowi poznać całą historię (43)
- Formularze składają się z kodu HTML (44)
- Formularz HTML sprawia problemy (46)
- HTML działa po stronie KLIENTA (48)
- PHP działa po stronie SERWERA (49)
- Skrypty PHP działają na serwerze (50)
- Dostęp do danych z formularza w kodzie PHP (54)
- Skrypty PHP muszą działać na serwerze! (56)
- Przenoszenie skryptów PHP na serwer (57)
- Serwer przekształca kod PHP na HTML (60)
- Analiza skryptu PHP Marka (62)
- Kilka reguł pisania kodu związanych z językiem PHP (63)
- Ustalanie idealnych nazw dla zmiennych (64)
- Zmienne służą do przechowywania danych w skryptach (69)
- $_POST to specjalna zmienna na dane z formularza (71)
- Zmienna $_POST przesyła dane z formularza do skryptu (72)
- Tworzenie treści listu w kodzie PHP (82)
- Nawet zwykły tekst można (trochę) sformatować (84)
- Znaki nowego wiersza trzeba umieścić w cudzysłowach (85)
- Zbuduj e-mail do Marka (86)
- Zmienne przechowują fragmenty e-maila (87)
- Wysyłanie e-maili przy użyciu PHP (88)
- Marek zaczyna otrzymywać e-maile (91)
- Marek zaczyna gubić e-maile (92)
2. Łączenie się z bazą MySQL
- Formularz PHP Marka działa dobrze - aż za dobrze... (98)
- MySQL doskonale nadaje się do przechowywania danych (99)
- Marek potrzebuje bazy danych MySQL (100)
- Utwórz bazę danych i tabelę MySQL (102)
- Instrukcja INSERT w akcji (105)
- Użyj instrukcji SELECT do pobrania danych z tabeli (108)
- Użyj PHP do obsługi żmudnych instrukcji SQL (111)
- PHP umożliwia przepływ danych z formularza Marka (112)
- Połącz się z bazą danych w skrypcie PHP (114)
- Wstawianie danych za pomocą skryptu PHP (115)
- Użyj funkcji PHP do komunikacji z bazą danych (116)
- Łączenie się z bazą za pomocą mysqli_connect() (118)
- Budowanie zapytań INSERT w kodzie PHP (123)
- Kierowanie zapytań do bazy MySQL w skryptach PHP (124)
- Zamykanie połączenia za pomocą funkcji mysqli_close() (125)
- Zmienna $_POST udostępnia dane z formularza (129)
- Marek potrzebuje pomocy przy filtrowaniu danych (134)
- Marek jest na dobrej drodze do znalezienia Kła (136)
3. Tworzenie i zapełnianie bazy danych
- Sklep poświęcony Elvisowi otwiera podwoje (142)
- Edward potrzebuje aplikacji (143)
- Wizualizacja projektu aplikacji Edwarda (144)
- Wszystko zaczyna się od tabeli (147)
- Nawiąż kontakt z serwerem MySQL (148)
- Tworzenie bazy danych na adresy Edwarda (149)
- Tworzenie tabeli w bazie danych (150)
- Musimy zdefiniować dane (151)
- Poznaj wybrane typy danych języka MySQL (152)
- Tworzenie tabel przy użyciu zapytań (155)
- Wskaż bazę danych przed jej użyciem (158)
- Instrukcja DESCRIBE opisuje strukturę tabeli (161)
- Edward jest gotowy do zapisywania danych (163)
- Tworzenie skryptu do dodawania adresów (164)
- Druga strona aplikacji Edwarda (171)
- Mechanizmy skryptu do wysyłania wiadomości (172)
- Zacznijmy od początku - pobieranie danych (173)
- Funkcja mysqli_fetch_array() pobiera wyniki zapytania (174)
- Pętle WHILE (177)
- Przechodzenie po danych za pomocą pętli while (178)
- Otrzymałeś wiadomość od Edwarda! (183)
- Czasem użytkownicy chcą zrezygnować (184)
- Usuwanie danych za pomocą instrukcji DELETE (185)
- Użyj klauzuli WHERE, aby usunąć konkretne dane (186)
- Minimalizowanie ryzyka przypadkowych usunięć (187)
- ZrobZeMnieElvisa.com to aplikacja internetowa (192)
4. Realistyczne i praktyczne aplikacje
- Niektórzy klienci Edwarda są zirytowani (196)
- Zabezpiecz Edwarda przed nim samym (199)
- Sprawdzaj poprawność danych z formularza (200)
- Walidacja w skrypcie sendemail.php (201)
- Kod podejmuje decyzje dzięki instrukcji IF (202)
- Sprawdzanie warunku (203)
- Instrukcja IF sprawdza nie tylko równość (204)
- Walidacja w skrypcie sendemail.php (207)
- Funkcje PHP do sprawdzania zawartości zmiennych (208)
- Sprawdzanie wielu warunków przy użyciu I oraz LUB (215)
- Użytkownicy formularza potrzebują informacji zwrotnych (219)
- Wygodne otwieranie i zamykanie bloków PHP (229)
- Użyj flagi, aby uniknąć powielania kodu (230)
- Napisz kod formularza jeden raz (231)
- Formularz autoreferencyjny (235)
- Wskaż skrypt w atrybucie action (236)
- Sprawdzanie, czy użytkownik przesłał formularz (238)
- Niektórzy użytkownicy nadal są niezadowoleni (242)
- Wiersze tabeli powinny mieć niepowtarzalne identyfikatory (244)
- Klucze główne wymuszają niepowtarzalność (246)
- Od pól wyboru do identyfikatorów klientów (251)
- Przechodzenie po elementach tablicy za pomocą foreach (252)
5. Używanie danych przechowywanych w plikach
- Wirtualni gitarzyści lubią współzawodnictwo (260)
- Rysunki to dowód prawdziwości wyniku (261)
- Aplikacja musi przechowywać rysunki (262)
- Planowanie przesyłania plików w aplikacji Gitarowe wojny (267)
- Trzeba zmodyfikować bazę rekordów za pomocą instrukcji ALTER (268)
- Jak pobrać rysunek od użytkownika? (272)
- Wstaw rysunki (nazwy plików) do bazy danych (274)
- Określanie nazwy przesłanego pliku (275)
- Gdzie znajdują się przesłane pliki? (280)
- Utwórz miejsce na przesłane pliki graficzne (284)
- Współużytkowane dane trzeba współdzielić (290)
- Dołączanie danych współużytkowanych przez skrypty (291)
- Traktuj instrukcję require_once jak polecenie "wstaw" (292)
- W przypadku rekordowych wyników najważniejszy jest porządek (294)
- Wyróżnianie najlepszego gitarowego wojownika (297)
- Sformatuj najlepszy wynik za pomocą kodu HTML i CSS (298)
- Przepuszczamy tylko małe rysunki (303)
- Walidacja pliku zwiększa niezawodność aplikacji (304)
- Projektowanie strony administracyjnej (308)
- Generowanie odsyłaczy do usuwania wyników na stronie administracyjnej (311)
- Skrypty mogą komunikować się ze sobą (312)
- O żądaniach GET i POST (314)
- GET, POST i usuwanie wyników (316)
- Znajdowanie usuwanych wyników (319)
- Kontrolowanie liczby usuwanych wierszy za pomocą klauzuli LIMIT (320)
6. Zabezpieczanie aplikacji
- Dzień, w którym umarła muzyka (330)
- Gdzie się podziały wyniki? (331)
- Zabezpieczenia przed dzikimi hordami (333)
- Zabezpieczanie strony administracyjnej Gitarowych wojen (334)
- Uwierzytelnianie HTTP wymaga nagłówków (336)
- Kontrolowanie nagłówków za pomocą PHP (339)
- Uwierzytelnianie za pomocą nagłówków (340)
- Tworzenie skryptu do obsługi uwierzytelniania (348)
- Gitarowe wojny. Część II: Atak klonów rekordów (352)
- Odejmowanie przez dodawanie (353)
- Bezpieczeństwo wymaga interwencji człowieka (354)
- Planowanie obsługi moderowania w Gitarowych wojnach (355)
- Użyj instrukcji ALTER, aby zrobić miejsce na zatwierdzanie wyników (356)
- Niezatwierdzone wyniki nie są potrzebne (361)
- Oszustwo za milion punktów (364)
- Czy jest tu moderator? (365)
- Jak Ela to zrobiła? (367)
- Oszukiwanie bazy MySQL za pomocą komentarzy (368)
- Do formularza do dodawania wyników wstrzyknięto kod SQL (369)
- Chroń dane przed wstrzyknięciem kodu SQL (370)
- Bezpieczniejsza instrukcja INSERT (z parametrami) (371)
- Walidacji formularza nigdy za wiele (373)
- Wstrzymać ogień! (375)
7. Tworzenie spersonalizowanych aplikacji sieciowych
- Podobno przeciwieństwa się przyciągają (380)
- Niedopasowanie opiera się na prywatnych danych (381)
- Witryna Niedopasowani potrzebuje loginów (382)
- Przygotowanie bazy do zapisywania loginów (385)
- Tworzenie interfejsu logowania (387)
- Szyfrowanie haseł za pomocą funkcji SHA() (388)
- Porównywanie haseł (389)
- Uwierzytelnianie użytkowników za pomocą HTTP (392)
- Logowanie się użytkowników za pomocą uwierzytelniania HTTP (395)
- Formularz do rejestracji nowych użytkowników (399)
- Co zawierają pliki cookie? (409)
- Zastosuj ciasteczka w kodzie PHP (410)
- Modyfikowanie przebiegu logowania (413)
- Logowanie oparte na plikach cookie (414)
- Wylogowanie to efekt usunięcia plików cookie (419)
- Sesje nie są zależne od klienta (423)
- Śledzenie danych sesji (425)
- Usprawnij aplikację Niedopasowani za pomocą sesji (426)
- Wylogowywanie przy użyciu sesji (427)
- Dokończ wprowadzanie sesji (432)
- Użytkownicy nie czują się mile witani (438)
- Sesje nie żyją długo... (440)
- ...ale pliki cookie mogą trwać wiecznie! (441)
- Sesje + pliki cookie = większa trwałość logowania (443)
7 1/2. Eliminowanie powtórzeń w kodzie
- Aplikacja Niedopasowani w kawałkach (455)
- Przebudowywanie aplikacji Niedopasowani przy użyciu szablonu (456)
- Przebudowa aplikacji Niedopasowani z wykorzystaniem szablonów (458)
- Zupełnie nowa i dużo lepiej uporządkowana aplikacja Niedopasowani (460)
8. Kontroluj dane - kontroluj swój świat
- Idealnie niedopasowani (462)
- Aplikacja Niedopasowani opiera się na danych (463)
- Utwórz model bazy danych za pomocą schematu (465)
- Łączenie kilku tabel (470)
- Klucze zewnętrzne w praktyce (471)
- Jeden wiersz pasuje do jednego wiersza (472)
- Jeden wiersz łączy się z wieloma (473)
- Wiersze w relacji wiele do wielu (474)
- Tworzenie kwestionariusza na potrzeby aplikacji Niedopasowani (479)
- Zapisywanie odpowiedzi w bazie danych (480)
- Możemy sterować formularzem za pomocą danych (484)
- Generowanie formularza z kwestionariuszem w aplikacji Niedopasowani (490)
- Droga do normalności (496)
- W czasie normalizacji myśl w kategoriach atomów (497)
- Trzy kroki do znormalizowanej bazy danych (499)
- Modyfikowanie bazy aplikacji Niedopasowani (503)
- Czy baza aplikacji Niedopasowani jest naprawdę znormalizowana? (504)
- Zapytanie w zapytaniu wewnątrz zapytania... (506)
- Złączmy tabele (507)
- Łączenie za pomocą kropek (508)
- To jeszcze nie wszystkie możliwości złączeń wewnętrznych (509)
- Pseudonimy tabel i kolumn (511)
- Pomoc ze strony złączeń (512)
- Pięć kroków do udanego niedopasowania (519)
- Porównywanie osób pod kątem niedopasowania (521)
- Potrzebujemy pętli FOR (522)
9. Funkcje niestandardowe i do obsługi łańcuchów znaków
- Trudno jest znaleźć dobrą ryzykowną pracę (534)
- Wyszukiwanie nie daje możliwości popełnienia błędu (536)
- Dzięki słowu kluczowemu LIKE zapytania SQL mogą być elastyczne (537)
- Podziel łańcuch znaków na pojedyncze słowa (542)
- Funkcja implode() tworzy łańcuch znaków przy użyciu podłańcuchów (545)
- Wstępne przetwarzanie szukanego łańcucha znaków (551)
- Zastępowanie niepotrzebnych znaków w szukanym tekście (552)
- Potrzebujemy poprawnych szukanych łańcuchów (556)
- Kopiowanie niepustych elementów do nowej tablicy (557)
- Czasem potrzebny jest tylko fragment łańcucha (560)
- Pobieranie podłańcuchów z obu stron tekstu (561)
- Można posortować wyniki w kilku zapytaniach (564)
- Funkcje umożliwiają wielokrotne wykorzystanie kodu (568)
- Zbuduj zapytanie za pomocą niestandardowej funkcji (569)
- SWITCH obsługuje więcej decyzji niż IF (574)
- Sortowanie w funkcji build_query() (577)
- Możemy podzielić wyniki na strony (580)
- Pobieranie tylko potrzebnych wierszy dzięki klauzuli LIMIT (581)
- Zarządzanie odnośnikami związanymi z klauzulą LIMIT (582)
- Kontrolowanie danych potrzebnych do obsługi stronicowania (583)
- Konfigurowanie zmiennych używanych do stronicowania (584)
- Poprawianie zapytania, które pobiera stronicowane wyniki (585)
- Generowanie odnośników do nawigacji po stronach (586)
- Tworzenie kompletnego skryptu do wyszukiwania ofert (589)
- Kompletny skrypt do wyszukiwania ofert - ciąg dalszy (590)
10. Wyrażenia regularne
- Użytkownicy serwisu Ryzykowne prace mogą zamieszczać w nim życiorysy (594)
- Określ, jaki format powinny mieć dane (598)
- Utwórz wzorzec numerów telefonów (601)
- Dopasuj dane do wzorca za pomocą wyrażeń regularnych (602)
- Tworzenie wzorców za pomocą metaznaków (604)
- Dopracuj wzorce za pomocą klas znaków (611)
- Wyszukiwanie wzorców za pomocą funkcji preg_match() (616)
- Ustandaryzuj numery telefonów (623)
- Usuwanie niepożądanych znaków (624)
- Dopasowywanie adresów e-mail może być trudne (628)
- Przyrostki domen są wszędzie (630)
- Użyj języka PHP do walidacji domeny (631)
- Walidacja adresów e-mail - łączenie wszystkich elementów (632)
11. Wizualizowanie danych i inne zagadnienia
- Powrót Gitarowych wojen: narodziny maszyn (638)
- Żaden formularz na dane wejściowe nie jest bezpieczny (639)
- Musimy oddzielić ludzi od maszyn (640)
- Możemy pokonać automatyzację automatyzacją (643)
- Generowanie tekstu hasła w teście CAPTCHA (645)
- Generowanie rysunku z testem CAPTCHA (646)
- Funkcje graficzne biblioteki GD (648)
- Wyświetlanie tekstu za pomocą innych czcionek (652)
- Generowanie losowych rysunków z testami CAPTCHA (655)
- Przywracanie normalności w Gitarowych wojnach (657)
- Dodawanie testu CAPTCHA do skryptu do dodawania wyników (659)
- Pięć wymiarów niedopasowania (662)
- Diagramy niedopasowania (663)
- Zapisywanie danych na potrzeby wykresu (664)
- Od jednej tablicy do drugiej (668)
- Tworzenie tablicy niedopasowanych tematów (670)
- Plan tworzenia wykresu (671)
- Analizowanie kategorii (672)
- Określanie liczby kategorii (673)
- Podstawy rysowania wykresów (676)
- Rysowanie i wyświetlanie rysunku z wykresem słupkowym (679)
- Osobne rysunki z wykresami dla wszystkich (682)
- Użytkownicy serwisu Niedopasowani polubili wykresy (685)
12. Rozpowszechnianie danych i usługi sieciowe
- Marek musi poinformować świat o zaginięciu Kła (688)
- Przesyłanie danych o porwaniach do użytkowników (689)
- RSS pozwala przesyłać zawartość witryny do użytkowników (690)
- RSS to w rzeczywistości XML (691)
- Z bazy danych do czytnika kanałów RSS (696)
- Wizualizowanie kodu RSS (699)
- Dynamiczne generowanie kanału RSS (702)
- Odnośnik do kanału RSS (706)
- Jeden film jest wart miliona słów (708)
- Pobieranie materiałów od innych (710)
- Rozpowszechnianie filmów z YouTube (711)
- Przesyłanie żądania danych o filmach do serwisu YouTube (712)
- Marek jest gotów do utworzenia żądania REST (716)
- YouTube komunikuje się w języku XML (720)
- Analiza kodu XML odpowiedzi z serwisu YouTube (724)
- Wizualizowanie danych XML z opisem filmów (725)
- Dostęp do danych XML za pomocą obiektów (726)
- Od elementów XML do obiektów PHP (727)
- Pobieranie danych XML za pomocą obiektów (728)
- Nie zapominaj o przestrzeniach nazw! (729)
- Obserwatorzy zauważyli Kła (731)
- Rozmieść wyświetlane filmy (732)
- Formatowanie danych o filmach w celu ich wyświetlenia (733)
A Dziesięć najważniejszych tematów (których nie poruszyliśmy)
- Numer 1. Dopasowywanie kodu do języka PHP 4 i funkcji mysql (744)
- Numer 2. Uprawnienia użytkowników w MySQL (746)
- Numer 3. Zgłaszanie błędów w MySQL (748)
- Numer 4. Obsługa wyjątków w kodzie PHP (749)
- Numer 5. Obiektowy język PHP (751)
- Numer 6. Zabezpieczanie aplikacji PHP (753)
- Numer 7. Zabezpieczanie aplikacji przed atakami XSS (755)
- Numer 8. Pierwszeństwo operatorów (757)
- Numer 9. Czym różni się język PHP 5 od PHP 6? (758)
- Numer 10. Wykorzystanie kodu PHP innych osób (760)
B Konfigurowanie środowiska programistycznego
- Utwórz środowisko do programowania w języku PHP (762)
- Sprawdź dostępne komponenty (762)
- Czy masz serwer WWW? (763)
- Czy masz PHP? W której wersji? (763)
- Czy masz zainstalowany serwer MySQL? Którą wersję? (764)
- Zacznij od serwera WWW (765)
- Instalowanie serwera Apache - zakończenie (766)
- Instalowanie PHP (766)
- Etapy instalowania PHP (767)
- Etapy instalowania PHP - zakończenie (768)
- Instalowanie MySQL (768)
- Etapy instalowania serwera MySQL w systemie Windows (769)
- Włączanie PHP w systemie Mac OS X (772)
- Etapy instalowania MySQL w systemie Mac OS X (772)
- Przenoszenie kodu ze środowiska produkcyjnego do publicznie dostępnej witryny (774)
- Zrób zrzut danych (i tabel) (775)
- Przygotowania do użycia zrzutu danych (775)
- Przenoszenie zrzuconych danych na serwer publiczny (776)
- Łączenie się z serwerem publicznym (777)
C Rozszerzanie PHP
- Rozszerzanie języka PHP (780)
- A w komputerach Mac... (783)
Skorowidz (785)