PRZYK£ADOWY ROZDZIA£ PHP i MySQL. SPIS TRE„CI Tworzenie …pdf.helion.pl/phmsql/phmsql-2.pdf ·...

35
Wydawnictwo Helion ul. Chopina 6 44-100 Gliwice tel. (32)230-98-63 e-mail: [email protected] PRZYK£ADOWY ROZDZIA£ PRZYK£ADOWY ROZDZIA£ IDZ DO IDZ DO ZAMÓW DRUKOWANY KATALOG ZAMÓW DRUKOWANY KATALOG KATALOG KSI¥¯EK KATALOG KSI¥¯EK TWÓJ KOSZYK TWÓJ KOSZYK CENNIK I INFORMACJE CENNIK I INFORMACJE ZAMÓW INFORMACJE O NOWOŒCIACH ZAMÓW INFORMACJE O NOWOŒCIACH ZAMÓW CENNIK ZAMÓW CENNIK CZYTELNIA CZYTELNIA FRAGMENTY KSI¥¯EK ONLINE FRAGMENTY KSI¥¯EK ONLINE SPIS TREŒCI SPIS TREŒCI DODAJ DO KOSZYKA DODAJ DO KOSZYKA KATALOG ONLINE KATALOG ONLINE PHP i MySQL. Tworzenie stron WWW Autor: William Jason Gilmore T³umaczenie: Jacek Smycz, Daniel Kaczmarek ISBN: 83-7197-523-6 Tytu³ orygina³u: Format: B5, stron: oko³o 800 PHP and MySQL Web Developmnent Przyk³ady na ftp: 713 kB 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

