Description
PHP i MySQL. Tworzenie stron WWW. Vademecum profesjonalisty
Język PHP i serwer bazy danych MySQL to niezwykle popularne narzędzia o otwartym kodzie źródłowym. Wiele świetnych, dynamicznych stron WWW powstało właśnie dzięki połączeniu tych dwóch narzędzi. Ogromne możliwości PHP oraz elastyczność i szybkość MySQL, bezustanne rozwijanie tych technologii, a także niezawodna i chętna do pomocy społeczność sprawiają, że tworzenie profesjonalnych, interaktywnych witryn WWW z wykorzystaniem synergii PHP i MySQL jest pracą przyjemną, efektywną i satysfakcjonującą!Trzymasz w ręku piąte wydanie poradnika dla projektantów WWW, po który twórcy stron sięgają wyjątkowo często. Książka została poprawiona, zaktualizowana o PHP 7 i rozszerzona o prezentację najnowszych możliwości MySQL. Zawiera przejrzysty opis podstaw PHP oraz konfiguracji i pracy z bazą danych MySQL. Przedstawiono w niej zasady poprawnego projektowania, pisania i wdrażania aplikacji. Uwzględniono też zagadnienia dotyczące bezpieczeństwa i uwierzytelniania użytkowników oraz implementacji takich rozwiązań w rzeczywistych witrynach WWW. Nie zabrakło tu również gruntownego wprowadzenia do zagadnienia integracji części klienckiej i serwerowej aplikacji internetowych za pomocą JavaScriptu.Najważniejsze zagadnienia przedstawione w książce to:podstawowe konstrukcje PHP i ich poprawne stosowanieprojektowanie, tworzenie i utrzymywanie bazy danych SQL jako elementu aplikacji WWWzaawansowane techniki PHP i funkcje MySQLusuwanie błędów i ich rejestrowanie w pliku dziennikakorzystanie z frameworka Laravelintegracja aplikacji z mediami społecznościowymiPHP i MySQL —klasyczne rozwiązanie dla niezawodnych, dynamicznych witryn!Laura Thomson — jest dyrektorem ds. technicznych w Mozilla Corporation. Wcześniej była prezesem firm OmniTI i Tangled Web Design. W wolnych chwilach jeździ konno lub dyskutuje o idei wolnego oprogramowania.Luke Welling — jest architektem oprogramowania i bywalcem konferencji poświęconych programowaniu aplikacji internetowych. Jakiś czas temu wykładał inżynierię oprogramowania na Uniwersytecie Melbourne w Australii. W wolnym czasie zajmuje się propagowaniem zalet wolnego oprogramowania.Spis treści:O autorach (19)O współautorach (19)Wprowadzenie (21)CZĘŚĆ I. STOSOWANIE PHP (31)Rozdział 1. Podstawowy kurs PHP (33)Zastosowanie PHP (34)Tworzenie przykładowej aplikacji: „Części samochodowe Janka” (34)Formularz zamówienia (34)Przetwarzanie formularza (36)Osadzanie PHP w HTML (36)Zastosowanie znaczników PHP (37)Instrukcje PHP (38)Odstępy (38)Komentarze (39)Dodawanie zawartości dynamicznej (39)Wywoływanie funkcji (40)Używanie funkcji date() (40)Dostęp do zmiennych formularza (41)Zmienne formularza (41)Łączenie łańcuchów znaków (43)Zmienne i łańcuchy znaków (43)Identyfikatory (44)Typy zmiennych (44)Typy danych w PHP (45)Siła typu (45)Rzutowanie typu (46)Zmienne zmiennych (46)Deklarowanie i używanie stałych (46)Zasięg zmiennych (47)Używanie operatorów (48)Operatory arytmetyczne (48)Operatory łańcuchowe (49)Operatory przypisania (49)Operatory porównań (52)Operatory logiczne (52)Operatory bitowe (53)Pozostałe operatory (53)Obliczanie sum w formularzu (56)Pierwszeństwo i kolejność (57)Funkcje zarządzania zmiennymi (59)Sprawdzanie i ustawianie typów zmiennych (59)Sprawdzanie stanu zmiennej (60)Reinterpretacja zmiennych (61)Podejmowanie decyzji za pomocą instrukcji warunkowych (61)Instrukcja if (61)Bloki kodu (62)Instrukcja else (62)Instrukcja elseif (63)Instrukcja switch (63)Porównanie różnych instrukcji warunkowych (65)Powtarzanie działań przy użyciu iteracji (65)Pętle while (66)Pętle for i foreach (67)Pętle do..while (68)Wyłamywanie się ze struktury skryptu (69)Używanie alternatywnych składni struktur sterujących (69)Używanie struktury declare (70)W następnym rozdziale (70)Rozdział 2. Przechowywanie i wyszukiwanie danych (71)Zapisywanie danych do późniejszego użycia (71)Przechowywanie i wyszukiwanie zamówień Janka (72)Przetwarzanie plików (72)Otwieranie pliku (73)Tryby otwarcia pliku (73)Stosowanie funkcji fopen() do otwarcia pliku (73)Otwieranie pliku przez protokół FTP lub HTTP (75)Problemy z otwieraniem plików (76)Zapisywanie danych w pliku (77)Parametry funkcji fwrite() (78)Formaty plików (79)Zamykanie pliku (79)Odczyt z pliku (81)Otwieranie pliku w celu odczytu – fopen() (82)Wiedzieć, kiedy przestać – feof() (82)Odczytywanie pliku wiersz po wierszu – fgets(), fgetss() i fgetcsv() (83)Odczyt całego pliku – readfile(), fpassthru(), file() i file_get_contents() (83)Odczyt pojedynczego znaku – fgetc() (84)Odczytywanie zadanej długości – fread() (85)Inne funkcje plikowe (85)Sprawdzanie istnienia pliku – file_exists() (85)Określanie wielkości pliku – filesize() (85)Kasowanie pliku – unlink() (86)Poruszanie się wewnątrz pliku – rewind(), fseek() i ftell() (86)Blokowanie pliku (87)Lepszy sposób obróbki danych – bazy danych (88)Problemy związane ze stosowaniem plików jednorodnych (88)Jak RDBMS rozwiązują powyższe problemy? (89)Propozycje dalszych lektur (89)W następnym rozdziale (89)Rozdział 3. Stosowanie tablic (91)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 z innymi indeksami (94)Inicjowanie tablicy (95)Dostęp do elementów tablicy (95)Stosowanie pętli (95)Operatory tablicowe (96)Tablice wielowymiarowe (97)Sortowanie tablic (100)Stosowanie funkcji sort() (100)Stosowanie funkcji asort() i ksort() do porządkowania tablic (101)Sortowanie odwrotne (102)Sortowanie tablic wielowymiarowych (102)Zastosowanie funkcji array_multisort() (102)Typy sortowań definiowane przez użytkownika (103)Odwrotne sortowanie zdefiniowane przez użytkownika (104)Zmiany kolejności elementów w tablicach (105)Stosowanie funkcji shuffle() (105)Odwracanie kolejności elementów w tablicy (106)Wczytywanie tablic z plików (107)Wykonywanie innych działań na tablicach (110)Poruszanie się wewnątrz tablicy – funkcje each(), current(), reset(), end(), next(), pos() i prev() (110)Dołączanie dowolnej funkcji do każdego elementu tablicy – funkcja array_walk() (111)Liczenie elementów tablicy: count(), sizeof() i array_count_values() (112)Konwersja tablic na zmienne skalarne – funkcja extract() (112)Propozycje dalszych lektur (114)W następnym rozdziale (114)Rozdział 4. Manipulowanie łańcuchami znaków i wyrażenia regularne (115)Przykładowa aplikacja – Inteligentny Formularz Pocztowy (115)Formatowanie łańcuchów znaków (117)Przycinanie łańcuchów – funkcje chop(), ltrim() i trim() (118)Formatowanie wyjściowych łańcuchów znaków (118)Łączenie i rozdzielanie łańcuchów znaków za pomocą funkcji łańcuchowych (125)Stosowanie funkcji explode(), implode() i join() (125)Stosowanie funkcji strtok() (126)Stosowanie funkcji substr() (127)Porównywanie łańcuchów znaków (127)Porządkowanie łańcuchów znaków – funkcje strcmp(), strcasecmp() i strnatcmp() (128)Sprawdzanie długości łańcucha znaków za pomocą funkcji strlen() (128)Dopasowywanie i zamiana łańcuchów znaków za pomocą funkcji łańcuchowych (129)Znajdowanie fragmentów w łańcuchach znaków – funkcje strstr(), strchr(), strrchr() i stristr() (129)Odnajdywanie pozycji fragmentu łańcucha – funkcje strpos() i strrpos() (130)Zamiana fragmentów łańcucha znaków – funkcje str_replace() i substr_replace() (131)Wprowadzenie do wyrażeń regularnych (132)Podstawy (132)Ograniczniki (132)Zbiory i klasy znaków (133)Powtarzalność (134)Podwyrażenia (135)Podwyrażenia policzalne (135)Kotwiczenie na początku lub na końcu łańcucha znaków (135)Rozgałęzianie (135)Dopasowywanie specjalnych znaków literowych (136)Podsumowanie metaznaków (136)Sekwencje specjalne (137)Odwołania wsteczne (138)Asercje (138)Wykorzystanie wszystkich zdobytych informacji – inteligentny formularz (139)Odnajdywanie fragmentów łańcuchów za pomocą wyrażeń regularnych (140)Zamiana fragmentów łańcuchów za pomocą wyrażeń regularnych (141)Rozdzielanie łańcuchów za pomocą wyrażeń regularnych (141)Propozycje dalszych lektur (142)W następnym rozdziale (142)Rozdział 5. Ponowne wykorzystanie kodu i tworzenie funkcji (143)Zalety ponownego stosowania kodu (143)Koszt (144)Niezawodność (144)Spójność (144)Stosowanie funkcji require() i include() (144)Stosowanie funkcji require() do dołączania kodu (145)Stosowanie require() w szablonach stron WWW (146)Stosowanie opcji auto_prepend_file i auto_append_file (150)Stosowanie funkcji w PHP (151)Wywoływanie funkcji (151)Wywołanie niezdefiniowanej funkcji (153)Wielkość liter a nazwy funkcji (154)Definiowanie własnych funkcji (154)Podstawowa struktura funkcji (154)Nadawanie nazwy funkcji (155)Parametry (156)Zasięg (158)Przekazanie przez referencję czy przekazanie przez wartość? (160)Stosowanie słowa kluczowego return (161)Zwracanie wartości przez funkcje (162)Implementacja rekurencji (163)Implementacja funkcji anonimowych (lub domknięć) (165)Propozycje dalszych lektur (166)W następnym rozdziale (166)Rozdział 6. Obiektowy PHP (167)Koncepcje programowania obiektowego (167)Klasy i obiekty (168)Polimorfizm (169)Dziedziczenie (169)Tworzenie klas, atrybutów i operacji w PHP (170)Struktura klasy (170)Konstruktory (170)Destruktory (171)Tworzenie egzemplarzy (171)Stosowanie atrybutów klasy (172)Wywoływanie operacji klas (172)Kontrola dostępu przy użyciu modyfikatorów private i public (173)Pisanie funkcji dostępowych (174)Implementacja dziedziczenia w PHP (175)Kontrolowanie widoczności w trakcie dziedziczenia przy użyciu private i protected (176)Przesłanianie (177)Zapobieganie dziedziczeniu i przesłanianiu przy użyciu słowa kluczowego final (178)Wielokrotne dziedziczenie (179)Implementowanie interfejsów (180)Cechy (180)Projektowanie klas (182)Tworzenie kodu dla własnej klasy (183)Zaawansowane mechanizmy obiektowe w PHP (189)Używanie stałych klasowych (189)Implementowanie metod statycznych (190)Sprawdzanie typu klasy i wskazywanie typu (190)Późne wiązania statyczne (191)Klonowanie obiektów (191)Używanie klas abstrakcyjnych (192)Przeciążanie metod przy użyciu __call() (192)Używanie metody __autoload() (193)Implementowanie iteratorów i iteracji (194)Generatory (195)Przekształcanie klas w łańcuchy znaków (197)Używanie API Reflection (197)Przestrzenie nazw (198)Stosowanie podprzestrzeni nazw (200)Prezentacja globalnej przestrzeni nazw (200)Importowanie przestrzeni nazw oraz określanie ich nazw zastępczych (200)W następnym rozdziale (201)Rozdział 7. Obsługa błędów i wyjątków (203)Koncepcja obsługi wyjątków (203)Klasa Exception (205)Wyjątki definiowane przez użytkownika (206)Wyjątki w Częściach samochodowych Janka (207)Wyjątki i inne mechanizmy obsługi błędów w PHP (210)Propozycje dalszych lektur (211)W następnym rozdziale (211)CZĘŚĆ II. STOSOWANIE MYSQL (213)Rozdział 8. Projektowanie internetowej bazy danych (215)Koncepcje relacyjnych baz danych (216)Tabele (216)Kolumny (216)Wiersze (216)Wartości (217)Klucze (217)Schematy (218)Relacje (218)Jak zaprojektować internetową bazę danych? (219)Określ obiekty świata realnego, których model chcesz wykonać (219)Unikaj przechowywania redundantnych danych (220)Zapisuj atomowe wartości kolumn (221)Dobierz właściwe klucze (222)Pomyśl o zapytaniach, które zadasz bazie (222)Unikaj tworzenia tabel z wieloma pustymi polami (222)Typy tabel – podsumowanie (223)Architektura internetowej bazy danych (224)Propozycje dalszych lektur (225)W następnym rozdziale (225)Rozdział 9. Tworzenie internetowej bazy danych (227)Użytkowanie monitora MySQL (228)Logowanie się do serwera MySQL (229)Tworzenie baz i rejestrowanie użytkowników (230)Definiowanie użytkowników i przywilejów (230)Wprowadzenie do systemu przywilejów MySQL (231)Zasada najmniejszego przywileju (231)Rejestrowanie użytkowników: polecenia CREATE USER oraz GRANT (231)Typy i poziomy przywilejów (233)Polecenie REVOKE (236)Przykłady użycia poleceń GRANT i REVOKE (236)Rejestrowanie użytkownika łączącego się z internetu (237)Używanie odpowiedniej bazy danych (238)Tworzenie tabel bazy danych (238)Znaczenie dodatkowych atrybutów kolumn (240)Typy kolumn (241)Rzut oka na bazę danych – polecenia SHOW i DESCRIBE (243)Tworzenie indeksów (243)Identyfikatory MySQL (244)Wybór typów danych w kolumnach (246)Typy liczbowe (246)Propozycje dalszych lektur (251)W następnym rozdziale (251)Rozdział 10. Praca z bazą danych MySQL (253)Czym jest SQL? (253)Zapisywanie danych do bazy (254)Wyszukiwanie danych w bazie (256)Wyszukiwanie danych spełniających określone kryteria (257)Wyszukiwanie danych w wielu tabelach (259)Szeregowanie danych w określonym porządku (264)Grupowanie i agregowanie danych (264)Wskazanie wierszy, które mają być wyświetlone (266)Używanie podzapytań (267)Dokonywanie zmian rekordów w bazie danych (269)Zmiana struktury istniejących tabel (269)Usuwanie rekordów z bazy danych (271)Usuwanie tabel (272)Usuwanie całych baz danych (272)Propozycje dalszych lektur (272)W następnym rozdziale (272)Rozdział 11. Łączenie się z bazą MySQL za pomocą PHP (273)Jak działa internetowa baza danych? (273)Wykonywanie zapytań do bazy danych z poziomu strony WWW (276)Sprawdzenie poprawności wpisanych danych (277)Ustanawianie połączenia z bazą danych (278)Wybór używanej bazy danych (279)Wysyłanie zapytań do bazy danych (279)Stosowanie poleceń przygotowanych (280)Odczytywanie rezultatów zapytań (281)Zamykanie połączenia z bazą danych (282)Wstawianie nowych danych do bazy (283)Używanie innych interfejsów bazodanowych PHP (286)Stosowanie ogólnego interfejsu dostępu do baz danych: PDO (286)Propozycje dalszych lektur (289)W następnym rozdziale (289)Rozdział 12. Administrowanie MySQL dla zaawansowanych (291)Szczegóły systemu przywilejów (291)Tabela user (293)Tabela db (295)Tabele tables_priv, columns_priv i procs_priv (296)Kontrola dostępu: w jaki sposób MySQL używa tabel przywilejów (297)Zmiana przywilejów: kiedy zmiany zostaną uwzględnione? (298)Ochrona bazy danych (298)MySQL z perspektywy systemu operacyjnego (298)Hasła (299)Przywileje użytkowników (299)MySQL i internet (300)Uzyskiwanie szczegółowych informacji o bazie danych (301)Uzyskiwanie informacji poleceniem SHOW (301)Uzyskiwanie informacji o kolumnach za pomocą polecenia DESCRIBE (303)Jak wykonywane są zapytania: polecenie EXPLAIN (303)Optymalizowanie bazy danych (308)Optymalizacja projektu bazy danych (308)Przywileje (308)Optymalizacja tabel (308)Stosowanie indeksów (308)Używanie wartości domyślnych (309)Więcej wskazówek (309)Tworzenie kopii zapasowej bazy danych MySQL (309)Przywracanie bazy danych MySQL (310)Implementowanie replikacji (310)Konfigurowanie serwera nadrzędnego (311)Transfer danych początkowych (311)Konfigurowanie odbiorcy lub odbiorców (312)Propozycje dalszych lektur (312)W następnym rozdziale (312)Rozdział 13. Zaawansowane programowanie w MySQL (313)Instrukcja LOAD DATA INFILE (313)Mechanizmy składowania danych (314)Transakcje (315)Definicje dotyczące transakcji (315)Użycie transakcji w InnoDB (316)Klucze obce (317)Procedury składowane (318)Prosty przykład (318)Zmienne lokalne (321)Kursory i struktury sterujące (321)Wyzwalacze (324)Propozycje dalszych lektur (326)W następnym rozdziale (326)CZĘŚĆ III. E-COMMERCE I BEZPIECZEŃSTWO (327)Rozdział 14. Zagrożenia bezpieczeństwa aplikacji internetowych (329[ 1])Identyfikacja zagrożeń (329)Dostęp do wrażliwych danych (329)Modyfikacje danych (332)Utrata lub zniszczenie danych (332)Blokada usługi (333)Wstrzykiwanie złośliwego kodu (335)Złamanie zabezpieczeń dostępu do serwera (336)Zaprzeczenie korzystania z usługi (336)Identyfikacja użytkowników (337)Napastnicy i crackerzy (337)Nieświadomi użytkownicy zainfekowanych komputerów (338)Rozczarowani pracownicy (338)Złodzieje sprzętu komputerowego (338)My sami (338)W następnym rozdziale (339)Rozdział 15. Tworzenie bezpiecznych aplikacji internetowych (341)Strategie zapewniania bezpieczeństwa (341)Planowanie z wyprzedzeniem (342)Równowaga między bezpieczeństwem i użytecznością (342)Monitorowanie bezpieczeństwa (343)Ogólne podejście do bezpieczeństwa (343)Zabezpieczanie kodu źródłowego (343)Filtrowanie danych pochodzących od użytkowników (343)Unieważnianie danych wynikowych (347)Organizacja kodu źródłowego (349)Zawartość kodu źródłowego (350)Zagadnienia dotyczące systemu plików (351)Stabilność kodu i błędy (352)Wykonywanie poleceń (352)Zabezpieczanie serwera WWW oraz PHP (354)Regularne uaktualnianie oprogramowania (354)Analiza ustawień w pliku php.ini (355)Konfiguracja serwera WWW (355)Aplikacje internetowe działające na współużytkowanych serwerach hostingowych (356)Bezpieczeństwo
serwera bazy danych (357)Użytkownicy i system uprawnień (357)Wysyłanie danych do serwera (358)Łączenie się z serwerem (359)Praca serwera (359)Zabezpieczanie sieci (359)Zapory sieciowe (360)Wykorzystanie strefy zdemilitaryzowanej (360)Przygotowanie na ataki DoS i DDoS (361)Bezpieczeństwo komputerów i systemów operacyjnych (361)Uaktualnianie systemu operacyjnego (361)Udostępnianie tylko niezbędnych usług (362)Fizyczne zabezpieczenie serwera (362)Planowanie działań na wypadek awarii (362)W następnym rozdziale (364)Rozdział 16. Implementacja metod uwierzytelniania przy użyciu PHP (365)Identyfikacja użytkowników (365)Implementacja kontroli dostępu (366)Przechowywanie haseł dostępu (368)Zabezpieczanie haseł (369)Zabezpieczanie więcej niż jednej strony (370)Podstawowa metoda uwierzytelniania (371)Wykorzystanie podstawowej metody uwierzytelniania w PHP (371)Wykorzystanie podstawowej metody uwierzytelniania na serwerze Apache przy użyciu plików .htaccess (373)Implementacja własnej metody uwierzytelniania (376)Propozycje dalszych lektur (376)W następnym rozdziale (376)CZĘŚĆ IV. ZAAWANSOWANE TECHNIKI PHP (377)Rozdział 17. Interakcja z systemem plików i serwerem (379)Wprowadzenie do wysyłania plików (379)Kod HTML służący do wysyłania plików (380)Tworzenie kodu PHP obsługującego plik (381)Śledzenie postępów przesyłania plików (385)Najczęściej spotykane problemy (387)Stosowanie funkcji katalogowych (388)Odczyt z katalogów (388)Otrzymywanie informacji na temat aktualnego katalogu (391)Tworzenie i usuwanie katalogów (391)Interakcja z systemem plików (392)Pobieranie informacji o pliku (392)Zmiana właściwości pliku (394)Tworzenie, usuwanie i przenoszenie plików (395)Stosowanie funkcji uruchamiających programy (395)Interakcja ze środowiskiem: funkcje getenv() i putenv() (398)Propozycje dalszych lektur (398)W następnym rozdziale (398)Rozdział 18. Stosowanie funkcji sieci i protokołu (399)Przegląd protokołów (399)Wysyłanie i odczytywanie poczty elektronicznej (400)Korzystanie z danych z innych witryn WWW (400)Stosowanie funkcji połączeń sieciowych (403)Tworzenie kopii bezpieczeństwa lub kopii lustrzanej pliku (407)Stosowanie FTP w celu utworzenia kopii bezpieczeństwa lub kopii lustrzanej pliku (407)Wysyłanie plików (413)Unikanie przekroczenia dopuszczalnego czasu (413)Stosowanie innych funkcji FTP (414)Propozycje dalszych lektur (414)W następnym rozdziale (414)Rozdział 19. Zarządzanie datą i czasem (415)Uzyskiwanie informacji o dacie i czasie w PHP (415)Strefy czasowe (415)Stosowanie funkcji date() (416)Obsługa znaczników czasu Uniksa (417)Stosowanie funkcji getdate() (419)Sprawdzanie poprawności dat przy użyciu funkcji checkdate() (420)Formatowanie znaczników czasu (420)Konwersja pomiędzy formatami daty PHP i MySQL (422)Obliczanie dat w PHP (424)Obliczanie dat w MySQL (425)Stosowanie mikrosekund (426)Stosowanie funkcji kalendarzowych (426)Propozycje dalszych lektur (427)W następnym rozdziale (427)Rozdział 20. Umiędzynarodawianie i lokalizowanie (429)Lokalizacja to nie tylko tłumaczenie (429)Zbiory znaków (430)Zbiory znaków i ich związki z bezpieczeństwem (431)Stosowanie wielobajtowych funkcji łańcuchowych w PHP (432)Tworzenie struktury strony przystosowanej do lokalizacji (432)Zastosowanie funkcji gettext() w umiędzynarodowionej aplikacji (435)Konfiguracja systemu w celu wykorzystania funkcji gettext() (436)Tworzenie plików z tłumaczeniami (437)Implementacja zlokalizowanych treści w PHP z użyciem funkcji gettext() (438)Propozycje dalszej lektury (439)W następnym rozdziale (440)Rozdział 21. Generowanie obrazków (441)Konfigurowanie obsługi obrazków w PHP (441)Formaty obrazków (442)JPEG (442)PNG (442)GIF (443)Tworzenie obrazków (443)Tworzenie kadru obrazka (444)Rysowanie lub umieszczanie tekstu w obrazku (444)Wyświetlanie ostatecznej grafiki (446)Końcowe czynności porządkujące (447)Stosowanie automatycznie generowanych obrazków na innych stronach (447)Stosowanie tekstu i czcionek do tworzenia obrazków (448)Konfiguracja podstawowego kadru (451)Dopasowanie tekstu do przycisku (452)Nadawanie tekstowi odpowiedniej pozycji (454)Wpisywanie tekstu do przycisku (455)Etap końcowy (455)Rysowanie figur i wykresów danych (455)Inne funkcje obrazków (462)W następnym rozdziale (462)Rozdział 22. Stosowanie kontroli sesji w PHP (463)Czym jest kontrola sesji? (463)Podstawowa zasada działania sesji (463)Czym jest cookie? (464)Konfiguracja cookies w PHP (464)Stosowanie cookies w sesji (465)Przechowywanie identyfikatora sesji (465)Implementacja prostych sesji (466)Rozpoczynanie sesji (466)Zgłaszanie zmiennych sesyjnych (466)Stosowanie zmiennych sesyjnych (467)Usuwanie zmiennych i niszczenie sesji (467)Przykład prostej sesji (467)Konfiguracja kontroli sesji (469)Implementacja uwierzytelniania w kontroli sesji (470)W następnym rozdziale (476)Rozdział 23. Integracja JavaScriptu i PHP (477)Przedstawienie technologii AJAX (477)Krótka prezentacja jQuery (478)Stosowanie jQuery w aplikacjach internetowych (478)Podstawowe pojęcia i techniki związane ze stosowaniem jQuery (479)Stosowanie selektorów jQuery (479)Stosowanie jQuery, technologii AJAX i skryptów PHP (487)Ajaksowe pogawędki – skrypt serwera (487)Metody jQuery służące do korzystania z technologii AJAX (490)Kliencka część aplikacji do prowadzenia pogawędek (493)Propozycje dalszej lektury (498)W następnym rozdziale (498)Rozdział 24. Inne przydatne własności (499)Przetwarzanie łańcuchów znaków – funkcja eval() (499)Zakończenie wykonania – die i exit (500)Serializacja zmiennych i obiektów (500)Pobieranie informacji na temat środowiska PHP (501)Uzyskiwanie informacji na temat załadowanych rozszerzeń (502)Identyfikacja właściciela skryptu (502)Uzyskiwanie informacji na temat daty modyfikacji skryptu (502)Czasowa zmiana środowiska wykonawczego (503)Podświetlanie źródeł (504)Używanie PHP w wierszu poleceń (505)W następnej części (506)CZĘŚĆ V. TWORZENIE PRAKTYCZNYCH PROJEKTÓW PHP I MYSQL (507)Rozdział 25. Stosowanie PHP i MySQL w dużych projektach (509)Zastosowanie inżynierii oprogramowania w tworzeniu aplikacji WWW (510)Planowanie i prowadzenie projektu aplikacji WWW (510)Ponowne stosowanie kodu (511)Tworzenie kodu łatwego w utrzymaniu (512)Standardy kodowania (512)Dzielenie kodu (515)Stosowanie standardowej struktury katalogów (516)Dokumentacja i dzielenie wewnętrznych funkcji (516)Implementacja kontroli wersji (516)Wybór środowiska programistycznego (517)Dokumentacja projektów (517)Prototypowanie (518)Oddzielanie logiki i zawartości (519)Optymalizacja kodu (519)Stosowanie prostych optymalizacji (520)Testowanie (520)Propozycje dalszych lektur (521)W następnym rozdziale (521)Rozdział 26. Usuwanie i rejestracja błędów (523)Błędy programistyczne (523)Błędy składni (523)Błędy wykonania (524)Błędy logiczne (529)Pomoc w usuwaniu błędów w zmiennych (530)Poziomy zgłaszania błędów (532)Zmiana ustawień zgłaszania błędów (534)Wyzwalanie własnych błędów (535)Eleganckie rejestrowanie błędów (536)Rejestrowanie błędów w pliku dziennika (538)W następnym rozdziale (538)Rozdział 27. Tworzenie uwierzytelniania użytkowników i personalizacji (539)Składniki rozwiązania (539)Identyfikacja użytkownika i personalizacja (540)Przechowywanie zakładek (540)Rekomendowanie zakładek (541)Przegląd rozwiązania (541)Implementacja bazy danych (543)Implementacja podstawowej witryny (544)Implementacja uwierzytelniania użytkowników (546)Rejestracja użytkowników (546)Logowanie (551)Wylogowanie (554)Zmiana hasła (555)Ustawianie zapomnianych haseł (557)Implementacja przechowywania i odczytywania zakładek (561)Dodawanie zakładek (561)Wyświetlanie zakładek (563)Usuwanie zakładek (564)Implementacja rekomendacji (566)Rozwijanie projektu i możliwe rozszerzenia (568)Rozdział 28. Tworzenie internetowego klienta poczty elektronicznej z użyciem Laravela (571)Prezentacja frameworka Laravel 5 (571)Tworzenie nowego projektu Laravel (571)Struktura aplikacji Laravel (572)Cykl obsługi żądań i wzorzec MVC Laravela (574)Klasy modelu, widok i kontroler frameworka Laravel (575)Rozdział 29. Tworzenie internetowego klienta poczty elektronicznej z użyciem Laravela – część 2. (591)Tworzenie prostego klienta IMAP przy użyciu Laravela (591)Funkcje IMAP udostępniane przez PHP (591)Opakowywanie funkcji IMAP na potrzeby aplikacji Laravel (599)Łączenie wszystkich elementów w celu implementacji internetowego klienta poczty elektronicznej (615)Implementacja klasy ImapServiceProvider (616)Strona uwierzytelniania aplikacji klienckiej (617)Implementacja głównego widoku aplikacji (621)Implementacja usuwania i wysyłania wiadomości (629)Wnioski (634)Rozdział 30. Integracja z mediami społecznościowymi – udostępnianie i uwierzytelnianie (635)OAuth – internetowa usługa uwierzytelniająca (635)Przydziały typu kod autoryzacji (637)Przydziały niejawne (638)Implementacja internetowego klienta Instagrama (639)Oznaczanie zdjęć jako lubianych (646)Wniosek (647)Rozdział 31. Tworzenie koszyka na zakupy (649)Składniki rozwiązania (649)Tworzenie katalogu online (650)Śledzenie zakupów użytkownika podczas przeglądania (650)Implementacja systemu płatności (650)Interfejs administratora (651)Przegląd rozwiązania (651)Implementacja bazy danych (654)Implementacja katalogu online (656)Przedstawianie kategorii (658)Wyświetlanie książek danej kategorii (660)Przedstawianie szczegółowych danych książki (661)Implementacja koszyka na zakupy (662)Stosowanie skryptu pokaz_kosz.php (663)Podgląd koszyka (665)Dodawanie produktów do koszyka (667)Zapisywanie uaktualnionego koszyka (669)Wyświetlanie podsumowania w pasku nagłówka (669)Pobyt w kasie (670)Implementacja płatności (675)Implementacja interfejsu administratora (676)Rozwijanie projektu (682)DODATKI (685)Dodatek A. Instalacja Apache, PHP i MySQL (687)Instalacja Apache, PHP i MySQL w systemie UNIX (688)Instalacja przy użyciu binariów (688)Instalacja przy użyciu kodów źródłowych (689)Podstawowe zmiany w konfiguracji serwera Apache (695)Czy obsługa PHP działa poprawnie? (696)Czy SSL działa poprawnie? (697)Instalacja Apache, PHP i MySQL w systemie Windows (698)Instalowanie PEAR (700)Instalowanie PHP z innymi serwerami (700)Skorowidz (701)
Informatyka
lech butelka cena, sałatka meksykańska z chipsami, wąsy rodzaje, lokomotywy zabawki, laysy kfc, kalkulator casio fx 991es plus, zszywka popularne, drukarka polaroid, smartwatch damski roneberg
yyyyy