PHP i MySQL. Tworzenie stron WWW. Vademecum profesjonalisty. Wydanie V - ebook
PHP i MySQL. Tworzenie stron WWW. Vademecum profesjonalisty. Wydanie V - ebook
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 stosowanie
- projektowanie, tworzenie i utrzymywanie bazy danych SQL jako elementu aplikacji WWW
- zaawansowane techniki PHP i funkcje MySQL
- usuwanie błędów i ich rejestrowanie w pliku dziennika
- korzystanie z frameworka Laravel
- integracja aplikacji z mediami społecznościowymi
PHP 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...
Kategoria: | Bazy danych |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-283-3257-7 |
Rozmiar pliku: | 11 MB |