Transcript of PRZYK£ADOWY ROZDZIA£ PHP i MySQL. SPIS TRE„CI Tworzenie …pdf.helion.pl/phmsql/phmsql-2.pdf ·...

  • Wydawnictwo Helion

    ul. Chopina 6

    44-100 Gliwice

    tel. (32)230-98-63

    e-mail: [email protected]

    PRZYK£ADOWY ROZDZIA£PRZYK£ADOWY ROZDZIA£

    IDZ DOIDZ DO

    ZAMÓW DRUKOWANY KATALOGZAMÓW DRUKOWANY KATALOG

    KATALOG KSI¥¯EKKATALOG KSI¥¯EK

    TWÓJ KOSZYKTWÓJ KOSZYK

    CENNIK I INFORMACJECENNIK I INFORMACJE

    ZAMÓW INFORMACJEO NOWOŒCIACH

    ZAMÓW INFORMACJEO NOWOŒCIACH

    ZAMÓW CENNIKZAMÓW CENNIK

    CZYTELNIACZYTELNIA

    FRAGMENTY KSI¥¯EK ONLINEFRAGMENTY KSI¥¯EK ONLINE

    SPIS TREŒCISPIS TREŒCI

    DODAJ DO KOSZYKADODAJ DO KOSZYKA

    KATALOG ONLINEKATALOG ONLINE

    PHP i MySQL.

    Tworzenie stron WWW

    Autor: William Jason Gilmore

    T³umaczenie: Jacek Smycz, Daniel Kaczmarek

    ISBN: 83-7197-523-6

    Tytu³ orygina³u:

    Format: B5, stron: oko³o 800

    PHP and MySQL Web Developmnent

    Przyk³ady na ftp: 713 kB

    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

    http://helion.plhttp://helion.pl/zamow_katalog.htmhttp://helion.pl/katalog.htmhttp://helion.pl/zakupy/add.cgi?id=phmsqlhttp://helion.pl/emaile.cgihttp://helion.pl/cennik.htmhttp://helion.pl/online.htmmailto:[email protected]://ftp.helion.pl/przyklady/phmsql.ziphttp://helion.pl/ksiazki/phmsql.htmhttp://www.amazon.com/exec/obidos/ASIN/0672317842

  • O Autorach .........................................................................................................21

    Wprowadzenie ....................................................................................................23

    Dlaczego warto przeczytać niniejszą książkę? ....................................................................................23Korzyści wynikające z lektury tej książki ...................................................................................... .......24Czym jest PHP?....................................................................................................................................25Nowości w PHP, wersja 4....................................................................................................................25Czym jest MySQL?..............................................................................................................................26Dlaczego warto wykorzystywać PHP i MySQL? ................................................................................26Niektóre zalety PHP.............................................................................................................................27

    Wydajność .....................................................................................................................................27Integracja z bazami danych............................................................................................................27Wbudowane biblioteki ...................................................................................................................27Koszt ..............................................................................................................................................28Nauka PHP.....................................................................................................................................28Przenośność ...................................................................................................................................28Kod źródłowy ................................................................................................................................28

    Niektóre zalety MySQL .......................................................................................................................28Wydajność .....................................................................................................................................29Niski koszt .....................................................................................................................................29Łatwość wykorzystania..................................................................................................................29Przenośność ...................................................................................................................................29Kod źródłowy ................................................................................................................................29

    Układ treści książki ..............................................................................................................................29Kody źródłowe .....................................................................................................................................30Uwagi końcowe....................................................................................................................................30

    Część I Stosowanie PHP ................................................................31

    Rozdział 1. Podstawowy kurs PHP .......................................................................33

    Zastosowanie PHP ...............................................................................................................................34Przykładowa aplikacja: „Części samochodowe Janka” .......................................................................34

    Formularz zamówienia ..................................................................................................................35Przetwarzanie formularza ..............................................................................................................36

    Osadzanie PHP w HTML.....................................................................................................................36Zastosowanie znaczników PHP .....................................................................................................38Style znaczników PHP...................................................................................................................38Instrukcje PHP ...............................................................................................................................39Odstępy ..........................................................................................................................................39Komentarze ....................................................................................................................................40

  • 6 PHP i MySQL. Tworzenie stron WWW

    Dodawanie zawartości dynamicznej ....................................................................................................41Wywoływanie funkcji....................................................................................................................41Funkcja date() ................................................................................................................................42

    Dostęp do zmiennych formularza ........................................................................................................42Zmienne formularza.......................................................................................................................42Łączenie ciągów ............................................................................................................................44Zmienne i ciągi znaków.................................................................................................................44

    Identyfikatory.......................................................................................................................................45Zmienne zadeklarowane przez użytkownika .......................................................................................45Przypisywanie wartości zmiennym......................................................................................................45Typy zmiennych...................................................................................................................................46

    Typy danych w PHP ......................................................................................................................46Siła typu .........................................................................................................................................46Rzutowanie typu ............................................................................................................................47Zmienne zmiennych.......................................................................................................................47

    Stałe......................................................................................................................................................48Zasięg zmiennych.................................................................................................................................48Operatory..............................................................................................................................................49

    Operatory arytmetyczne.................................................................................................................49Operatory ciągów...........................................................................................................................50Operatory przypisania....................................................................................................................50Operatory porównań ......................................................................................................................53Operatory logiczne.........................................................................................................................54Operatory bitowe ...........................................................................................................................54Pozostałe operatory........................................................................................................................54

    Stosowanie operatorów: obliczanie sum w formularzu .......................................................................56Pierwszeństwo i kolejność: wyznaczanie wartości wyrażeń ...............................................................57Zarządzanie zmiennymi .......................................................................................................................59

    Sprawdzanie i ustawianie typów zmiennych .................................................................................59Sprawdzanie stanu zmiennej..........................................................................................................60Reinterpretacja zmiennych ............................................................................................................61

    Struktury kontrolujące..........................................................................................................................61Podejmowanie decyzji za pomocą instrukcji warunkowych ...............................................................61

    Instrukcja if ....................................................................................................................................61Bloki kodu......................................................................................................................................62Uwaga poboczna: wcinanie kodu ..................................................................................................62Instrukcja else ................................................................................................................................62Instrukcja elseif..............................................................................................................................63Instrukcja switch ............................................................................................................................64Porównanie różnych instrukcji warunkowych...............................................................................66

    Iteracja: powtarzanie działań................................................................................................................66Pętle while......................................................................................................................................67Pętle for..........................................................................................................................................68Pętle do..while................................................................................................................................69

    Wyłamywanie się ze struktury skryptu ................................................................................................70W następnym rozdziale: zapisywanie zamówienia klienta ..................................................................70

    Rozdział 2. Przechowywanie i wyszukiwanie danych .............................................71

    Zapisywanie danych do późniejszego użycia ......................................................................................72Przechowywanie i wyszukiwanie zamówień Janka.............................................................................72Podstawowe informacje na temat przetwarzania plików .....................................................................73

  • Spis treści 7

    Otwieranie pliku...................................................................................................................................74Tryby otwarcia pliku......................................................................................................................74Stosowanie funkcji fopen() do otwarcia pliku ...............................................................................74Otwieranie pliku przez protokół FTP lub HTTP ...........................................................................76Problemy z otwieraniem plików ....................................................................................................76

    Zapisywanie danych w pliku................................................................................................................78Parametry funkcji fwrite() .............................................................................................................79Formaty plików..............................................................................................................................79

    Zamykanie pliku...................................................................................................................................80Odczyt z pliku ......................................................................................................................................80

    Otwieranie pliku w celu odczytu — fopen() .................................................................................81Wiedzieć, kiedy przestać — feof() ................................................................................................81Odczytywanie pliku linia po linii — fgets(), fgetss() i fgetcsv()...................................................82Odczyt całego pliku — readfile(), fpassthru(), file() .....................................................................83Odczyt pojedynczego znaku — fgetc() .........................................................................................84Odczytywanie zadanej długości — fread()....................................................................................84

    Inne przydatne funkcje plikowe ...........................................................................................................84Sprawdzanie istnienia pliku — file_exists() ..................................................................................85Określanie wielkości pliku — filesize() ........................................................................................85Kasowanie pliku — unlink()..........................................................................................................85Poruszanie się wewnątrz pliku — rewind(), fseek() i ftell()..........................................................85

    Blokowanie pliku .................................................................................................................................86Lepszy sposób obróbki danych — systemy zarządzania bazami danych ............................................87

    Problemy związane ze stosowaniem plików jednorodnych ..........................................................88Jak RDBMS rozwiązują powyższe problemy?..............................................................................88

    Propozycje dalszych lektur ..................................................................................................................89W następnym rozdziale ........................................................................................................................89

    Rozdział 3. Stosowanie tablic ..............................................................................91

    Czym są tablice? ..................................................................................................................................92Tablice indeksowane numerycznie ......................................................................................................92

    Inicjowanie tablic indeksowanych numerycznie ...........................................................................92Dostęp do zawartości tablicy .........................................................................................................93Dostęp do tablic przy zastosowaniu pętli ......................................................................................94

    Tablice asocjacyjne ..............................................................................................................................94Inicjowanie tablicy asocjacyjnej ....................................................................................................94Dostęp do elementów tablicy.........................................................................................................95Stosowanie pętli z funkcjami each() i list() ...................................................................................95

    Tablice wielowymiarowe .....................................................................................................................97Sortowanie tablic................................................................................................................................100

    Stosowanie funkcji sort() .............................................................................................................100Stosowanie funkcji asort() i ksort() do porządkowania tablic asocjacyjnych..............................101Sortowanie odwrotne ...................................................................................................................101

    Sortowanie tablic wielowymiarowych...............................................................................................102Typy sortowań definiowane przez użytkownika .........................................................................102Odwrotne sortowanie zdefiniowane przez użytkownika ...............................................................104

    Zmiany kolejności elementów w tablicach..........................................................................................104Stosowanie funkcji shuffle() ........................................................................................................104Stosowanie funkcji array_reverse() .............................................................................................105

    Ładowanie tablic z plików .................................................................................................................106

  • 8 PHP i MySQL. Tworzenie stron WWW

    Inne działania na tablicach .................................................................................................................109Poruszanie 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().................110Liczenie elementów tablicy: count(), sizeof() i array_count_values() ........................................111Konwersja tablic na zmienne skalarne — funkcja extract() ........................................................112

    Propozycje dalszych lektur ................................................................................................................113W następnym rozdziale ......................................................................................................................113

    Rozdział 4. Manipulowanie ciągami i wyrażenia regularne...................................115

    Przykładowa aplikacja — Inteligentny Formularz Pocztowy............................................................115Formatowanie ciągów ........................................................................................................................117

    Przycinanie ciągów — funkcje chop(), ltrim() i trim()................................................................118Formatowanie ciągów w celu ich prezentacji..............................................................................118Formatowanie ciągów do przechowania — funkcje AddSlashes() i StripSlashes() ...................121

    Łączenie i rozdzielanie ciągów za pomocą funkcji ciągów ...............................................................123Stosowanie funkcji explode(), implode() i join().........................................................................123Stosowanie funkcji strtok() ..........................................................................................................124Stosowanie funkcji substr() .........................................................................................................125

    Porównywanie ciągów .......................................................................................................................125Porządkowanie ciągów — funkcje strcmp(), strcasecmp() i strnatcmp()....................................126Sprawdzanie długości ciągu za pomocą funkcji strlen() .............................................................126

    Dopasowywanie i zamiana podciągów za pomocą funkcji ciągów...................................................127Znajdowanie ciągów w ciągach — funkcje strstr(), strchr(), strrchr() i stristr()..........................127Odnajdywanie pozycji podciągu — funkcje strpos() i strrpos()..................................................128Zamiana podciągów — funkcje str_replace() i substr_replace().................................................129

    Wprowadzenie do wyrażeń regularnych............................................................................................130Podstawy......................................................................................................................................130Zbiory i klasy znaków..................................................................................................................131Powtarzalność ..............................................................................................................................132Podwyrażenia...............................................................................................................................132Podwyrażenia policzalne .............................................................................................................133Kotwiczenie na początku lub na końcu ciągu..............................................................................133Rozgałęzianie...............................................................................................................................133Dopasowywanie specjalnych znaków literowych .......................................................................134Podsumowanie znaków specjalnych............................................................................................134Umieszczanie wszystkiego razem (Inteligentny Formularz).......................................................134

    Odnajdywanie podciągów za pomocą wyrażeń regularnych .............................................................135Zamiana podciągów za pomocą wyrażeń regularnych ......................................................................136Rozdzielanie ciągów przy pomocy wyrażeń regularnych..................................................................136Porównanie funkcji ciągów i funkcji wyrażeń regularnych...............................................................137Propozycje dalszych lektur ................................................................................................................137W następnym rozdziale ......................................................................................................................137

    Rozdział 5. Ponowne wykorzystanie kodu i tworzenie funkcji ..............................139

    Dlaczego ponownie stosować kod? ...................................................................................................140Koszt ............................................................................................................................................140Niezawodność..............................................................................................................................140Spójność.......................................................................................................................................140

    Stosowanie funkcji require() i include() ..............................................................................................141Stosowanie funkcji require()........................................................................................................141Rozszerzenia plików i require() ...................................................................................................142Znaczniki PHP i require() ............................................................................................................142

  • Spis treści 9

    Stosowanie require() w szablonach stron WWW ..............................................................................143Stosowanie opcji auto_prepend_file i auto_append_file..................................................................147Stosowanie funkcji include() .......................................................................................................148

    Stosowanie funkcji w PHP.................................................................................................................149Wywoływanie funkcji..................................................................................................................150Wywołanie niezdefiniowanej funkcji ..........................................................................................151Wielkość liter a nazwy funkcji ....................................................................................................152

    Dlaczego powinno się definiować własne funkcje?...........................................................................152Podstawowa struktura funkcji ............................................................................................................153

    Nadawanie nazwy funkcji............................................................................................................154Parametry ...........................................................................................................................................154Zasięg .................................................................................................................................................156Przekazanie przez referencję czy przekazanie przez wartość ............................................................158Powrót z funkcji .................................................................................................................................160Zwracanie wartości przez funkcje......................................................................................................161

    Bloki kodu....................................................................................................................................162Rekurencja..........................................................................................................................................163Propozycje dalszych lektur ................................................................................................................165W następnym rozdziale ......................................................................................................................165

    Rozdział 6. Obiektowy PHP................................................................................167

    Koncepcje programowania obiektowego...........................................................................................167Klasy i obiekty .............................................................................................................................167Polimorfizm .................................................................................................................................169Dziedziczenie...............................................................................................................................169

    Tworzenie klas, atrybutów i operacji w PHP.........................................................................................170Struktura klasy .............................................................................................................................170Konstruktory ................................................................................................................................170

    Tworzenie egzemplarzy .....................................................................................................................171Stosowanie atrybutów klasy...............................................................................................................172Wywoływanie operacji klas ...............................................................................................................173Implementacja dziedziczenia w PHP.................................................................................................174

    Unieważnianie .............................................................................................................................175Wielodziedziczenie ......................................................................................................................176

    Tworzenie klas ...................................................................................................................................177Tworzenie kodu dla własnej klasy .....................................................................................................178W następnej części .............................................................................................................................186

    Część II Stosowanie MySQL .........................................................187

    Rozdział 7. Projektowanie internetowej bazy danych ..........................................189

    Koncepcje relacyjnych baz danych....................................................................................................190Tabele...........................................................................................................................................190Kolumny ......................................................................................................................................190Wiersze ........................................................................................................................................191Wartości .......................................................................................................................................191Klucze ..........................................................................................................................................191Schematy......................................................................................................................................192Relacje .........................................................................................................................................192

  • 10 PHP i MySQL. Tworzenie stron WWW

    Jak zaprojektować internetową bazę danych .....................................................................................193Określ obiekty świata realnego, których model chcesz wykonać ...............................................193Unikaj przechowywania redundantnych danych .........................................................................194Zapisuj atomowe wartości kolumn ..............................................................................................195Dobierz właściwe klucze .............................................................................................................196Pomyśl o zapytaniach, które zadasz bazie ...................................................................................197Unikaj tworzenia tabel z wieloma pustymi polami .....................................................................197Typy tabel — podsumowanie ......................................................................................................197

    Architektura internetowej bazy danych .............................................................................................198Architektura .................................................................................................................................198

    Propozycje dalszych lektur ................................................................................................................199W następnym rozdziale ......................................................................................................................199

    Rozdział 8. Tworzenie internetowej bazy danych.................................................201

    Uwagi na temat użytkowania monitora MySQL ...............................................................................202Jak zalogować się do serwera MySQL ..............................................................................................203Tworzenie baz i rejestrowanie użytkowników...................................................................................205

    Tworzenie bazy danych ...............................................................................................................205Użytkownicy i przywileje ..................................................................................................................205Wprowadzenie do systemu przywilejów MySQL .............................................................................206

    Zasada najmniejszego przywileju ................................................................................................206Rejestrowanie użytkowników: polecenie GRANT......................................................................206Typy i poziomy przywilejów.......................................................................................................208Polecenie REVOKE.....................................................................................................................210Przykłady użycia poleceń GRANT i REVOKE ..........................................................................210

    Rejestrowanie użytkownika łączącego się z Internetu.......................................................................211Wylogowanie się użytkownika root ............................................................................................212

    Używanie odpowiedniej bazy danych................................................................................................212Tworzenie tabel bazy danych.............................................................................................................212

    Znaczenie dodatkowych atrybutów kolumn ................................................................................214Typy kolumn................................................................................................................................215Rzut oka na bazę danych — polecenia SHOW i DESCRIBE.....................................................217

    Identyfikatory MySQL.......................................................................................................................218Typy danych w kolumnach ................................................................................................................219

    Typy liczbowe..............................................................................................................................219Propozycje dalszych lektur ................................................................................................................223W następnym rozdziale ......................................................................................................................223

    Rozdział 9. Praca z bazą danych MySQL ..............................................................225

    Czym jest SQL? .................................................................................................................................225Zapisywanie danych do bazy .............................................................................................................226Wyszukiwanie danych w bazie ..........................................................................................................228

    Wyszukiwanie danych spełniających określone kryteria...............................................................229Wyszukiwanie danych w wielu tabelach .....................................................................................230Szeregowanie danych w określonym porządku...........................................................................236Grupowanie i agregowanie danych..............................................................................................237Wskazanie wierszy, które mają być wyświetlone .......................................................................239

    Dokonywanie zmian rekordów w bazie danych ................................................................................240Zmiana struktury istniejących tabel ...................................................................................................241Usuwanie rekordów z bazy danych....................................................................................................242

  • Spis treści 11

    Usuwanie tabel ...................................................................................................................................242Usuwanie całych baz danych .............................................................................................................243Propozycje dalszych lektur ................................................................................................................243W następnym rozdziale ......................................................................................................................243

    Rozdział 10. Łączenie si3 z bazą MySQL za pomocą PHP .....................................245

    Jak działa internetowa baza danych ...................................................................................................246Etapy wysyłania zapytań do bazy danych z poziomu strony WWW...................................................248Sprawdzenie poprawności wpisanych danych ...................................................................................249Ustanawianie połączenia z bazą danych..............................................................................................250Wybór właściwej bazy danych...........................................................................................................252Wysyłanie zapytań do bazy danych ...................................................................................................252Odczytywanie rezultatów zapytań .....................................................................................................253Zamykanie połączenia z bazą danych ................................................................................................255Wstawianie nowych danych do bazy .................................................................................................255Inne użyteczne funkcje PHP i MySQL ..............................................................................................258

    Zwalnianie zasobów ....................................................................................................................258Tworzenie i usuwanie baz danych ...............................................................................................259

    Inne interfejsy bazodanowe PHP .......................................................................................................259Propozycje dalszych lektur ................................................................................................................259W następnym rozdziale ......................................................................................................................260

    Rozdział 11. MySQL dla zaawansowanych..........................................................261

    Szczegóły systemu przywilejów ........................................................................................................261Tabela user ...................................................................................................................................262Tabele db i host............................................................................................................................263Tabele tables_priv i columns_priv...............................................................................................264Kontrola dostępu: w jaki sposób MySQL używa tabel przywilejów ..........................................265Zmiana przywilejów: kiedy zmiany zostaną uwzględnione? ......................................................266

    Ochrona bazy danych.........................................................................................................................266MySQL z perspektywy systemu operacyjnego ...........................................................................267Hasła ............................................................................................................................................267Przywileje użytkowników............................................................................................................268MySQL i Internet.........................................................................................................................269

    Uzyskiwanie szczegółowych informacji o bazie danych...................................................................269Uzyskiwanie informacji poleceniem SHOW...............................................................................270Uzyskiwanie informacji o kolumnach za pomocą polecenia DESCRIBE ..................................271Jak wykonywane są zapytania: polecenie EXPLAIN..................................................................272

    Przyspieszanie wykonania zapytań za pomocą indeksów .................................................................275Wskazówki dotyczące optymalizacji .................................................................................................276

    Optymalizacja projektu bazy danych...........................................................................................276Przywileje ....................................................................................................................................276Optymalizacja tabel .....................................................................................................................276Stosowanie indeksów...................................................................................................................277Używanie wartości domyślnych ..................................................................................................277Używanie stałych połączeń z bazą...............................................................................................277Więcej wskazówek ......................................................................................................................277

    Różne typy tabel.................................................................................................................................277Ładowanie danych z pliku .................................................................................................................278Propozycje dalszych lektur ................................................................................................................278W następnej części .............................................................................................................................279

  • 12 PHP i MySQL. Tworzenie stron WWW

    Część III Handel elektroniczny i bezpieczeństwo ...........................281

    Rozdział 12. Komercyjne witryny internetowe.....................................................283

    Co chcemy osiągnąć?.........................................................................................................................283Rodzaje komercyjnych stron WWW .................................................................................................284

    Broszury internetowe...................................................................................................................284Przyjmowanie zamówień na produkty i usługi............................................................................287Dostarczanie usług lub wyrobów mających postać cyfrową .......................................................291Zwiększanie wartości produktów i usług.....................................................................................292Ograniczanie kosztów..................................................................................................................293

    Ryzyko i zagrożenia...........................................................................................................................293Crackerzy .....................................................................................................................................294Przyciągnięcie niewystarczającej liczby klientów.......................................................................294Awarie sprzętu komputerowego ..................................................................................................295Awarie sieci elektrycznych, komunikacyjnych i komputerowychoraz systemu wysyłkowego ......................................................................................................295

    Silna konkurencja ........................................................................................................................295Błędy w oprogramowaniu............................................................................................................296Zmiany polityki rządowej ............................................................................................................296Ograniczenie pojemności systemów............................................................................................296

    Wybór strategii...................................................................................................................................297W następnym rozdziale ......................................................................................................................297

    Rozdział 13. Bezpiecze6stwo komercyjnych stron WWW ....................................299

    Jaką wagę mają posiadane przez nas informacje? .............................................................................300Zagrożenia bezpieczeństwa................................................................................................................300

    Ujawnienie informacji poufnych .................................................................................................301Utrata lub zniszczenie danych .....................................................................................................303Modyfikacje danych ....................................................................................................................304Blokada usługi .............................................................................................................................305Błędy w oprogramowaniu............................................................................................................306Zaprzeczenie korzystania z usługi ...............................................................................................307

    Równoważenie użyteczności, wydajności, kosztów i bezpieczeństwa..............................................308Opracowanie polityki bezpieczeństwa...............................................................................................309Zasady uwierzytelniania.....................................................................................................................309Wykorzystanie mechanizmu uwierzytelniania ..................................................................................311Podstawy szyfrowania........................................................................................................................311Szyfrowanie z kluczem prywatnym...................................................................................................313Szyfrowanie z kluczem publicznym ..................................................................................................313Podpis cyfrowy...................................................................................................................................314Certyfikaty cyfrowe ...........................................................................................................................315Bezpieczne serwery WWW ...............................................................................................................317Monitorowanie i zapisywanie zdarzeń...............................................................................................318Zapory sieciowe .................................................................................................................................319Tworzenie kopii zapasowych.............................................................................................................319

    Tworzenie kopii zapasowych zwykłych plików..........................................................................320Tworzenie kopii zapasowych i odzyskiwanie baz danych MySQL ............................................320

    Bezpieczeństwo fizyczne ...................................................................................................................321W następnym rozdziale ......................................................................................................................322

  • Spis treści 13

    Rozdział 14. Uwierzytelnianie przy użyciu PHP i MySQL ......................................323

    Identyfikacja użytkowników..............................................................................................................323Implementacja kontroli dostępu.........................................................................................................324

    Przechowywanie haseł dostępu ...................................................................................................327Szyfrowanie haseł ........................................................................................................................329Zastrzeganie więcej niż jednej strony..........................................................................................331

    Podstawowa metoda uwierzytelniania ...............................................................................................332Wykorzystanie podstawowej metody uwierzytelniania w PHP.........................................................333Wykorzystanie podstawowej metody uwierzytelniania na serwerze Apacheprzy użyciu plików .htaccess ..........................................................................................................335

    Wykorzystanie podstawowej metody uwierzytelniania na serwerze IIS...........................................339Wykorzystanie modułu mod_auth_mysql do celów uwierzytelniania ..............................................341

    Instalacja modułu mod_auth_mysql ............................................................................................342Zadziałało?...................................................................................................................................342Praca z mod_auth_mysql .............................................................................................................343

    Implementacja własnej metody uwierzytelniania ..............................................................................344Propozycje dalszych lektur ................................................................................................................344W następnym rozdziale ......................................................................................................................344

    Rozdział 15. Zabezpieczanie transakcji przy użyciu PHP i MySQL........................345

    Zapewnienie bezpieczeństwa transakcji................................................................................................345Komputer użytkownika................................................................................................................346Internet .........................................................................................................................................348System docelowy .........................................................................................................................349

    Wykorzystanie protokołu Secure Sockets Layer (SSL).....................................................................350Kontrola danych pochodzących od użytkownika ..............................................................................353Bezpieczne przechowywanie danych.................................................................................................354Cel przechowywania numerów kart kredytowych.............................................................................356Szyfrowanie danych w PHP...............................................................................................................356Propozycje dalszych lektur ................................................................................................................365W 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 .................................................................................................369Kod HTML służący do wysyłania plików...................................................................................370Tworzenie obsługującego plik PHP.............................................................................................371Popularne problemy.....................................................................................................................374

    Stosowanie funkcji katalogowych......................................................................................................375Odczyt z katalogów .....................................................................................................................375Otrzymywanie informacji na temat aktualnego katalogu.................................................................377Tworzenie i usuwanie katalogów ................................................................................................377

    Interakcja z systemem plików............................................................................................................378Otrzymywanie informacji o pliku................................................................................................378Zmiana właściwości pliku ...........................................................................................................380Tworzenie, usuwanie i przenoszenie plików ...............................................................................381

    Stosowanie funkcji uruchamiających programy ................................................................................382Interakcja ze środowiskiem: funkcje getenv() i putenv()...................................................................384Propozycje dalszych lektur ................................................................................................................384W następnym rozdziale ......................................................................................................................384

  • 14 PHP i MySQL. Tworzenie stron WWW

    Rozdział 17. Stosowanie funkcji sieci i protokołu ...............................................385

    Przegląd protokołów ..........................................................................................................................385Wysyłanie i odczytywanie poczty elektronicznej ..............................................................................386Korzystanie z innych usług WWW....................................................................................................387Stosowanie funkcji połączeń sieciowych ..............................................................................................389Korzystanie z FTP..............................................................................................................................393

    Stosowanie FTP w celu utworzenia kopii bezpieczeństwa lub kopii lustrzanej pliku ................393Wysyłanie plików ........................................................................................................................399Unikanie przekroczenia dopuszczalnego czasu ...........................................................................400Stosowanie innych funkcji FTP...................................................................................................400

    Stosowanie ogólnej komunikacji sieciowej za pomocą cURL ..........................................................401Propozycje dalszych lektur ................................................................................................................403W następnym rozdziale ......................................................................................................................404

    Rozdział 18. Zarządzanie datą i czasem.............................................................405

    Uzyskiwanie informacji o dacie i czasie w PHP................................................................................405Stosowanie funkcji date() ............................................................................................................405Obsługa znaczników czasu Uniksa..............................................................................................407Stosowanie funkcji getdate() .......................................................................................................408Sprawdzanie poprawności dat .....................................................................................................408

    Konwersja pomiędzy formatami daty PHP i MySQL........................................................................409Obliczanie dat.....................................................................................................................................410Stosowanie funkcji kalendarzowych..................................................................................................411Propozycje dalszych lektur ................................................................................................................412W następnym rozdziale ......................................................................................................................412

    Rozdział 19. Generowanie obrazków ..................................................................413

    Konfigurowanie obsługi obrazków w PHP...........................................................................................413Formaty obrazków .............................................................................................................................414

    JPEG ............................................................................................................................................414PNG .............................................................................................................................................414WBMP .........................................................................................................................................415GIF ...............................................................................................................................................415

    Tworzenie obrazków..........................................................................................................................416Tworzenie kadru obrazka.............................................................................................................417Rysowanie lub umieszczanie tekstu w obrazku...........................................................................417Wyświetlanie ostatecznej grafiki .................................................................................................419Końcowe czynności porządkujące...............................................................................................420

    Stosowanie automatycznie generowanych obrazków na innych stronach.........................................421Stosowanie tekstu i czcionek do tworzenia obrazków.......................................................................422

    Konfiguracja podstawowego kadru .............................................................................................425Dopasowanie tekstu do przycisku................................................................................................425Nadawanie tekstowi odpowiedniej pozycji .................................................................................428Wpisywanie tekstu do przycisku .................................................................................................428Etap końcowy ..............................................................................................................................429

    Rysowanie figur i wykresów danych .................................................................................................429Inne funkcje obrazków.......................................................................................................................436Propozycje dalszych lektur ................................................................................................................437W następnym rozdziale ......................................................................................................................437

  • Spis treści 15

    Rozdział 20. Stosowanie kontroli sesji w PHP ....................................................439

    Czym jest kontrola sesji? ...................................................................................................................439Podstawowa zasada działania sesji ....................................................................................................440

    Czym jest cookie? ........................................................................................................................440Konfiguracja cookies w PHP.......................................................................................................441Stosowanie cookies w sesji..........................................................................................................441Przechowywanie identyfikatora sesji...........................................................................................442

    Implementacja prostych sesji .............................................................................................................442Rozpoczynanie sesji.....................................................................................................................442Zgłaszanie zmiennych sesji .........................................................................................................443Stosowanie zmiennych sesji ........................................................................................................443Usuwanie zmiennych i niszczenie sesji .......................................................................................444

    Przykład prostej sesji..........................................................................................................................444Konfiguracja kontroli sesji .................................................................................................................446Implementacja uwierzytelniania w kontroli sesji...............................................................................447Propozycje dalszych lektur ................................................................................................................453W następnym rozdziale ......................................................................................................................453

    Rozdział 21. Inne przydatne własno

  • 16 PHP i MySQL. Tworzenie stron WWW

    Testowanie .........................................................................................................................................480Propozycje dalszych lektur ................................................................................................................481W następnym rozdziale ......................................................................................................................481

    Rozdział 23. Usuwanie bł3dów...........................................................................483Błędy programistyczne.......................................................................................................................483

    Błędy składni ...............................................................................................................................484Błędy wykonania .........................................................................................................................485Błędy logiczne .............................................................................................................................491

    Pomoc w usuwaniu błędów w zmiennych...........................................................................................492Poziomy zgłaszania błędów ...............................................................................................................494Zmiana ustawień zgłaszania błędów..................................................................................................495Wyzwalanie własnych błędów...........................................................................................................497Elegancka obsługa błędów.................................................................................................................497Zdalne usuwanie błędów....................................................................................................................499W następnym rozdziale ......................................................................................................................500

    Rozdział 24. Tworzenie uwierzytelniania użytkowników i personalizacji .................501Problem ..............................................................................................................................................502Składniki rozwiązania ........................................................................................................................502

    Identyfikacja użytkownika i personalizacja.................................................................................502Przechowywanie zakładek...........................................................................................................503Rekomendowanie zakładek .........................................................................................................503

    Przegląd rozwiązania .........................................................................................................................504Implementacja bazy danych...............................................................................................................505Implementacja podstawowej witryny ................................................................................................507Implementacja uwierzytelniania użytkowników................................................................................509

    Rejestracja....................................................................................................................................509Logowanie ...................................................................................................................................515Wylogowanie ...............................................................................................................................519Zmiana hasła ................................................................................................................................519Ustawianie zapomnianych haseł ..................................................................................................522

    Implementacja przechowywania i odczytywania zakładek ...............................................................525Dodawanie zakładek ....................................................................................................................526Wyświetlanie zakładek ................................................................................................................528Usuwanie zakładek ......................................................................................................................529

    Implementacja rekomendacji .............................................................................................................531Rozwijanie projektu i możliwe rozszerzenia .....................................................................................535W następnym rozdziale ......................................................................................................................535

    Rozdział 25. Tworzenie koszyka na zakupy.........................................................537Problem ..............................................................................................................................................537Składniki rozwiązania ........................................................................................................................538

    Tworzenie katalogu online...........................................................................................................538Śledzenie zakupów użytkownika podczas przeglądania..................................................................538Płatność........................................................................................................................................539Interfejs administratora ................................................................................................................539

    Przegląd rozwiązania .........................................................................................................................539Implementacja bazy danych...............................................................................................................543Implementacja katalogu online ..........................................................................................................545

    Przedstawianie kategorii ..............................................................................................................547Wyświetlanie książek danej kategorii..........................................................................................549Przedstawianie szczegółowych danych książki ...........................................................................551

  • Spis treści 17

    Implementacja koszyka na zakupy.....................................................................................................552Stosowanie skryptu pokaz_kosz.php ...........................................................................................552Podgląd koszyka ..........................................................................................................................555Dodawanie produktów do koszyka..............................................................................................557Zapisywanie uaktualnionego koszyka .........................................................................................559Wyświetlanie podsumowania w pasku nagłówka .......................................................................560Pobyt w kasie ...............................................................................................................................560

    Implementacja płatności.....................................................................................................................565Implementacja interfejsu administratora ...............................................................................................568Rozwijanie projektu ...........................................................................................................................575Zastosowanie istniejącego systemu....................................................................................................575W następnym rozdziale ......................................................................................................................576

    Rozdział 26. Tworzenie systemu zarządzania zawarto

  • 18 PHP i MySQL. Tworzenie stron WWW

    Wysyłanie wiadomości ......................................................................................................................633Wysyłanie nowej wiadomości .....................................................................................................634Odpowiadanie i przekazywanie poczty .......................................................................................635

    Rozwijanie projektu ...........................................................................................................................637W następnym rozdziale ......................................................................................................................637

    Rozdział 28. Tworzenie menedżera list pocztowych ............................................639

    Problem ..............................................................................................................................................639Składniki rozwiązania ........................................................................................................................640

    Konfiguracja bazy danych list i abonentów.................................................................................640Wysyłanie plików...............................................................................................................................641Wysyłanie wiadomości z załącznikami .............................................................................................641Przegląd rozwiązania .........................................................................................................................641Konfiguracja bazy danych..................................................................................................................643Architektura skryptu...........................................................................................................................645Implementacja logowania ..................................................................................................................653

    Tworzenie nowego konta.............................................................................................................653Logowanie ...................................................................................................................................656

    Implementacja funkcji użytkownika ..................................................................................................658Przeglądanie list ...........................................................................................................................659Przeglądanie informacji na temat listy.........................................................................................663Przeglądanie archiwum listy ........................................................................................................665Zapisywanie i wypisywanie.........................................................................................................666Zmiana konfiguracji konta...........................................................................................................667Zmiana hasła ................................................................................................................................668Wylogowanie ...............................................................................................................................669

    Implementacja funkcji administratora................................................................................................670Tworzenie nowej listy..................................................................................................................670Wysyłanie nowych wiadomości ..................................................................................................672Obsługa wysyłania wielu plików.................................................................................................675Podgląd wiadomości ....................................................................................................................679Rozsyłanie wiadomości ...............................................................................................................680

    Rozwijanie projektu ...........................................................................................................................684W następnym rozdziale ......................................................................................................................685

    Rozdział 29. Tworzenie forum WWW ..................................................................687

    Problem ..............................................................................................................................................687Składniki rozwiązania ........................................................................................................................688Przegląd rozwiązania .........................................................................................................................690Projektowanie bazy danych................................................................................................................690Przeglądanie drzewa artykułów .........................................................................................................693

    Rozwijanie i zwijanie...................................................................................................................696Wyświetlanie artykułów ..............................................................................................................698Korzystanie z klasy wezel_drzewa ..............................................................................................699

    Przeglądanie pojedynczych artykułów...............................................................................................705Dodawanie nowych artykułów...........................................................................................................708Rozszerzenia ......................................................................................................................................714Wykorzystanie istniejącego systemu .................................................................................................714W następnym rozdziale ......................................................................................................................715

  • Spis treści 19

    Rozdział 30. Tworzenie dokumentów spersonalizowanych w formacie PDF ..........717

    Problem ..............................................................................................................................................717Ocena formatów dokumentów ...........................................................................................................718

    Papier ...........................................................................................................................................718ASCII ...........................................................................................................................................719HTML ..........................................................................................................................................719Formaty edytorów tekstu .............................................................................................................719Format RTF..................................................................................................................................720PostScript .....................................................................................................................................721Format PDF..................................................................................................................................722

    Składniki rozwiązania ........................................................................................................................723System pytań i odpowiedzi ..........................................................................................................723Oprogramowanie generujące dokumenty ....................................................................................723

    Przegląd rozwiązania .........................................................................................................................726Zadawanie pytań ..........................................................................................................................727Ocena odpowiedzi........................................................................................................................728Tworzenie certyfikatu RTF..........................................................................................................731Tworzenie certyfikatu PDF z szablonu........................................................................................734Generowanie dokumentu PDF za pomocą PDFlib ......................................................................737Skrypt „Witaj świecie” dla PDFlib ..............................................................................................737Tworzenie certyfikatu za pomocą PDFlib ...................................................................................741

    Problemy związane z nagłówkami.....................................................................................................748Rozwijanie projektu ...........................................................................................................................749Propozycje dalszych lektur ................................................................................................................749

    Dodatki .......................................................................................751

    Dodatek A Instalacja PHP4 i MySQL..................................................................753

    Uruchamianie PHP jako CGI lub moduł serwera ..............................................................................753Instalacja Apache, PHP i MySQL w systemie UNIX........................................................................755

    Apache i mod_SSL ......................................................................................................................758Plik httpd.conf — informacje końcowe.......................................................................................761Czy obsługa PHP działa poprawnie? ...........................................................................................762Czy SSL działa poprawnie? .........................................................................................................762

    Instalacja Apache, PHP i MySQL w systemie Windows ..................................................................764Instalacja MySQL w systemie Windows.....................................................................................764Instalacja serwera Apache w systemie Windows ........................................................................766Różnice między serwerem Apache dla systemu UNIX i Windows ............................................769Instalacja PHP w systemie Windows...........................................................................................770Instalacja na serwerze Microsoft IIS .........................................