SlideShare ist ein Scribd-Unternehmen logo
1 von 608
Downloaden Sie, um offline zu lesen
PUP 4. Biblia to rzetelnie opracowany podręcznik zawierający analizy konkretnych problemów. Ułatwi on
zapoznanie się z najnowszą wersjąjęzyka umożliwiającego tworzenie skryptów dołączanych do stron HTML.
Książka jest przeznaczona dla każdego, kto chce tworzyć witryny WWW, bardziej złożone, niż pozwala
HTML. Mamy szczególnie na myśli trzy grupy:
* projektantów stron WWW. którzy znają HTML i chcą rozpocząć tworzenie dynamicznych witryn WWW;
* zaawansowanych programistów (C, Java, Perl itp.), ale bez doświadczenia w projektowaniu dla WWW,
którzy chcą szybko nabrać biegłości w programowaniu dla serwerów WWW;
* programistów WWW, którzy używali innych technik programowania (np.: Active Server Pages, Java
Server Pages, Cold Fusion) i chcą zmienić lub po prostu poznać inne narzędzie.
Tytuł oryginału: PHP 4. Bibie
Tłumaczenie: Paweł Oonera
ISBN: 83-7197-391-8
Original English language edition Copyright © 2000 by IDG Books Worldwide, Inc.
All rights reserved including the right of reproduction in whole or in part of any form. This translation pu-
blished by arrangement with IDG Books Worldwide, Inc.
The IDG Books Worldwide logo is a trademark or registred trademark in the United States and/or other co-
untries under exclusive to license to IDG Books Worldwide, Inc., from International Data Group, Inc. The
Bible series trade dress is a trademark of IDG Books Worldwide, Inc. in the United States and/or other coun-
tries. Used by permission.
Polish language edition published by Wydawnictwo Helion.
Copyright ©2001
Wydawnictwo HELION
ul. Chopina 6, 44-100 GLIWICE
tel. (32) 231-22-19, (32) 230-98-63
e-mail: helion@helion.pl
WWW: http://helion.pl (księgarnia internetowa, katalog książek)
Drogi Czytelniku!
Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres
http://helion.pl/user/opinie7php4bi
Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję.
Plik z przykładami do książki znajduje się pod adresem
ftp://ftp.helion.pl/przyklady/php4bi.zip
Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właści-
cieli.
Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje były
kompletne i rzetelne. Nie biorąjednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane
z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Wydawnictwo HELION nie po-
noszą również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawar-
tych w książce.
Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji
w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzna, fotograficzną, a także
kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje naruszenie praw autorskich
niniejszej publikacji.
Printed in Poland.
Druk: INTERDRUK - Łódź, tel. 682-18-56
Książka tajest dedykowana naszym rodzicom:
Za ich milość,
za poświęcenie
i za to, żepozwolili nam w dzieciństwie dużo czytać.
Podziękowania
Projekt tej książki powstał w trakcie rozmów z Debrą Williams Cauley, która jest re-
daktorem w wydawnictwie IDG Books. Prowadziła cały projekt, znajdowała dodatko-
wych współpracowników oraz izolowała naiwnych początkujących autorów od twardej
rzeczywistości przemysłu wydawniczego. Susan Christopherson pracowała jako redak-
tor projektu, zanim przekazała pałeczkę Barb Guerra, która z kolei przekształciła nasze
chaotyczne notatki w rękopis. Bob Campbell przepisał go z niesłychaną szybkością.
Richard Lynch był naszym recenzentem technicznym. Powstrzymał nas od napisania
wielu rzeczy, które nie są prawdziwe, dał nam wiele dobrych rad, w jaki sposób ulep-
szyć wskazówki i przykłady. Pomógł nam napisać dużo lepszą książkę. Jednak nie jego
należy winić za błędy i braki, które jeszcze pozostały.
Nie stworzyliśmy tej książki sami. Dustin Mitchell napisał rozdział o bezpieczeństwie
i szyfrowaniu, Patrick McCuller jest autorem pierwszego szkicu rozdziałów o XML
i OOP. Ariel Garcia współpracowała w trakcie powstawania pierwszych projektów roz-
działów na temat PHP i JavaScript. Współpracownicy Joyce w firmie Epinions (szcze-
gólnie Lou Montuli i Jay Ashton) również zasługują na wdzięczność za współpracę
przy tworzeniu przykładów kodu oraz za wskazówki, jak używać PHP w silnie obcią-
żonym środowisku.
Szczególne podziękowania należą się twórcom PHP (a to: Rasmus Lerdorf, Zeev Sura-
ski, Andi Gutmans, Thies Arntzen, Stig Bakken, Sasha Schumann, Andrei Zmievski
oraz wielu ich współpracowników) ludziom, którzy tworzyli dokumentację do PHP
(m.in. Stig Bakken, Alexander Aulbach, Egon Schmid, Lars Torben Wilson, Jim Win-
stead) oraz wszystkim z listy dyskusyjnej o PHP. Szczególnie dziękujemy Rasmusowi,
Sashay oraz Richardowi Lynchowi za odpowiedzi na liście dyskusyjnej.
Autorzy chcieliby móc podziękować za pomoc swoim małżonkom, ale niestety jest to
w tej chwili niemożliwe. :)
Rzut oka na książkę
OAutorach...............................................................................................................19
Przedmowa..............................................................................................................^!
Część l Podstawy PHP....................................................................27
Rozdział 1. Dlaczego PHP? ......................................................................................29
Rozdział 2. Skrypty wykonywane na serwerze WWW.................................................41
Rozdział 3. Rozpoczynamy pracę z PHP....................................................................55
Rozdział 4. Dodajemy PHP do HTML.........................................................................69
Rozdział 5. Składnia, zmienne i wyświetlanie............................................................75
Rozdział 6. Typy w PHP ...........................................................................................91
Rozdział 7. Sterowanie ..........................................................................................111
Rozdział 8. Użycie i definiowanie funkcji ................................................................133
Rozdział 9. Ciągi i funkcje operujące na ciągach ....................................................155
Rozdział 10. Matematyka........................................................................................177
Rozdział 11. Tablice i funkcje operujące na tablicach ...............................................199
Rozdział 12. Przekazywanie danych pomiędzy stronami ............................................225
Rozdział 13. Funkcje systemu operacyjnego i dostępu do plików ..............................235
Rozdział 14. Styl PHP..............................................................................................251
Rozdział 15. Podstawowe pułapki PHP.....................................................................277
Część II PHP i bazy danych ............................................................297
Rozdział 16. Wybór bazy danych dla PHP .................................................................299
Rozdział 17. Samouczek SQL...................................................................................311
Rozdział 18. Funkcje PHP i MySQL ..........................................................................325
Rozdział 19. Wyświetlanie zapytań w tabelach .........................................................337
6__________________________________________________PHP 4. Biblia
Rozdział 20. Tworzenie formularzy z zapytań.............................................................351
Rozdział 21. Dziennik sieciowy ................................................................................363
Rozdział 22. Sieciowe głosowanie............................................................................377
Rozdział 23. Styl i efektywność rozwiązań na podstawie PHP i bazy danych ..............389
Rozdział 24. Pułapki tandemu PHP-baza danych .......................................................399
Część III Techniki zaawansowane....................................................411
Rozdział 25. Sesje...................................................................................................413
Rozdział 26. Cookie i HTTP......................................................................................427
Rozdział 27. PHP i JavaScript ..................................................................................441
Rozdział 28. E-mail..................................................................................................455
Rozdział 29. PHP i XML...........................................................................................469
Rozdział 30. Programowanie obiektowe w PHP ........................................................493
Rozdział 31. Bezpieczeństwo i kryptografia ..............................................................515
Rozdział 32. Konfiguracja i dostrajanie.....................................................................535
Dodatki............................................................................................553
Dodatek A PHP dla programistów C ......................................................................555
Dodatek B PHP dla programistów ASP ..................................................................561
Dodatek C PHP dla programistów HTML................................................................571
Dodatek D Zasoby Sieci na temat PHP..................................................................579
Słownik..................................................................................................................587
Skorowidz...............................................................................................................597
Spis treści
OAutorach...............................................................................................................19
Przedmowa...............................................................................................................21
Część l Podstawy PHP....................................................................27
Rozdział 1. Dlaczego PHP? ......................................................................................29
Co to jest PHP?.......................................................................................................................29
Historia PHP......................................................... ................................................................. 30
Dlaczego kochamy PHP? ....................................................................................................... 31
PHP jest darmowy............................................................................................................ 31
PHP jest łatwy .................................................................................................................. 32
PHP można wbudować..................................................................................................... 33
PHP jest niezależny.......................................................................................................... 35
PHP nie bazuje na znacznikach........................................................................................ 35
PHP jest stabilny .............................................................................................................. 36
PHP jest szybki................................................................................................................. 36
PHP jest otwarty............................................................................................................... 37
PHP dobrze współpracuje z innymi produktami.............................................................. 38
Popularność PHP rośnie................................................................................................... 38
PHP nie jest niczyją własnością....................................................................................... 39
Społeczność PHP..............................................................................................................40
Podsumowanie........................................................................................................................ 40
Rozdział 2. Skrypty wykonywane na serwerze WWW.................................................41
Statyczny HTML.................................................................................................................... 41
Technologie wykonywane na kliencie.................................................................................... 44
Skrypty wykonywane na serwerze.......................................................................................... 47
Do czego są dobre skrypty serwera ........................................................................................ 51
Podsumowanie........................................................................................................................ 53
Rozdział 3. Rozpoczynamy pracę z PHP....................................................................55
Dzierżawa lub własny serwer................................................................................................. 55
Wariant z dostawcąInternetu........................................................................................... 55
Własny serwer: wady i zalety........................................................................................... 58
Rozwiązania pośrednie..................................................................................................... 59
Instalowanie PHP................................................................................................................... 59
Zanim zaczniesz............................................................................................................... 60
Procedura instalacji.......................................................................................................... 61
Narzędzia programistyczne.............................................................................................. 66
Podsumowanie........................................................................................................................ 67
8__________________________________________________PHP 4. Biblia
Rozdział 4. Dodajemy PHP do HTML.........................................................................69
HTML jest gotowy na PHP .................................................................................................... 69
Przełączanie się z HTML do PHP .......................................................................................... 70
Kanoniczne znaczniki PHP .............................................................................................. 70
Krótkie znaczniki otwierające (w stylu SGML)............................................................... 70
Witaj świecie.................................................................................................................... 71
Wejście i wyjście z trybu PHP ......................................................................................... 72
Dołączanie plików............................................................................................................ 73
Podsumowanie........................................................................................................................ 74
Rozdział 5. Składnia, zmienne i wyświetlanie............................................................75
PHP wiele wybacza................................................................................................................ 75
HTML to nie PHP...................................................................................................................76
Składnia PHP bazuje na C...................................................................................................... 76
PHP nie przejmuje się odstępami..................................................................................... 76
PHP jest czasami wrażliwy na wielkość liter ................................................................... 77
Instrukcje to wyrażenia zakończone średnikiem .............................................................. 77
Bloki................................................................................................................................. 80
Komentarze ............................................................................................................................ 80
Komentarze wielowierszowe w stylu C ........................................................................... 81
Komentarze jednowierszowe: # i //.................................................................................. 81
Zmienne.................................................................................................................................. 82
PHP skorzystał ze stylu zmiennych Perl........................................................................... 82
Deklarowanie zmiennych................................................................................................. 82
Przypisywanie zmiennym wartości.................................................................................. 82
Zmiana wartości zmiennych............................................................................................. 83
Nieprzypisane zmienne.................................................................................................... 83
Możesz dowolnie zmieniać tryby pracy ........................................................................... 85
Wyjście................................................................................................................................... 86
Echo i print....................................................................................................................... 86
Zmienne i ciągi................................................................................................................. 87
Podsumowanie........................................................................................................................88
Rozdział 6. Typy w PHP ...........................................................................................91
Pierwsza zasada: nie przejmuj się........................................................................................... 91
Brak deklaracji typów zmiennych.................................................................................... 91
Automatyczna konwersja typów ...................................................................................... 92
Typy w PHP ........................................................................................................................... 92
Typy proste............................................................................................................................. 93
Integer.............................................................................................................................. 93
Double..............................................................................................................................94
Boolean............................................................................................................................ 95
Przykłady.......................................................................................................................... 96
String................................................................................................................................ 97
Tablice.................................................................................................................................. 100
Implementacja tablic...................................................................................................... 101
Ciągi znaków jako indeksy tablicy................................................................................. 101
Czy w PHP sąstruktury?................................................................................................ 102
Inne własności tablic ...................................................................................................... 102
Obiekty................................................................................................................................. 102
Przegląd OOP................................................................................................................. 102
Jak bardzo obiektowyjest PHP? .................................................................................... 103
Definiowanie klas w PHP............................................................................................... 103
Tworzenie obiektów....................................................................................................... 104
Spis treści_________________________________________________ 9
Kontrola typów..................................................................................................................... 104
Przypisania i konwersje........................................................................................................ 105
Przepełnienie liczby całkowitej...................................................................................... 109
Szukamy największej liczby całkowitej......................................................................... 109
Podsumowanie...................................................................................................................... 110
Rozdział 7. Sterowanie ..........................................................................................111
Wyrażenia logiczne .............................................................................................................. 112
Stałe logiczne ................................................................................................................. 112
Operatory logiczne......................................................................................................... 112
Operatory porównania.................................................................................................... 114
Operator trójskładnikowy............................................................................................... 116
Instrukcje warunkowe........................................................................................................... 117
If-else ............................................................................................................................. 117
Switch............................................................................................................................. 120
Pętle...................................................................................................................................... 121
Pętle ograniczone i nieograniczone............................................................................... 122
While.............................................................................................................................. 122
Do-while......................................................................................................................... 123
For.................................................................................................................................. 123
Przykłady pętli................................................................................................................ 124
Break i continue ............................................................................................................. 126
Pętle nieskończone......................................................................................................... 128
Składnia alternatywna........................................................................................................... 129
Przerywanie wykonania........................................................................................................ 129
Podsumowanie...................................................................................................................... 130
Rozdział 8. Użycie i definiowanie funkcji ................................................................133
Użycie funkcji...................................................................................................................... 133
Zwracane wartości a efekty uboczne.............................................................................. 134
Dokumentacja funkcji........................................................................................................... 134
Nagłówki w dokumentacji.............................................................................................. 135
Szukanie opisu funkcji................................................................................................... 136
Definiowanie własnych funkcji............................................................................................ 136
Czym jest funkcja?......................................................................................................... 136
Składnia definicji funkcji............................................................................................... 137
Przykład definicji funkcji............................................................................................... 137
Parametry formalne i parametry aktualne....................................................................... 139
Nieprawidłowa liczba argumentów................................................................................ 139
Funkcje a zasięg zmiennych................................................................................................. 139
Zmienne globalne i lokalne ............................................................................................ 140
Zmienne statyczne.......................................................................................................... 141
Zasięg funkcji....................................................................................................................... 142
Include oraz require........................................................................................................ 142
Rekurencja...................................................................................................................... 143
Zagadnienia zaawansowane.................................................................................................. 144
Zmienna liczba argumentów .......................................................................................... 145
Wywołanie przez wartość a wywołanie przez referencję............................................... 148
Wywołanie przez referencję........................................................................................... 148
Zmienne jako nazwy funkcji.......................................................................................... 150
Bardziej skomplikowany przykład................................................................................. 150
Podsumowanie...................................................................................................................... 153
10_________________________________________________PHP 4. Biblia
Rozdział 9. Ciągi i funkcje operujące na ciągach ....................................................155
Ciągi w PHP ......................................................................................................................... 155
Znaki i indeksy ciągu ..................................................................................................... 156
Operatory dla ciągów ..................................................................................................... 156
Złączenie i przypisanie................................................................................................... 157
Funkcje operujące na ciągach............................................................................................... 157
Sprawdzanieciągów....................................................................................................... 157
Szukanie znaków i podciągów ....................................................................................... 158
Porównywanieiprzeszukiwanie.................................................................................... 159
Przeszukiwanie............................................................................................................... 160
Wycinaniepodciągu....................................................................................................... 161
Funkcje porządkujące..................................................................................................... 163
Zastępowanieciągów..................................................................................................... 163
Ciągi i kolekcje znaków ................................................................................................. 165
Funkcje analizujące........................................................................................................ 167
Funkcje zmiany wielkości liter....................................................................................... 169
Funkcje znaków sterujących........................................................................................... 170
Formatowanie danych.................................................................................................... 171
Zaawansowane własności ciągów......................................................................................... 173
Wyrażeniaregularne....................................................................................................... 173
Funkcje HTML............................................................................................................... 176
Podsumowanie...................................................................................................................... 176
Rozdział 10. Matematyka........................................................................................177
Typy numeryczne................................................................................................................. 177
Operatory matematyczne...................................................................................................... 178
Operatory arytmetyczne................................................................................................. 178
Operatory arytmetyczne i typy ....................................................................................... 178
Operator inkrementacji................................................................................................... 179
Operator przypisania...................................................................................................... 180
Operatory porównania.................................................................................................... 180
Kolejność operacji i nawiasy.......................................................................................... 181
Proste funkcje matematyczne ............................................................................................... 182
Konwersja podstawy............................................................................................................. 184
Funkcje wykładnicze i logarytmy......................................................................................... 186
Trygonometria...................................................................................................................... 186
Liczby losowe....................................................................................................................... 190
Inicjowanie generatora................................................................................................... 190
Przykład: losowy wybór................................................................................................. 192
Arytmetyka o dowolnej dokładności.................................................................................... 193
Przykład użycia funkcji o dowolnej dokładności........................................................... 194
Konwersja obliczeń na dowolną dokładność.................................................................. 195
Podsumowanie...................................................................................................................... 197
Rozdział 11.Tablice i funkcje operujące na tablicach...............................................199
Użycie tablic......................................................................................................................... 199
Czym są tablice PHP?........................................................................................................... 200
Tworzenie tablic................................................................................................................... 202
Bezpośrednie przypisanie............................................................................................... 202
Konstrukcja arrayQ......................................................................................................... 203
Podawanie indeksów przy użyciu arrayQ....................................................................... 203
Funkcje zwracające tablice............................................................................................. 204
Odczytywanie wartości......................................................................................................... 204
Konstrukcja list()............................................................................................................ 205
Spis treści__________________________________________________11
Tablice wielowymiarowe...................................................................................................... 206
Informacje o tablicach .......................................................................................................... 207
Usuwanie z tablicy ............................................................................................................... 207
Iteracje.................................................................................................................................. 208
Użycie funkcji iteracyjnych............................................................................................ 208
Iteracje za pomocą currentQ i next().............................................................................. 210
Powtórne przeglądanie za pomocąreset()...................................................................... 211
Wypisywanie w odwrotnym porządku za pomocąend() i prev()................................... 212
Pobieranie wartości kluczy za pomocąkey().................................................................. 213
Wartości puste i funkcja each()...................................................................................... 213
Przeglądanie tablicy za pomocą array _walk()................................................................ 214
Stosy i kolejki....................................................................................................................... 215
Przekształcenia tablic ........................................................................................................... 218
Pobieranie kluczy i wartości........................................................................................... 218
Zamiana, odwracanie i mieszanie................................................................................... 219
Zamiana pomiędzy tablicąi zmiennymi............................................................................... 222
Sortowanie............................................................................................................................222
Podsumowanie......................................................................................................................223
Rozdział 12. Przekazywanie danych pomiędzy stronami ............................................225
HTTP jest protokołem bezstanowym.................................................................................... 225
Argumenty GET................................................................................................................... 226
Inne zastosowania adresów URL w stylu GET..................................................................... 228
Argumenty POST................................................................................................................. 230
Zarządzanie zmiennymi w PHP............................................................................................ 232
Podsumowanie...................................................................................................................... 234
Rozdział 13. Funkcje systemu operacyjnego i dostępu do plików ..............................235
Funkcje czytania i zapisywania plików ................................................................................ 236
Otwarcie pliku................................................................................................................ 236
Czytanie pliku ................................................................................................................ 238
Zapis do pliku................................................................................................................. 239
Zamknięcie pliku............................................................................................................ 241
Funkcje systemu plików i katalogów.................................................................................... 241
feof.................................................................................................................................241
file_exists.......................................................................................................................241
filesize............................................................................................................................ 244
Funkcje sieciowe.................................................................................................................. 244
Funkcje logu systemowego ............................................................................................ 244
Funkcje DNS.................................................................................................................. 244
Funkcje gniazd............................................................................................................... 245
Funkcje daty i czasu ............................................................................................................. 245
Jeżeli nie znasz daty ani czasu........................................................................................ 246
Jeżeli już odczytałeś datę i czas...................................................................................... 247
Funkcje konwersji kalendarza .............................................................................................. 247
Podsumowanie...................................................................................................................... 249
Rozdział 14. Styl PHP..............................................................................................251
Zalety prawidłowego stylu ................................................................................................... 251
Czytelność............................................................................................................................ 252
Komentarze.................................................................................................................... 256
Nazwy zmiennych i plików............................................................................................ 257
Łatwość konserwacji............................................................................................................ 259
Unikaj „magicznych liczb"............................................................................................. 259
Funkcje........................................................................................................................... 260
12_________________________________________________PHP 4. Biblia
Pliki dołączane............................................................................................................... 260
Interfejs obiektowy......................................................................................................... 262
Solidność.............................................................................................................................. 263
Niedostępność usługi...................................................................................................... 263
Niespodziewany typ zmiennej........................................................................................ 263
Zwięzłość i wydajność.......................................................................................................... 264
Używaj właściwych algorytmów.................................................................................... 264
Poprawianie wydajności................................................................................................. 264
Zwięzłość: zmniejszanie................................................................................................. 265
Wskazówki na temat zwięzłości..................................................................................... 266
Tryb HTML, czy PHP? ........................................................................................................ 268
Oddzielanie kodu od projektu............................................................................................... 274
Funkcje........................................................................................................................... 274
Arkusze stylów w PHP................................................................................................... 274
Szablony i spójność stron............................................................................................... 275
Podsumowanie...................................................................................................................... 276
Rozdział 15. Podstawowe pułapki PHP.....................................................................277
Problemy związane z instalacją............................................................................................ 277
Źródło pliku wyświetlane w przeglądarce...................................................................... 278
Blok PHP pokazuje się jako tekst; przeglądarka chce zapisać plik ................................ 278
Nieodnaleziony serwer lub niemożliwe wyświetlenie strony......................................... 278
Problemy z wyświetlaniem................................................................................................... 279
Całkowicie pusta strona.................................................................................................. 279
Niekompletna lub nieprawidłowa strona........................................................................ 279
Kod PHP pokazuje się w przeglądarce........................................................................... 281
Niepowodzenie przy ładowaniu strony................................................................................. 282
Nieodnaleziona strona.................................................................................................... 282
Nieudane otwarcie pliku do włączenia........................................................................... 283
Błędy analizy składni............................................................................................................ 283
Komunikat błędu składni................................................................................................ 283
Brakujący średnik........................................................................................................... 284
Brak znaku $ .................................................................................................................. 284
Nieprawidłowa zmiana trybu.......................................................................................... 285
Nieoznaczone apostrofy................................................................................................. 285
Inne błędy składni.......................................................................................................... 286
Uprawnienia do plików......................................................................................................... 286
Błąd HTTP nr 403 .......................................................................................................... 286
Brak dołączanych plików ..................................................................................................... 286
Ostrzeżenie przy włączaniu pliku................................................................................... 287
Nieprzypisane zmienne......................................................................................................... 287
Zmienna nie pokazuje się w wynikowym ciągu............................................................. 287
Jak zachowują się niezainicjowane zmienne.................................................................. 288
Problemy z wielkością liter............................................................................................ 288
Problemy z zasięgiem..................................................................................................... 288
Problemy z funkcjami........................................................................................................... 289
Wywołanie niezdefiniowanej funkcji............................................................................. 289
Nie można ponownie zadeklarować funkcji................................................................... 290
Nieprawidłowa liczba argumentów................................................................................ 290
Błędy matematyczne............................................................................................................. 290
Ostrzeżenie o dzieleniu przez zero ................................................................................. 290
Niespodziewane wyniki działań..................................................................................... 291
NaN (lubNAŃ).............................................................................................................. 291
Spis treści___________________________________________________13
Przekroczenie czasu oczekiwania......................................................................................... 292
Podsumowanie...................................................................................................................... 292
Część II PHP i bazy danych ............................................................297
Rozdział 16. Wybór bazy danych dla PHP .................................................................299
Czemu używamy baz danych?.............................................................................................. 299
Unikanie redundancji..................................................................................................... 300
Unikanie nudnego programowania................................................................................. 300
Szukanie......................................................................................................................... 300
Bezpieczeństwo..............................................................................................................301
Architektura wielowarstwowa........................................................................................ 301
Wybór bazy danych.............................................................................................................. 302
Możesz nie mieć wyboru................................................................................................ 302
Plikowe, relacyjne i obiektowo-relacyjne bazy danych.................................................. 302
ODBC/JDBC kontra własne API................................................................................... 303
Zmiana bazy danych....................................................................................................... 304
Przegląd zaawansowanych funkcji....................................................................................... 304
GUI.................................................................................................................................304
Podzapytania.................................................................................................................. 304
Złożone złączenia........................................................................................................... 305
Wielowątkowość i blokowanie....................................................................................... 305
Transakcje...................................................................................................................... 305
Procedury i wyzwalacze................................................................................................. 306
Klucze obce i więzy integralności.................................................................................. 306
Replikacja bazy danych.................................................................................................. 306
Bazy danych obsługiwane przez PHP................................................................................... 307
Wybieramy MySQL.............................................................................................................307
Podsumowanie...................................................................................................................... 308
Rozdział 17. Samouczek SQL...................................................................................311
Standardy SQL ..................................................................................................................... 311
Podstawowe wyrażenia SQL................................................................................................ 312
SELECT......................................................................................................................... 312
INSERT.......................................................................................................................... 315
UPDATE........................................................................................................................ 316
DELETE.........................................................................................................................316
Projekt bazy danych.............................................................................................................. 316
Użycie połączeń do bazy danych.......................................................................................... 319
Bezpieczeństwo i uprawnienia.............................................................................................. 319
Ustawianie uprawnień.................................................................................................... 320
Przechowywanie haseł w innym miejscu ....................................................................... 320
Użycie formularzy PHP do sprawdzania haseł............................................................... 321
Tworzenie kopii bezpieczeństwa.................................................................................... 322
Podsumowanie...................................................................................................................... 322
Rozdział 18. Funkcje PHP i MySQL ..........................................................................325
Łączenie z MySQL............................................................................................................... 325
Tworzenie zapytań w MySQL.............................................................................................. 326
Pobieranie wyniku................................................................................................................ 327
Pobieranie opisu danych....................................................................................................... 330
Korzystanie z wielokrotnych połączeń................................................................................. 330
Kontrola błędów................................................................................................................... 332
Tworzenie baz danych MySQL za pomocą PHP.................................................................. 332
14_________________________________________________PHP 4. Biblia
Funkcje MySQL................................................................................................................... 333
Podsumowanie...................................................................................................................... 335
Rozdział 19. Wyświetlanie zapytań w tabelach .........................................................337
Tabele HTML i tabele bazy danych...................................................................................... 338
Przekształcenie jeden w jeden........................................................................................ 338
Przykład: wyświetlanie jednej tabeli.............................................................................. 338
Przykładowe tabele......................................................................................................... 340
Ulepszanie wyświetlania................................................................................................ 341
Złożone odwzorowania......................................................................................................... 343
Wiele zapytań albo skomplikowane wyświetlanie ......................................................... 344
Użycie kilku zapytań...................................................................................................... 345
Przykład skomplikowanego wyświetlania...................................................................... 346
Tworzenie przykładowych tabel........................................................................................... 348
Podsumowanie...................................................................................................................... 350
Rozdział 20. Tworzenie formularzy z zapytań.............................................................351
Formularze HTML ............................................................................................................... 351
Samoprzetwarzanie...............................................................................................................352
Obsługa formularzy.............................................................................................................. 353
Formularze zależne od zmiennych........................................................................................ 356
TEXT i TEXTAREA......................................................................................................356
CHECKBOX..................................................................................................................358
RADIO...........................................................................................................................359
SELECT.........................................................................................................................359
Formularze zależne od zapytań............................................................................................. 361
Podsumowanie...................................................................................................................... 362
Rozdział 21. Dziennik sieciowy ................................................................................363
Dlaczego dziennik?............................................................................................................... 363
Najprostszy dziennik ............................................................................................................ 364
Wprowadzanie danych przez HTTP..................................................................................... 368
Dołączenie bazy danych....................................................................................................... 370
Możliwe rozszerzenia........................................................................................................... 375
Podsumowanie...................................................................................................................... 376
Rozdział 22. Sieciowe głosowanie............................................................................377
Zadania systemu................................................................................................................... 377
Cele systemu.................................................................................................................. 378
Struktura......................................................................................................................... 378
Obsługa bazy danych...................................................................................................... 379
Zbieranie głosów.................................................................................................................. 379
Wyświetlanie sumarycznych wyników................................................................................. 383
Nadużycia i skalowanie.................................................................................................. 387
Podsumowanie...................................................................................................................... 387
Rozdział 23. Styl i efektywność rozwiązań na podstawie PHP i bazy danych ..............389
Połączenia — ograniczanie i powtórne użycie ..................................................................... 390
Przykład nieprawidłowego użycia: jedno połączenie na wyrażenie ............................... 390
Kilka wyników nie wymaga kilku połączeń................................................................... 391
Trwałe połączenia........................................................................................................... 391
Przenoszenie pracy na serwer bazy danych.......................................................................... 392
Bazajest szybsza od ciebie............................................................................................. 392
Przykład nieprawidłowego użycia: pętla zamiast warunku ............................................ 393
Spis treści__________________________________________________15
Tworzenie pól daty i czasu............................................................................................. 394
Szukanie ostatnio wstawionego wiersza......................................................................... 395
Podsumowanie...................................................................................................................... 397
Rozdział 24. Pułapki tandemu PHP-baza danych .......................................................399
Brak połączenia.................................................................................................................... 399
Problemy z uprawnieniami................................................................................................... 402
Nieoznaczone apostrofy........................................................................................................ 403
Nieprawidłowe zapytania SQL............................................................................................. 405
Pomyłki w nazwach........................................................................................................ 407
Pomyłki przy przecinkach.............................................................................................. 407
Ciągi nieotoczone apostrofami....................................................................................... 407
Niezainicjowane zmienne............................................................................................... 407
Zbyt mało danych, zbyt dużo danych ................................................................................... 408
Kontrola poprawności........................................................................................................... 409
Podsumowanie...................................................................................................................... 409
Część III Techniki zaawansowane....................................................^!
Rozdział 25. Sesje...................................................................................................413
Czym są sesje?...................................................................................................................... 413
Co stanowi problem?...................................................................................................... 413
Dlaczego się tym zajmujemy?........................................................................................ 414
Alternatywy sesji ..................................................................................................................414
Adres IP.......................................................................................................................... 414
Ukryte zmienne.............................................................................................................. 415
Cookie............................................................................................................................ 416
Jak działają sesje w PHP....................................................................................................... 416
Uaktywnianie sesji w PHP ............................................................................................. 417
Rejestrowanie zmiennych w sesji................................................................................... 418
Gdzie są przechowywane dane?..................................................................................... 419
Funkcje obsługi sesji............................................................................................................ 420
Przykładowy kod sesji.......................................................................................................... 422
Zagadnienia konfiguracji...................................................................................................... 423
Pułapki i wykrywanie usterek............................................................................................... 423
Podsumowanie...................................................................................................................... 426
Rozdział 26. Cookie i HTTP......................................................................................427
Cookie.................................................................................................................................. 427
FunkcjasetcookieQ........................................................................................................428
Przykłady........................................................................................................................428
Usuwanie cookie............................................................................................................ 430
Odczytywanie cookie..................................................................................................... 431
Zmienne GET, POST i cookie........................................................................................ 432
Pułapki cookie................................................................................................................ 435
Wysyłanie nagłówków HTTP............................................................................................... 437
Przykład: przekierowanie............................................................................................... 437
Przykład: uwierzytelnianie HTTP .................................................................................. 438
Pułapki związane z nagłówkami..................................................................................... 439
Podsumowanie...................................................................................................................... 439
Rozdział 27. PHP i JavaScript ..................................................................................441
Tworzenie kodu JavaScript w PHP....................................................................................... 441
Pojedynek obiektów....................................................................................................... 442
PHP nie analizuje wysyłanych danych........................................................................... 442
Kiedy używać JavaScript............................................................................................... 444
16_________________________________________________PHP 4. Biblia
PHP jako koło zapasowe do JavaScript................................................................................ 444
JavaScript statyczny kontra dynamiczny.............................................................................. 445
Dynamiczna generacja formularzy................................................................................. 446
Przesyłanie danych z JavaScript do PHP........................................................................ 450
Podsumowanie...................................................................................................................... 452
Rozdział 28. E-mail..................................................................................................455
Informacje na temat architektury e-mail............................................................................... 455
Model systemu e-mail.................................................................................................... 456
Pobieranie poczty za pomocą PHP ....................................................................................... 460
Tworzenie przez zaniechanie.......................................................................................... 461
Tworzenie przez przykład .............................................................................................. 461
Tworzenie przez upiększanie.......................................................................................... 461
Wysyłanie poczty za pomocąPHP ....................................................................................... 462
Konfiguracja Windows................................................................................................... 462
Konfiguracja Unixa........................................................................................................ 462
Funkcja maił................................................................................................................... 462
Więcej na temat aplikacji pocztowych.................................................................................. 464
Wysyłanie poczty z formularza...................................................................................... 464
Wysyłanie poczty przy użyciu bazy danych................................................................... 466
Własna aplikacja pocztowa w PHP ................................................................................ 466
Podsumowanie...................................................................................................................... 468
Rozdział 29. PHP i XML...........................................................................................469
Co tojest XML?...................................................................................................................469
Praca z XML......................................................................................................................... 472
Dokumenty i DTD................................................................................................................ 472
Struktura DTD................................................................................................................474
Analizatory kontrolujące i nie kontrolujące poprawności.............................................. 476
DOM kontra SAX................................................................................................................. 477
SAX................................................................................................................................ 477
DOM.............................................................................................................................. 478
Funkcje PHP dla DOM.........................................................................................................478
SAX................................................................................................................................ 480
Użycie SAX.................................................................................................................... 481
Opcje SAX.....................................................................................................................482
Funkcje PHP dla SAX .......................................................................................................... 483
Przykładowa aplikacja SAX................................................................................................. 486
Pułapki i wyszukiwanie błędów ........................................................................................... 491
Podsumowanie...................................................................................................................... 492
Rozdział 30. Programowanie obiektowe w PHP ........................................................493
Jak dobrejest programowanie obiektowe?........................................................................... 494
Terminologia programowania obiektowego................................................................... 494
Obiekty, klasy i typy w PHP .......................................................................................... 495
Atrybuty ......................................................................................................................... 496
Funkcje........................................................................................................................... 496
Konstruktory .................................................................................................................. 497
Dziedziczenie.................................................................................................................497
Przesłanianie .................................................................................................................. 498
Przeciążanie.................................................................................................................... 499
Zasięg.............................................................................................................................499
Przypisywanie, aliasy i referencje .................................................................................. 500
Wyświetlanie i drukowanie obiektów ............................................................................ 502
Przeglądanie...................................................................................................................503
Spis treści ________________________________________________17
Funkcje przeglądania typów i klas........................................................................................ 503
Serializacja obiektów............................................................................................................ 507
Zewnętrzne interfejsy: COM, Java i CORBA....................................................................... 508
COM i DCOM................................................................................................................509
Przykładowa aplikacja obiektowa......................................................................................... 510
Podsumowanie...................................................................................................................... 513
Rozdział 31. Bezpieczeństwo i kryptografia ..............................................................515
Możliwe ataki....................................................................................................................... 516
Zmiana zawartości witryny ............................................................................................ 516
Dostęp do kodu źródłowego........................................................................................... 518
Odczyt dowolnego pliku................................................................................................. 519
Uruchamianie dowolnych programów ........................................................................... 521
Wirusy i inne e-robaki.................................................................................................... 523
Bezpieczeństwo poczty .................................................................................................. 523
Szyfrowanie.......................................................................................................................... 524
Szyfrowanie kluczem publicznym.................................................................................. 524
Szyfrowanie pojedynczym kluczem............................................................................... 526
Szyfrowanie cookie........................................................................................................ 527
Mieszanie ....................................................................................................................... 529
Cyfrowe podpisywanie plików....................................................................................... 530
Secure Server Layer ....................................................................................................... 531
Witryny podejmujące problematykę bezpieczeństwa........................................................... 531
Podsumowanie...................................................................................................................... 532
Rozdział 32. Konfiguracja i dostrajanie.....................................................................535
Podglądanie zmiennych środowiska..................................................................................... 535
Poznajemy konfigurację PHP............................................................................................... 535
Opcje kompilacii............................................................................................................ 536
Opcje kompilacji dla postaci CGI .................................................................................. 541
Pliki konfiguracyjne Apache .......................................................................................... 543
Plikphp.ini..................................................................................................................... 545
Poprawianie wydajności PHP............................................................................................... 550
Podsumowanie...................................................................................................................... 552
Dodatki............................................................................................553
Dodatek A PHP dla programistów C ......................................................................555
Dodatek B PHP dla programistów ASP ..................................................................561
Dodatek C PHP dla programistów HTML................................................................571
Dodatek D Zasoby Sieci na temat PHP..................................................................579
Słownik ..................................................................................................................587
Skorowidz...............................................................................................................597
JL8________________________________________________PHP 4. Biblia
O Autorach
Tim Converse pisał oprogramowanie pomagające w wyborze szalików, odpowiadające
na pytania na temat stacji kosmicznych, pobierające notowania giełdowe oraz symulu-
jące robienie kolacji. Zdobył dyplom magistra informatyki na University of Chicago.
Pracuje teraz w Excite@Home, gdzie zajmuje się wyszukiwarką internetową.
Joyce Park posiada dyplom magistra historii University of Chicago; pracowała nad kil-
koma witrynami informacyjnymi w PHP, między innymi nagrodzoną MysteryGuide.
com. Jej teksty zdobyły uznanie redaktorów oraz czytelników Slashdot, OSOpinion, Li-
nux.com i wielu innych na całym świecie. Joyce jest teraz projektantem witryn w firmie
Epinions.com.
20 PHP 4. Biblia
Przedmowa
Witamy w książce P HP 4. Biblial Mimo że jesteśmy stronniczy, wierzymy, że PHP,
skryptowy język programowania dla WWW, zajął niszę najłatwiejszego i najbardziej
elastycznego narzędzia dla serwerów WWW, pozwalając na tworzenie wspaniałych
i bardzo szybkich witryn. Mimo że miliony programistów WWW na całym świecie
zwykle mogą się mylić, w tym konkretnym przypadku nie mylą się.
PHP 4.0, udostępniony na wiosnę 2000 roku, został, w porównaniu do PHP 3, uzupeł-
niony o wiele nowych możliwości, działa dużo szybciej. W książce tej przedstawione są
główne możliwości tej wersji programu. Szczegółowe przykłady pokazują, w jaki spo-
sób tworzyć witryny WWW przy użyciu PHP.
Co to jest PHP?
PHP jest językiem skryptowym wbudowywanym w strony WWW, wykonywanym na
serwerze. Jest on zgodny z większością najważniejszych serwerów WWW (najbardziej
ze znakomitym Apache). PHP pozwala na wbudowanie fragmentów kodu w normalne
strony HTML — kodu, który jest interpretowany, gdy strony są przesyłane do użyt-
kownika. PHP spełnia rolę „kleju" ułatwiającego łączenie stron WWW z bazami da-
nych umieszczonych po stronie serwera.
Dlaczego PHP?
Odpowiedzi na to pytanie poświęcamy prawie cały rozdział l. Najkrótsza odpowiedź
to: jest darmowy, ma duże możliwości, jest niezależny, stabilny, szybki, łatwy do nauki,
dobrze zaprojektowany, dobrze współpracuje z innymi produktami. A poza tym mamy
dostęp do kodu źródłowego.
22___________________________________________________PHP 4. Biblia
Co nowego w PHP 4?
PHP 4 zawiera wszystkie funkcje PHP oraz wbudowane wsparcie dla sesji, bardziej
spójną analizę składni, nowy typ Boolean oraz wiele nowych funkcji. Rdzeniem ma-
szyny skryptowej PHP jest teraz „Zend", który został napisany na nowo, aby zachować
spójność oraz zyskać rewelacyjną szybkość działania.
PHP to żywy organizm. Oryginalną wersję książki wydrukowano na wiosnę 2000 roku,
mniej więcej w tym samym czasie, gdy PHP 4 został oficjalnie wydany. Przykłady za-
warte w niej były intensywnie testowane za pomocą PHP 3 oraz różnych wersji beta PHP
4. Mimo, że opisaliśmy większość głównych funkcji PHP 4, wciąż pojawiają się nowe.
Dla kogo jest ta książka
Książka jest przeznaczona dla każdego, kto chce tworzyć witryny WWW, bardziej zło-
żone, niż pozwala HTML. Mamy szczególnie na myśli trzy grupy:
* projektantów stron WWW, którzy znają HTML i chcą rozpocząć tworzenie
dynamicznych witryn WWW;
* zaawansowanych programistów (C, Java, Perl itp.), ale bez doświadczenia
w projektowaniu dla WWW, którzy chcą szybko nabrać biegłości w progra-
mowaniu dla serwerów WWW;
* programistów WWW, którzy używali innych technik programowania (np.: Ac-
tive Server Pages, Java Server Pages, Cold Fusion) i chcą zmienić lub po pro-
stu poznać inne narzędzie.
Zakładamy, że czytelnik zna język HTML i ma podstawową wiedzę na temat sposobu
działania Sieci, ale nie oczekujemy żadnego dodatkowego doświadczenia programi-
stycznego. Aby zaoszczędzić czas bardziej zaawansowanym programistom, dodaliśmy
wiele notatek i komentarzy porównujących PHP z innymi językami i wskazujących,
które rozdziały i fragmenty mogą być przez nich pominięte. Na koniec przejrzyj nasze
dodatki, które zawierają specyficzne porady dla programistów C, ASP oraz projektan-
tów HTML.
Książka nie jest podręcznikiem
Grupa dokumentalistów PHP przygotowała świetny podręcznik, pod adresem http://
www.php.net, udostępniany oczywiście przez PHP. Książka ta nie jest takim podręczni-
kiem, ani nawetjego namiastką. Uważamy ją za uzupełnienie podręcznika.
Przedmowa__________________________________________________23
Podręcznik jest obszerny, obejmuje wszystkie aspekty i funkcje języka, jednak pozba-
wiony jest szczegółów. My, w przeciwieństwie, mamy możliwość skupienia się na te-
matach, które są najczęściej poruszane lub najmniej zrozumiałe, możemy wyjaśniać
i dawać długie przykłady.
Jak zorganizowanajest książka
Książka jest podzielona na trzy części:
Część l Podstawy
Rozdziały od 1. do 4. stanowią wprowadzenie do PHP i opisują zagadnienia, które mu-
sisz poznać przed rozpoczęciem pracy.
Rozdziały od 5. do 13. to przewodnik traktujący o głównych aspektach PHP (oprócz
współpracy z bazami danych): składni, typach danych, podstawowych funkcjach wbu-
dowanych. Możesz opuścić ten fragment i używać go jak skorowidza.
Rozdziały 14. i 15. to podręcznik stylu PHP oraz opis najczęściej spotykanych przy
programowaniu pułapek.
Część II PHP i bazy danych
Rozdziały 16. i 17. dają ogólną orientację na temat programowania dla WWW przy
użyciu baz danych SQL. Znajdują się tutaj porady, w jaki sposób wybrać najlepszy
system baz danych.
Rozdział 18. poświęcony jest funkcjom PHP dla MySQL — systemu baz danych, który
będziemy omawiali aż do końca drugiej części książki.
Rozdziały od 19. do 22. to szczegółowe i bogate w przykłady analizy przypadków
współpracy PHP z bazami danych.
W rozdziałach 23. i 24. znajdują się wskazówki i opisy pułapek w pracy z PHP i bazami
danych.
Część III Techniki zaawansowane
W każdym z rozdziałów od 25. do 32. opisujemy bardziej zaawansowane, niezależne te-
maty. Omawiamy: nowe wbudowane funkcje obsługi sesji, użycie mechanizmu cookie,
generowanie kodu Javascript, przyłączanie PHP do programów pocztowych, wsparcie
dla XML, programowanie obiektowe, bezpieczeństwo i opcje konfiguracji.
24_________________________________________________PHP 4. Biblia
Konwencje używane w książce
Używamy czcionki o stałej szerokości do zaznaczenia literałów kodu PHP. Fragmenty
kodu zawarte w tekście wyglądają w następujący sposób, natomiast oddzielny frag-
ment kodu wygląda tak:
print("tak"};
Jeżeli wygląd strony WWW wygenerowanej przez PHP jest ważny, zamieszczamy ry-
sunek z kopią ekranu; gdy nie jest — zamieszczamy źródło strony wygenerowanej
przez PHP przy użyciu czcionki o stałej szerokości. Jeżeli chcemy odróżnić wynik
skryptu PHP widoczny w przeglądarce od aktualnego wyniku PHP (który tłumaczy
przeglądarka), nazywamy go „wynikiem z przeglądarki".
Jeżeli zaznaczamy fragment kodu kursywą, oznacza to, że to miejsce należy odpowied-
nio zmienić, a nie traktować tekst dosłownie. Jeżeli w normalnym tekście wyróżniamy
wyraz za pomocą kursywy, oznacza to, że wyraz jest niezbyt znany i zdefiniowany
w słowniku.
Znaczenie ikon
Ikony, przedstawione poniżej, są rozrzucone w całym tekście. Ich zadaniem jest wyraź-
ne zaznaczenie wagi informacji.
Wskazówki oznaczają sztuczki lub techniki PHP, które nie są oczywiste,
a mogą pozwolić na wykonanie jakiejś czynności łatwiej i efektywniej.
Ikona notatki zwykle oznacza dodatkowe informacje lub wyjaśnienia,
które jednak można zignorować, jeżeli nie wydają się interesujące.
Notatki w tej książce są często kierowane do określonej grupy czytel-
ników, którzy znają konkretny język programowania lub technologię.
Ikona ostrzeżenia wskazuje coś, co może być niezrozumiałe lub źle
użyte, i w efekcie może sprawiać programistom kłopoty.
Ikona nowej funkcji oznacza nową możliwość w PHP 4.
Używamy tej ikony, aby skierować czytelnika do pokrewnej informacji
w innym rozdziale lub innej części książki.
Przedmowa__________________________________________________25
Witryna WWW i przykłady kodu
Wszystkie przykłady z tej książki znajdują się pod adresem:
ftp://ftp.helion.pl/przyklady/php4bi.zip
Dodatkowe materiały znajdują się na stronie WWW pod adresem:
http://wvw. troutworks. com/phpbook
.26________________________________________ PHP 4. Biblia
,.»»*».,„„,„„„.„-u,*,
Cześć lPodstawy PHP
Rozdział 1.
Dlaczego PHP?
W tym rozdziale:
+ Co to jest PHP?
«• Historia PHP
*• Dlaczego kochamy PHP?
* Wyprzedzamy konkurencję z PHP
Pierwszy rozdział zawiera wprowadzenie do PHP. Spróbujemy odpowiedzieć tu na kil-
ka często stawianych pytań na temat PHP, takich jak: „Co to jest" lub „Jakie jest
w porównaniu do podobnych technologii". Większość rozdziału zajęło wymienianie
powodów, dlaczego kochamy PHP. Jeżeli jesteś inżynierem szukającym argumentów,
aby przekonać szefa lub pytających „co to jest to P-coś-tam", rozdział ten dostarczy
podstawowych odpowiedzi.
Co to jest PHP?
PHP pochodzi od Hypertext Preprocessor. Właściwie produkt ten wcześniej nazywał
się Personal Home Page Tools, jednak gdy jego zakres rozszerzył się, w drodze głoso-
wania została wybrana nowa, bardziej właściwa nazwa. Dla pliku PHP można używać
dowolnego rozszerzenia, ale zalecane są .php, ,php3 oraz .phtml. Aktualnym numerem
wersji PHPjest 4, nazywany PHP 4 lub po prostu PHP.
PHP jest językiem skryptowym wbudowywanym w HTML, wykonywanym na serwerze.
Inne produkty w tej niszy to: Active Server Pages Microsoftu, ColdFusion firmy Allaire
oraz Java Server Pages — Sun. PHP jest czasami nazywany „darmowym ASP", ponieważ
sposóbjego działaniajest bardzo podobny do produktu (koncepcji) Microsoftu.
W następnym rozdziale prześledzimy dokładnie koncepcję skryptów wykonywanych na
serwerze, a w tej chwili możesz myśleć o nich jak o zestawie znaczników superHTML,
30__________________________________________Część l » Podstawy PHP
które pozwalają dodać funkcje obsługi serwera do stron WWW. Możesz np. użyć PHP
do tworzenia na bieżąco skomplikowanych stron WWW lub do uruchamiania programu
do obciążania karty kredytowej, gdy klient złoży zamówienie.
Ściśle mówiąc, PHP ma niewiele wspólnego z układem strony, zdarzeniami lub czym-
kolwiek innym, co nadaje wygląd stronom WWW. Właściwie wszystko, co robi PHP, jest
niewidoczne dla użytkownika. Ten, kto ogląda stronę PHP, nie jest w stanie powiedzieć,
że strona nie została napisana w HTML, ponieważ wynikiem PHPjest kod HTML.
PHP jest oficjalnym modułem do serwera HTTP Apache, który jest wiodącym, bezpłat-
nym serwerem WWW, napędzającym około 55% serwerów sieci. Oznacza to, że ma-
szyna skryptowa PHP jest wbudowana w serwer WWW, co powoduje szybszą obsługę
stron. Podobnie jak serwer Apache PHP jest niezależny od platformy, działa w kilku ro-
dzajach systemu Unix oraz w Windows. Wszystkie projekty prowadzone przez Apache
Software Foundation — włączając w to PHP — są dostępne na zasadzie open source
(mamy dostęp do kodu źródłowego).
Różne wersje PHP zebrały przez kilka lat wiele pochwał i nagród. PHP 3 był w 1999 r.
finalistą konkursu LinuxWorld Editor's Choice Awards (w kategorii biblioteka — na-
rzędzie programistyczne), w 1998 r. wygrał z ColdFusion CNet Builder.com Product
Awards (w kategorii najlepsze narzędzie skryptowe). Kombinacja PHP 3/MySQL wy-
grała w konkursie Database of the Year na Web '98. Nieźle, jak na program bez działu
PR, bez reklam i bez agencji reklamowej.
Historia PHP
Rasmus Lerdorf— programista, członek zespołu Apache —jest twórcą i siłą napędową
PHP. Pierwszą część PHP napisał na własny użytek w 1994 roku. Był to interfejs Perl
CGI, który pomagał śledzić, kto odwiedza stronę domową. W następnym roku, w od-
powiedzi na żądania użytkowników, którzy zaangażowali się w ten projekt, skompleto-
wał pakiet nazwany Personal Home Page Tools (znany również jako PHP Construction
Kit). Niebawem została wydana wersja 2. o nazwie PHP/FI, zawierająca Form Inter-
preter, narzędzie do przetwarzania zapytań SQL.
W połowie 1997 r. około witryn na całym świecie 50 000 używało PHP. Obsługa prze-
kroczyła możliwości jednej osoby, nawet tak energicznej jak Rasmus. Niewielki zespół
programistów rozpoczął projekt na zasadzie open source, korzystając z pomocy pro-
gramistów i użytkowników z całego świata. Dwóch izraelskich programistów, Zeev Su-
raski i Andi Gutmans (autorów analizatora składni do PHP 3 oraz PHP 4), rozszerza
i uogólnia go pod szyldem Zend.com (od ich imion, Zeev i Andi).
W czwartym kwartale 1998 r. nastąpił gwałtowny rozwój PHP, który korzystając z za-
sady open source cieszył się masowym zainteresowaniem. W październiku 1998 r. około
100 000 różnych domen używało w jakiś sposób PHP. Rok później przełamana została
bariera l 000 000 domen. W czasie pisaliśmy tę książkę, liczba ta eksplodowała do
około dwóch milionów.
Rozdział 1. » Dlaczego PHP?_______________________________________31^
Dlaczego kochamy PHP?
Jest wiele powodów, dla których kochamy PHP. W tym rozdziale poznasz niektóre z nich.
PHP jest darmowy
PHP nic nie kosztuje. Nic na początku, nic w trakcie pracy aplikacji. Czy wspominaliśmy,
że zestaw Apache+PHP+MySQL działa świetnie na niezbyt mocnym, tanim sprzęcie,
w przypadku którego nawet nie możesz myśleć o instalacji IIS+ASP+SQL Server?
Dla porównania w tabeli 1.1 zamieściliśmy średnie ceny detaliczne podobnych pro-
duktów.
Tabela 1.1.
Porównanie wydatków
Pozycja
Tworzenie
Serwer
RDBMS
Wsparcie
ASP
0-2 000 zł
2 500 zł
5000-20000zł
0 - 1 000 zł
ColdFusion
~1 500 zł
~5 000 zł
0-40 000 zł
300 zł
JSP
Ozł
0-2 200 zł
40 000 zł
300 zł
PHP
Ozł
Ozł
Ozł
Ozł
Oprogramowanie open source: nie bój się taniego
W zasadzie można by mieć wątpliwości na temat jakości i żywotności bezpłatnego
oprogramowania. Prawdopodobnie do tej opinii przyczyniło się oprogramowanie, za
które nie trzeba płacić, zwane freeware, shareware lub Free Software, postrzegane jako
należące do jednej z trzech kategorii:
* programy wypełniające małe niekomercyjne nisze;
4 programy wykonujące ciężkie niskopoziomowe zadania;
+ programy dla ludzi o dziwnych poglądach socjo-politycznych.
Czas na zmianę niektórych stereotypów. Jesteśmy w trakcie zmian w przemyśle two-
rzenia programów. Wiele (jeżeli nie większość) głównych programów dla konsumen-
tówjest dziś rozprowadzanych bez opłat: programy pocztowe, przeglądarki WWW, gry,
czy nawet pełne pakiety biurowe są rozdawane tak szybko, jak tylko ich twórcy potrafią
utworzyć wersję WWW lub ustawić serwer FTP. Oprogramowanie konsumenckie jest
coraz częściej postrzegane jako źródło strat, jak kolorowy kwiatek przyciągający
pszczoły — innymi słowy, sposób na sprzedanie większej liczby serwerów, systemów
operacyjnych, połączeń, reklam lub akcji. Przez to cena programu nie odzwierciedla je-
go jakości.
32__________________________________________Część l » Podstawy PHP
W świecie serwerów idea open source oddziaływuje jeszcze silniej. Takie produkty nie
tylko konkurują z komercyjnymi, ale wydaje się, że są poza konkurencją. Nie musisz
nam wierzyć! Jeżeli nie jesteś przekonany, więcej dowiesz się na witrynach:
http://www. opensource. org
http://www.fsf.org
Licencja PHP
Schemat licencjonowania typu open source i Free Software gwarantuje, że program jest
bezpłatny. Schemat ten jest najbardziej znany pod nazwą GPL (Gnu General Public Li-
cense) lub „copyleft". PHP był rozprowadzany na zasadach licencji GPL i własnej — do
wyboru przez każdego użytkownika. Ostatnio jednak całość programu rozprowadzana
jest na podstawie liberalnej licencji PHP 4, a Zend, jako osobny produkt, jest dystrybu-
owany na zasadach licencji Q Public license (klauzula jest stosowana, gdy Zend zosta-
nie oddzielony od PHP i ktoś będzie chciał go sprzedawać).
Dokładne objaśnienie warunków obu licencji można przeczytać pod adresami:
http://www.php. net/license
http://www. troll, no/ąpl/annotated. html
Większość użytkowników może bezpłatnie ściągnąć PHP, niektórzy zapłacą za niego,
jeżeli wchodzi w skład dystrybucji Linuksa, książki lub innego produktu. W takim wy-
padku pewnie będziesz miał mieszane uczucia na temat naszych zapewnień, że PHP nic
nie kosztuje. Możemy to wytłumaczyć: mimo że nie musisz płacić za większość pro-
gramów typu open source, zapłacisz za dostarczenie oprogramowania w bardziej wy-
godnej postaci — nagranej na dysk i dostarczonej do klienta. Możesz również zarabiać
na dostarczaniu usług biorąc ryzyko, jakiego nie podejmuje zespół programistów PHP.
Na przykład zagwarantujesz, że każda kopia będzie pozbawiona wirusów lub będzie
odpowiedniej jakości, podejmując ryzyko pozwania przez klientów, którzy dostali
uszkodzone CD-ROM-y.
Zwykle użytkownicy programów open source mogą wybrać optymalną wersję spośród
różnych propozycji: bezpłatnie i bez gwarancji, drogie, ale z świetnym serwisem lub
coś pomiędzy. Nie ma jeszcze zorganizowanego serwisu ani wsparcia dla PHP (przy-
puszczalnie będzie to jeden z dodatków do Zend).
PHP jest łatwy
PHP jest łatwy do nauczenia się, w porównaniu do innych produktów. W przeciwień-
stwie do Java Server Pages lub CGI opartego najęzyku C, PHP nie wymaga osiągnięcia
biegłości w podstawowych językach programowania do napisania prostych odwołań do
bazy danych. W przeciwieństwie do składni języka Perl, który jest żartobliwie nazywa-
ny językiem „tylko do zapisu", składnia PHP jest prosta do analizy i łatwa do zrozu-
mienia przez programistę. W przeciwieństwie do Active Server Pages, PHP nie zmusza
do uczenia się dwóch różnych języków!
Rozdział 1. » Dlaczego PHP?_______________________________________33
Istnieje wiele predefmiowanych, bardzo użytecznych, a specyficznych funkcji (jak
funkcje służące do łączenia się z bazami Oracle lub pobierania poczty z serwera IMAP).
Dostępnych jest również wiele gotowych skryptów, do których możesz zajrzeć w trak-
cie nauki PHP. Właściwie używanie PHP jest możliwe dzięki zmianom w istniejących
skryptach bez potrzeby pisania od początku. Oczywiście musisz znać podstawowe za-
sady, ale możesz uniknąć wielu frustrujących i zabierających czas pomyłek.
Musimy jednak ostrzec: „łatwy" może oznaczać co innego dla różnych użytkowników.
Dla niektórych projektantów WWW oznac/a środowisko graficzne, używające technik
„przenieś i upuść" lub „dostaniesz, co widzisz". Aby być naprawdę wydajnym, musisz
umieć ręcznie tworzyć strony HTML. Można oczywiście używać narzędzi WYSIWYG
do zaprojektowania witryny, sformatowania stron i dodania interakcji z użytkownikiem
przed dodaniem kodu PHP do źródeł. Są również sposoby, które opisujemy w rozdziale
3., pozwalające dodać funkcje PHP do ulubionego środowiska projektowania. Jednak
nie można w pełni korzystać z możliwości PHP bez patrzenia na kod źródłowy.
Większość zaawansowanych użytkowników PHP (włączając w to członków zespołu
tworzącego) to „zatwardziali koderzy". Twierdzą np., że ręcznie pisany kod jest piękny,
czysty i maksymalnie zgodny z przeglądarką i dlatego jest jedynie słuszny — nie wa-
hają się gwałtownie tego wyrażać. Społeczność PHP zapewnia pomoc i wymienia się
tajnikami języka przeważnie za pośrednictwem poczty elektronicznej, więc jeśli chcesz
z nich skorzystać, musisz umieć czytać czysty kod źródłowy. Niektórzy użytkownicy
narzędzi WYSIWYG czasami proszą członków listy dyskusyjnej o pomoc w rozpozna-
niu problemu, ale obejrzeli stronę zamiast kodu źródłowego.
Powtórzmy jeszcze raz, że PHP jest łatwy. Jest tylko nieco bardziej wymagający niż
HTML, ale chyba łatwiejszy niż JavaScript czy ASP i dużo mniej złożony koncepcyjnie
niż JSP.
PHP można wbudować
PHP można wbudować w HTML. Inaczej mówiąc, strony PHP są zwykłymi stronami
HTML, które „przełączają się" w tryb PHP tylko, gdy jest to konieczne. Popatrzmy na
przykład:
<HTML>
<HEAD>
<TITLE> Powitanie</TITLE>
</HEAD>
<BODY>
<P> Cześć,
<?php
/* Przełączamy się w tryb PHP.
Zamiast zmiennych, w następnych trzech liniach można łatwo
użyć danych z bazy danych*/
$firstname="Mata";
$lastname="Hari";
Stitle = "Ms.";
PRINT("$title Slastname");
// wracamy do HTML
?>.
Czy mogę nazywać cię <?php PRINT("$firstname"};?>?</P>
</BODY>
</HTML>
34__________________________________________Część l » Podstawy PHP
Gdy klient zażąda tej strony, serwer WWW przetworzy ją. Oznacza to, że przejrzy ją od
początku do końca, szukając sekcji PHP, które spróbuje przetworzyć. Analizator składni
pobierze wszystkie przypisane zmienne (oznaczone znakiem $) i spróbuje wstawić je do
późniejszych wyrażeń (w tym przypadku do funkcji print ( ) ) . Jeżeli wszystko się uda,
preprocesor zwróci normalną stronę WWW do przeglądarki klienta (rysunek 1.1).
Rysunek 1.1.
Wynik
przetworzonego PHP
Jeżeli zerkniesz do kodu źródła strony w przeglądarce, powinieneś zobaczyć coś takiego:
<HTML>
<HEAD>
<TITLE> Powitanie</TITLE>
</HEAD>
<BODY>
<P> Cześć, Ms. Hari. Czy mogę nazywać cię Mata?</P>
</BODY>
</HTML>
Gdybyś napisał to sam, byłoby identycznie. Proste!
Możliwość wbudowania PHP w HTML ma wiele pozytywnych konsekwencji:
* PHP może być szybko dodany do kodu utworzonego przez edytory WYSIWYG.
* PHP pomaga podzielić pracę pomiędzy projektantów i skryptowców.
* Nie ma potrzeby przepisywania HTML w języku programowania.
* PHP obniża koszty pracy i zwiększa wydajność.
Brak kompilacji
Prawdopodobnie najlepszą rzeczą w językach skryptowych jest to, że nie muszą być
kompilowane do postaci binarnej przed ich testowaniem i użyciem — po prostu napisz
i uruchom. PHP jest interpretowany (jak prawie wszystkie najnowsze języki programo-
wania), jednak Zend wykonuje czasami ukrytą prekompilację do zwiększenia szybkości
działania skryptów.
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia
Php 4   a bíblia

Weitere ähnliche Inhalte

Andere mochten auch

Li list date cume
Li   list date cumeLi   list date cume
Li list date cumeDon Shea
 
Passejades
PassejadesPassejades
Passejadesjfocus
 
La biotecnologia
La biotecnologiaLa biotecnologia
La biotecnologiaCardona-15
 
Normas tic y opiniones personales sobre la tecnología
Normas  tic y opiniones personales sobre la tecnologíaNormas  tic y opiniones personales sobre la tecnología
Normas tic y opiniones personales sobre la tecnologíaLaura Botina
 
B2B Informatie over het Logo spel van Koninklijke Jumbo
B2B Informatie over het Logo spel van Koninklijke JumboB2B Informatie over het Logo spel van Koninklijke Jumbo
B2B Informatie over het Logo spel van Koninklijke JumboMascha Rood
 
Resumen de la excursión
Resumen de la excursiónResumen de la excursión
Resumen de la excursiónvictorserranov
 
Proyecto lamparas en guadua
Proyecto lamparas  en guaduaProyecto lamparas  en guadua
Proyecto lamparas en guaduaMiltonGonzalezM
 
Mi Primera Presentacion De Primavera
Mi Primera Presentacion De PrimaveraMi Primera Presentacion De Primavera
Mi Primera Presentacion De Primaveranoctuida
 

Andere mochten auch (16)

Li list date cume
Li   list date cumeLi   list date cume
Li list date cume
 
My Jams Columbia
My Jams ColumbiaMy Jams Columbia
My Jams Columbia
 
Thesis Book
Thesis BookThesis Book
Thesis Book
 
Passejades
PassejadesPassejades
Passejades
 
La biotecnologia
La biotecnologiaLa biotecnologia
La biotecnologia
 
Normas tic y opiniones personales sobre la tecnología
Normas  tic y opiniones personales sobre la tecnologíaNormas  tic y opiniones personales sobre la tecnología
Normas tic y opiniones personales sobre la tecnología
 
Wire-Spec
Wire-SpecWire-Spec
Wire-Spec
 
La biotecnologia
La biotecnologiaLa biotecnologia
La biotecnologia
 
B2B Informatie over het Logo spel van Koninklijke Jumbo
B2B Informatie over het Logo spel van Koninklijke JumboB2B Informatie over het Logo spel van Koninklijke Jumbo
B2B Informatie over het Logo spel van Koninklijke Jumbo
 
ultra naukri global
ultra naukri globalultra naukri global
ultra naukri global
 
Resumen de la excursión
Resumen de la excursiónResumen de la excursión
Resumen de la excursión
 
Glosario palabras
Glosario palabras Glosario palabras
Glosario palabras
 
Bottle Box Columbia
Bottle Box ColumbiaBottle Box Columbia
Bottle Box Columbia
 
Draft 3
Draft 3Draft 3
Draft 3
 
Proyecto lamparas en guadua
Proyecto lamparas  en guaduaProyecto lamparas  en guadua
Proyecto lamparas en guadua
 
Mi Primera Presentacion De Primavera
Mi Primera Presentacion De PrimaveraMi Primera Presentacion De Primavera
Mi Primera Presentacion De Primavera
 

Ähnlich wie Php 4 a bíblia

PHP5. Profesjonalne tworzenie oprogramowania
PHP5. Profesjonalne tworzenie oprogramowaniaPHP5. Profesjonalne tworzenie oprogramowania
PHP5. Profesjonalne tworzenie oprogramowaniaWydawnictwo Helion
 
PHP5. Obiekty, wzorce, narzędzia
PHP5. Obiekty, wzorce, narzędziaPHP5. Obiekty, wzorce, narzędzia
PHP5. Obiekty, wzorce, narzędziaWydawnictwo Helion
 
PHP4. Zaawansowane programowanie
PHP4. Zaawansowane programowaniePHP4. Zaawansowane programowanie
PHP4. Zaawansowane programowanieWydawnictwo Helion
 
PHP5. Zaawansowane programowanie
PHP5. Zaawansowane programowaniePHP5. Zaawansowane programowanie
PHP5. Zaawansowane programowanieWydawnictwo Helion
 
PHP. 101 praktycznych skryptów. Wydanie II
PHP. 101 praktycznych skryptów. Wydanie IIPHP. 101 praktycznych skryptów. Wydanie II
PHP. 101 praktycznych skryptów. Wydanie IIWydawnictwo Helion
 
PHP. Programowanie. Wydanie III
PHP. Programowanie. Wydanie IIIPHP. Programowanie. Wydanie III
PHP. Programowanie. Wydanie IIIWydawnictwo Helion
 
PHP. Programowanie w systemie Windows. Vademecum profesjonalisty
PHP. Programowanie w systemie Windows. Vademecum profesjonalistyPHP. Programowanie w systemie Windows. Vademecum profesjonalisty
PHP. Programowanie w systemie Windows. Vademecum profesjonalistyWydawnictwo Helion
 
PHP i MySQL. Tworzenie stron WWW. Wydanie drugie. Vademecum profesjonalisty
PHP i MySQL. Tworzenie stron WWW. Wydanie drugie. Vademecum profesjonalistyPHP i MySQL. Tworzenie stron WWW. Wydanie drugie. Vademecum profesjonalisty
PHP i MySQL. Tworzenie stron WWW. Wydanie drugie. Vademecum profesjonalistyWydawnictwo Helion
 
PHP5, Apache i MySQL. Od podstaw
PHP5, Apache i MySQL. Od podstawPHP5, Apache i MySQL. Od podstaw
PHP5, Apache i MySQL. Od podstawWydawnictwo Helion
 
PHP i MySQL. Dynamiczne strony WWW. Szybki start
PHP i MySQL. Dynamiczne strony WWW. Szybki startPHP i MySQL. Dynamiczne strony WWW. Szybki start
PHP i MySQL. Dynamiczne strony WWW. Szybki startWydawnictwo Helion
 
Łebski Development czyli kiedy i dlaczego tworzyć oprogramowanie pod klucz i ...
Łebski Development czyli kiedy i dlaczego tworzyć oprogramowanie pod klucz i ...Łebski Development czyli kiedy i dlaczego tworzyć oprogramowanie pod klucz i ...
Łebski Development czyli kiedy i dlaczego tworzyć oprogramowanie pod klucz i ...Wojciech Sznapka
 

Ähnlich wie Php 4 a bíblia (20)

PHP. Praktyczne wprowadzenie
PHP. Praktyczne wprowadzeniePHP. Praktyczne wprowadzenie
PHP. Praktyczne wprowadzenie
 
PHP5. Profesjonalne tworzenie oprogramowania
PHP5. Profesjonalne tworzenie oprogramowaniaPHP5. Profesjonalne tworzenie oprogramowania
PHP5. Profesjonalne tworzenie oprogramowania
 
PHP5. Tajniki programowania
PHP5. Tajniki programowaniaPHP5. Tajniki programowania
PHP5. Tajniki programowania
 
PHP5. Obiekty, wzorce, narzędzia
PHP5. Obiekty, wzorce, narzędziaPHP5. Obiekty, wzorce, narzędzia
PHP5. Obiekty, wzorce, narzędzia
 
PHP4. Zaawansowane programowanie
PHP4. Zaawansowane programowaniePHP4. Zaawansowane programowanie
PHP4. Zaawansowane programowanie
 
Python. Od podstaw
Python. Od podstawPython. Od podstaw
Python. Od podstaw
 
PHP5. Zaawansowane programowanie
PHP5. Zaawansowane programowaniePHP5. Zaawansowane programowanie
PHP5. Zaawansowane programowanie
 
PHP. Programowanie
PHP. ProgramowaniePHP. Programowanie
PHP. Programowanie
 
PHP. 101 praktycznych skryptów. Wydanie II
PHP. 101 praktycznych skryptów. Wydanie IIPHP. 101 praktycznych skryptów. Wydanie II
PHP. 101 praktycznych skryptów. Wydanie II
 
PHP w mgnieniu oka
PHP w mgnieniu okaPHP w mgnieniu oka
PHP w mgnieniu oka
 
PHP5 i MySQL. Biblia
PHP5 i MySQL. BibliaPHP5 i MySQL. Biblia
PHP5 i MySQL. Biblia
 
PHP5. Praktyczny kurs
PHP5. Praktyczny kursPHP5. Praktyczny kurs
PHP5. Praktyczny kurs
 
Flash i PHP5. Podstawy
Flash i PHP5. PodstawyFlash i PHP5. Podstawy
Flash i PHP5. Podstawy
 
Perl. Od podstaw
Perl. Od podstawPerl. Od podstaw
Perl. Od podstaw
 
PHP. Programowanie. Wydanie III
PHP. Programowanie. Wydanie IIIPHP. Programowanie. Wydanie III
PHP. Programowanie. Wydanie III
 
PHP. Programowanie w systemie Windows. Vademecum profesjonalisty
PHP. Programowanie w systemie Windows. Vademecum profesjonalistyPHP. Programowanie w systemie Windows. Vademecum profesjonalisty
PHP. Programowanie w systemie Windows. Vademecum profesjonalisty
 
PHP i MySQL. Tworzenie stron WWW. Wydanie drugie. Vademecum profesjonalisty
PHP i MySQL. Tworzenie stron WWW. Wydanie drugie. Vademecum profesjonalistyPHP i MySQL. Tworzenie stron WWW. Wydanie drugie. Vademecum profesjonalisty
PHP i MySQL. Tworzenie stron WWW. Wydanie drugie. Vademecum profesjonalisty
 
PHP5, Apache i MySQL. Od podstaw
PHP5, Apache i MySQL. Od podstawPHP5, Apache i MySQL. Od podstaw
PHP5, Apache i MySQL. Od podstaw
 
PHP i MySQL. Dynamiczne strony WWW. Szybki start
PHP i MySQL. Dynamiczne strony WWW. Szybki startPHP i MySQL. Dynamiczne strony WWW. Szybki start
PHP i MySQL. Dynamiczne strony WWW. Szybki start
 
Łebski Development czyli kiedy i dlaczego tworzyć oprogramowanie pod klucz i ...
Łebski Development czyli kiedy i dlaczego tworzyć oprogramowanie pod klucz i ...Łebski Development czyli kiedy i dlaczego tworzyć oprogramowanie pod klucz i ...
Łebski Development czyli kiedy i dlaczego tworzyć oprogramowanie pod klucz i ...
 

Mehr von Maracaju Vip

Biblia de acordes para jazz (guitarra)
Biblia de acordes para jazz (guitarra)Biblia de acordes para jazz (guitarra)
Biblia de acordes para jazz (guitarra)Maracaju Vip
 
Tutorial vb projeto em vb.net
Tutorial vb projeto em vb.netTutorial vb projeto em vb.net
Tutorial vb projeto em vb.netMaracaju Vip
 
A bíblia do carro
A bíblia do carroA bíblia do carro
A bíblia do carroMaracaju Vip
 
Curso telescopio Aula 1
Curso telescopio Aula 1Curso telescopio Aula 1
Curso telescopio Aula 1Maracaju Vip
 
Projeto telescópio faça você mesmo
Projeto telescópio faça você mesmoProjeto telescópio faça você mesmo
Projeto telescópio faça você mesmoMaracaju Vip
 
Curso Telescópio Aula 4
Curso Telescópio Aula 4Curso Telescópio Aula 4
Curso Telescópio Aula 4Maracaju Vip
 
Curso de torneiro mecanico
Curso de torneiro mecanicoCurso de torneiro mecanico
Curso de torneiro mecanicoMaracaju Vip
 

Mehr von Maracaju Vip (7)

Biblia de acordes para jazz (guitarra)
Biblia de acordes para jazz (guitarra)Biblia de acordes para jazz (guitarra)
Biblia de acordes para jazz (guitarra)
 
Tutorial vb projeto em vb.net
Tutorial vb projeto em vb.netTutorial vb projeto em vb.net
Tutorial vb projeto em vb.net
 
A bíblia do carro
A bíblia do carroA bíblia do carro
A bíblia do carro
 
Curso telescopio Aula 1
Curso telescopio Aula 1Curso telescopio Aula 1
Curso telescopio Aula 1
 
Projeto telescópio faça você mesmo
Projeto telescópio faça você mesmoProjeto telescópio faça você mesmo
Projeto telescópio faça você mesmo
 
Curso Telescópio Aula 4
Curso Telescópio Aula 4Curso Telescópio Aula 4
Curso Telescópio Aula 4
 
Curso de torneiro mecanico
Curso de torneiro mecanicoCurso de torneiro mecanico
Curso de torneiro mecanico
 

Php 4 a bíblia

  • 1.
  • 2. PUP 4. Biblia to rzetelnie opracowany podręcznik zawierający analizy konkretnych problemów. Ułatwi on zapoznanie się z najnowszą wersjąjęzyka umożliwiającego tworzenie skryptów dołączanych do stron HTML. Książka jest przeznaczona dla każdego, kto chce tworzyć witryny WWW, bardziej złożone, niż pozwala HTML. Mamy szczególnie na myśli trzy grupy: * projektantów stron WWW. którzy znają HTML i chcą rozpocząć tworzenie dynamicznych witryn WWW; * zaawansowanych programistów (C, Java, Perl itp.), ale bez doświadczenia w projektowaniu dla WWW, którzy chcą szybko nabrać biegłości w programowaniu dla serwerów WWW; * programistów WWW, którzy używali innych technik programowania (np.: Active Server Pages, Java Server Pages, Cold Fusion) i chcą zmienić lub po prostu poznać inne narzędzie. Tytuł oryginału: PHP 4. Bibie Tłumaczenie: Paweł Oonera ISBN: 83-7197-391-8 Original English language edition Copyright © 2000 by IDG Books Worldwide, Inc. All rights reserved including the right of reproduction in whole or in part of any form. This translation pu- blished by arrangement with IDG Books Worldwide, Inc. The IDG Books Worldwide logo is a trademark or registred trademark in the United States and/or other co- untries under exclusive to license to IDG Books Worldwide, Inc., from International Data Group, Inc. The Bible series trade dress is a trademark of IDG Books Worldwide, Inc. in the United States and/or other coun- tries. Used by permission. Polish language edition published by Wydawnictwo Helion. Copyright ©2001 Wydawnictwo HELION ul. Chopina 6, 44-100 GLIWICE tel. (32) 231-22-19, (32) 230-98-63 e-mail: helion@helion.pl WWW: http://helion.pl (księgarnia internetowa, katalog książek) Drogi Czytelniku! Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres http://helion.pl/user/opinie7php4bi Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję. Plik z przykładami do książki znajduje się pod adresem ftp://ftp.helion.pl/przyklady/php4bi.zip Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właści- cieli. Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje były kompletne i rzetelne. Nie biorąjednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Wydawnictwo HELION nie po- noszą również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawar- tych w książce. Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzna, fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje naruszenie praw autorskich niniejszej publikacji. Printed in Poland. Druk: INTERDRUK - Łódź, tel. 682-18-56
  • 3. Książka tajest dedykowana naszym rodzicom: Za ich milość, za poświęcenie i za to, żepozwolili nam w dzieciństwie dużo czytać.
  • 4. Podziękowania Projekt tej książki powstał w trakcie rozmów z Debrą Williams Cauley, która jest re- daktorem w wydawnictwie IDG Books. Prowadziła cały projekt, znajdowała dodatko- wych współpracowników oraz izolowała naiwnych początkujących autorów od twardej rzeczywistości przemysłu wydawniczego. Susan Christopherson pracowała jako redak- tor projektu, zanim przekazała pałeczkę Barb Guerra, która z kolei przekształciła nasze chaotyczne notatki w rękopis. Bob Campbell przepisał go z niesłychaną szybkością. Richard Lynch był naszym recenzentem technicznym. Powstrzymał nas od napisania wielu rzeczy, które nie są prawdziwe, dał nam wiele dobrych rad, w jaki sposób ulep- szyć wskazówki i przykłady. Pomógł nam napisać dużo lepszą książkę. Jednak nie jego należy winić za błędy i braki, które jeszcze pozostały. Nie stworzyliśmy tej książki sami. Dustin Mitchell napisał rozdział o bezpieczeństwie i szyfrowaniu, Patrick McCuller jest autorem pierwszego szkicu rozdziałów o XML i OOP. Ariel Garcia współpracowała w trakcie powstawania pierwszych projektów roz- działów na temat PHP i JavaScript. Współpracownicy Joyce w firmie Epinions (szcze- gólnie Lou Montuli i Jay Ashton) również zasługują na wdzięczność za współpracę przy tworzeniu przykładów kodu oraz za wskazówki, jak używać PHP w silnie obcią- żonym środowisku. Szczególne podziękowania należą się twórcom PHP (a to: Rasmus Lerdorf, Zeev Sura- ski, Andi Gutmans, Thies Arntzen, Stig Bakken, Sasha Schumann, Andrei Zmievski oraz wielu ich współpracowników) ludziom, którzy tworzyli dokumentację do PHP (m.in. Stig Bakken, Alexander Aulbach, Egon Schmid, Lars Torben Wilson, Jim Win- stead) oraz wszystkim z listy dyskusyjnej o PHP. Szczególnie dziękujemy Rasmusowi, Sashay oraz Richardowi Lynchowi za odpowiedzi na liście dyskusyjnej. Autorzy chcieliby móc podziękować za pomoc swoim małżonkom, ale niestety jest to w tej chwili niemożliwe. :)
  • 5. Rzut oka na książkę OAutorach...............................................................................................................19 Przedmowa..............................................................................................................^! Część l Podstawy PHP....................................................................27 Rozdział 1. Dlaczego PHP? ......................................................................................29 Rozdział 2. Skrypty wykonywane na serwerze WWW.................................................41 Rozdział 3. Rozpoczynamy pracę z PHP....................................................................55 Rozdział 4. Dodajemy PHP do HTML.........................................................................69 Rozdział 5. Składnia, zmienne i wyświetlanie............................................................75 Rozdział 6. Typy w PHP ...........................................................................................91 Rozdział 7. Sterowanie ..........................................................................................111 Rozdział 8. Użycie i definiowanie funkcji ................................................................133 Rozdział 9. Ciągi i funkcje operujące na ciągach ....................................................155 Rozdział 10. Matematyka........................................................................................177 Rozdział 11. Tablice i funkcje operujące na tablicach ...............................................199 Rozdział 12. Przekazywanie danych pomiędzy stronami ............................................225 Rozdział 13. Funkcje systemu operacyjnego i dostępu do plików ..............................235 Rozdział 14. Styl PHP..............................................................................................251 Rozdział 15. Podstawowe pułapki PHP.....................................................................277 Część II PHP i bazy danych ............................................................297 Rozdział 16. Wybór bazy danych dla PHP .................................................................299 Rozdział 17. Samouczek SQL...................................................................................311 Rozdział 18. Funkcje PHP i MySQL ..........................................................................325 Rozdział 19. Wyświetlanie zapytań w tabelach .........................................................337
  • 6. 6__________________________________________________PHP 4. Biblia Rozdział 20. Tworzenie formularzy z zapytań.............................................................351 Rozdział 21. Dziennik sieciowy ................................................................................363 Rozdział 22. Sieciowe głosowanie............................................................................377 Rozdział 23. Styl i efektywność rozwiązań na podstawie PHP i bazy danych ..............389 Rozdział 24. Pułapki tandemu PHP-baza danych .......................................................399 Część III Techniki zaawansowane....................................................411 Rozdział 25. Sesje...................................................................................................413 Rozdział 26. Cookie i HTTP......................................................................................427 Rozdział 27. PHP i JavaScript ..................................................................................441 Rozdział 28. E-mail..................................................................................................455 Rozdział 29. PHP i XML...........................................................................................469 Rozdział 30. Programowanie obiektowe w PHP ........................................................493 Rozdział 31. Bezpieczeństwo i kryptografia ..............................................................515 Rozdział 32. Konfiguracja i dostrajanie.....................................................................535 Dodatki............................................................................................553 Dodatek A PHP dla programistów C ......................................................................555 Dodatek B PHP dla programistów ASP ..................................................................561 Dodatek C PHP dla programistów HTML................................................................571 Dodatek D Zasoby Sieci na temat PHP..................................................................579 Słownik..................................................................................................................587 Skorowidz...............................................................................................................597
  • 7. Spis treści OAutorach...............................................................................................................19 Przedmowa...............................................................................................................21 Część l Podstawy PHP....................................................................27 Rozdział 1. Dlaczego PHP? ......................................................................................29 Co to jest PHP?.......................................................................................................................29 Historia PHP......................................................... ................................................................. 30 Dlaczego kochamy PHP? ....................................................................................................... 31 PHP jest darmowy............................................................................................................ 31 PHP jest łatwy .................................................................................................................. 32 PHP można wbudować..................................................................................................... 33 PHP jest niezależny.......................................................................................................... 35 PHP nie bazuje na znacznikach........................................................................................ 35 PHP jest stabilny .............................................................................................................. 36 PHP jest szybki................................................................................................................. 36 PHP jest otwarty............................................................................................................... 37 PHP dobrze współpracuje z innymi produktami.............................................................. 38 Popularność PHP rośnie................................................................................................... 38 PHP nie jest niczyją własnością....................................................................................... 39 Społeczność PHP..............................................................................................................40 Podsumowanie........................................................................................................................ 40 Rozdział 2. Skrypty wykonywane na serwerze WWW.................................................41 Statyczny HTML.................................................................................................................... 41 Technologie wykonywane na kliencie.................................................................................... 44 Skrypty wykonywane na serwerze.......................................................................................... 47 Do czego są dobre skrypty serwera ........................................................................................ 51 Podsumowanie........................................................................................................................ 53 Rozdział 3. Rozpoczynamy pracę z PHP....................................................................55 Dzierżawa lub własny serwer................................................................................................. 55 Wariant z dostawcąInternetu........................................................................................... 55 Własny serwer: wady i zalety........................................................................................... 58 Rozwiązania pośrednie..................................................................................................... 59 Instalowanie PHP................................................................................................................... 59 Zanim zaczniesz............................................................................................................... 60 Procedura instalacji.......................................................................................................... 61 Narzędzia programistyczne.............................................................................................. 66 Podsumowanie........................................................................................................................ 67
  • 8. 8__________________________________________________PHP 4. Biblia Rozdział 4. Dodajemy PHP do HTML.........................................................................69 HTML jest gotowy na PHP .................................................................................................... 69 Przełączanie się z HTML do PHP .......................................................................................... 70 Kanoniczne znaczniki PHP .............................................................................................. 70 Krótkie znaczniki otwierające (w stylu SGML)............................................................... 70 Witaj świecie.................................................................................................................... 71 Wejście i wyjście z trybu PHP ......................................................................................... 72 Dołączanie plików............................................................................................................ 73 Podsumowanie........................................................................................................................ 74 Rozdział 5. Składnia, zmienne i wyświetlanie............................................................75 PHP wiele wybacza................................................................................................................ 75 HTML to nie PHP...................................................................................................................76 Składnia PHP bazuje na C...................................................................................................... 76 PHP nie przejmuje się odstępami..................................................................................... 76 PHP jest czasami wrażliwy na wielkość liter ................................................................... 77 Instrukcje to wyrażenia zakończone średnikiem .............................................................. 77 Bloki................................................................................................................................. 80 Komentarze ............................................................................................................................ 80 Komentarze wielowierszowe w stylu C ........................................................................... 81 Komentarze jednowierszowe: # i //.................................................................................. 81 Zmienne.................................................................................................................................. 82 PHP skorzystał ze stylu zmiennych Perl........................................................................... 82 Deklarowanie zmiennych................................................................................................. 82 Przypisywanie zmiennym wartości.................................................................................. 82 Zmiana wartości zmiennych............................................................................................. 83 Nieprzypisane zmienne.................................................................................................... 83 Możesz dowolnie zmieniać tryby pracy ........................................................................... 85 Wyjście................................................................................................................................... 86 Echo i print....................................................................................................................... 86 Zmienne i ciągi................................................................................................................. 87 Podsumowanie........................................................................................................................88 Rozdział 6. Typy w PHP ...........................................................................................91 Pierwsza zasada: nie przejmuj się........................................................................................... 91 Brak deklaracji typów zmiennych.................................................................................... 91 Automatyczna konwersja typów ...................................................................................... 92 Typy w PHP ........................................................................................................................... 92 Typy proste............................................................................................................................. 93 Integer.............................................................................................................................. 93 Double..............................................................................................................................94 Boolean............................................................................................................................ 95 Przykłady.......................................................................................................................... 96 String................................................................................................................................ 97 Tablice.................................................................................................................................. 100 Implementacja tablic...................................................................................................... 101 Ciągi znaków jako indeksy tablicy................................................................................. 101 Czy w PHP sąstruktury?................................................................................................ 102 Inne własności tablic ...................................................................................................... 102 Obiekty................................................................................................................................. 102 Przegląd OOP................................................................................................................. 102 Jak bardzo obiektowyjest PHP? .................................................................................... 103 Definiowanie klas w PHP............................................................................................... 103 Tworzenie obiektów....................................................................................................... 104
  • 9. Spis treści_________________________________________________ 9 Kontrola typów..................................................................................................................... 104 Przypisania i konwersje........................................................................................................ 105 Przepełnienie liczby całkowitej...................................................................................... 109 Szukamy największej liczby całkowitej......................................................................... 109 Podsumowanie...................................................................................................................... 110 Rozdział 7. Sterowanie ..........................................................................................111 Wyrażenia logiczne .............................................................................................................. 112 Stałe logiczne ................................................................................................................. 112 Operatory logiczne......................................................................................................... 112 Operatory porównania.................................................................................................... 114 Operator trójskładnikowy............................................................................................... 116 Instrukcje warunkowe........................................................................................................... 117 If-else ............................................................................................................................. 117 Switch............................................................................................................................. 120 Pętle...................................................................................................................................... 121 Pętle ograniczone i nieograniczone............................................................................... 122 While.............................................................................................................................. 122 Do-while......................................................................................................................... 123 For.................................................................................................................................. 123 Przykłady pętli................................................................................................................ 124 Break i continue ............................................................................................................. 126 Pętle nieskończone......................................................................................................... 128 Składnia alternatywna........................................................................................................... 129 Przerywanie wykonania........................................................................................................ 129 Podsumowanie...................................................................................................................... 130 Rozdział 8. Użycie i definiowanie funkcji ................................................................133 Użycie funkcji...................................................................................................................... 133 Zwracane wartości a efekty uboczne.............................................................................. 134 Dokumentacja funkcji........................................................................................................... 134 Nagłówki w dokumentacji.............................................................................................. 135 Szukanie opisu funkcji................................................................................................... 136 Definiowanie własnych funkcji............................................................................................ 136 Czym jest funkcja?......................................................................................................... 136 Składnia definicji funkcji............................................................................................... 137 Przykład definicji funkcji............................................................................................... 137 Parametry formalne i parametry aktualne....................................................................... 139 Nieprawidłowa liczba argumentów................................................................................ 139 Funkcje a zasięg zmiennych................................................................................................. 139 Zmienne globalne i lokalne ............................................................................................ 140 Zmienne statyczne.......................................................................................................... 141 Zasięg funkcji....................................................................................................................... 142 Include oraz require........................................................................................................ 142 Rekurencja...................................................................................................................... 143 Zagadnienia zaawansowane.................................................................................................. 144 Zmienna liczba argumentów .......................................................................................... 145 Wywołanie przez wartość a wywołanie przez referencję............................................... 148 Wywołanie przez referencję........................................................................................... 148 Zmienne jako nazwy funkcji.......................................................................................... 150 Bardziej skomplikowany przykład................................................................................. 150 Podsumowanie...................................................................................................................... 153
  • 10. 10_________________________________________________PHP 4. Biblia Rozdział 9. Ciągi i funkcje operujące na ciągach ....................................................155 Ciągi w PHP ......................................................................................................................... 155 Znaki i indeksy ciągu ..................................................................................................... 156 Operatory dla ciągów ..................................................................................................... 156 Złączenie i przypisanie................................................................................................... 157 Funkcje operujące na ciągach............................................................................................... 157 Sprawdzanieciągów....................................................................................................... 157 Szukanie znaków i podciągów ....................................................................................... 158 Porównywanieiprzeszukiwanie.................................................................................... 159 Przeszukiwanie............................................................................................................... 160 Wycinaniepodciągu....................................................................................................... 161 Funkcje porządkujące..................................................................................................... 163 Zastępowanieciągów..................................................................................................... 163 Ciągi i kolekcje znaków ................................................................................................. 165 Funkcje analizujące........................................................................................................ 167 Funkcje zmiany wielkości liter....................................................................................... 169 Funkcje znaków sterujących........................................................................................... 170 Formatowanie danych.................................................................................................... 171 Zaawansowane własności ciągów......................................................................................... 173 Wyrażeniaregularne....................................................................................................... 173 Funkcje HTML............................................................................................................... 176 Podsumowanie...................................................................................................................... 176 Rozdział 10. Matematyka........................................................................................177 Typy numeryczne................................................................................................................. 177 Operatory matematyczne...................................................................................................... 178 Operatory arytmetyczne................................................................................................. 178 Operatory arytmetyczne i typy ....................................................................................... 178 Operator inkrementacji................................................................................................... 179 Operator przypisania...................................................................................................... 180 Operatory porównania.................................................................................................... 180 Kolejność operacji i nawiasy.......................................................................................... 181 Proste funkcje matematyczne ............................................................................................... 182 Konwersja podstawy............................................................................................................. 184 Funkcje wykładnicze i logarytmy......................................................................................... 186 Trygonometria...................................................................................................................... 186 Liczby losowe....................................................................................................................... 190 Inicjowanie generatora................................................................................................... 190 Przykład: losowy wybór................................................................................................. 192 Arytmetyka o dowolnej dokładności.................................................................................... 193 Przykład użycia funkcji o dowolnej dokładności........................................................... 194 Konwersja obliczeń na dowolną dokładność.................................................................. 195 Podsumowanie...................................................................................................................... 197 Rozdział 11.Tablice i funkcje operujące na tablicach...............................................199 Użycie tablic......................................................................................................................... 199 Czym są tablice PHP?........................................................................................................... 200 Tworzenie tablic................................................................................................................... 202 Bezpośrednie przypisanie............................................................................................... 202 Konstrukcja arrayQ......................................................................................................... 203 Podawanie indeksów przy użyciu arrayQ....................................................................... 203 Funkcje zwracające tablice............................................................................................. 204 Odczytywanie wartości......................................................................................................... 204 Konstrukcja list()............................................................................................................ 205
  • 11. Spis treści__________________________________________________11 Tablice wielowymiarowe...................................................................................................... 206 Informacje o tablicach .......................................................................................................... 207 Usuwanie z tablicy ............................................................................................................... 207 Iteracje.................................................................................................................................. 208 Użycie funkcji iteracyjnych............................................................................................ 208 Iteracje za pomocą currentQ i next().............................................................................. 210 Powtórne przeglądanie za pomocąreset()...................................................................... 211 Wypisywanie w odwrotnym porządku za pomocąend() i prev()................................... 212 Pobieranie wartości kluczy za pomocąkey().................................................................. 213 Wartości puste i funkcja each()...................................................................................... 213 Przeglądanie tablicy za pomocą array _walk()................................................................ 214 Stosy i kolejki....................................................................................................................... 215 Przekształcenia tablic ........................................................................................................... 218 Pobieranie kluczy i wartości........................................................................................... 218 Zamiana, odwracanie i mieszanie................................................................................... 219 Zamiana pomiędzy tablicąi zmiennymi............................................................................... 222 Sortowanie............................................................................................................................222 Podsumowanie......................................................................................................................223 Rozdział 12. Przekazywanie danych pomiędzy stronami ............................................225 HTTP jest protokołem bezstanowym.................................................................................... 225 Argumenty GET................................................................................................................... 226 Inne zastosowania adresów URL w stylu GET..................................................................... 228 Argumenty POST................................................................................................................. 230 Zarządzanie zmiennymi w PHP............................................................................................ 232 Podsumowanie...................................................................................................................... 234 Rozdział 13. Funkcje systemu operacyjnego i dostępu do plików ..............................235 Funkcje czytania i zapisywania plików ................................................................................ 236 Otwarcie pliku................................................................................................................ 236 Czytanie pliku ................................................................................................................ 238 Zapis do pliku................................................................................................................. 239 Zamknięcie pliku............................................................................................................ 241 Funkcje systemu plików i katalogów.................................................................................... 241 feof.................................................................................................................................241 file_exists.......................................................................................................................241 filesize............................................................................................................................ 244 Funkcje sieciowe.................................................................................................................. 244 Funkcje logu systemowego ............................................................................................ 244 Funkcje DNS.................................................................................................................. 244 Funkcje gniazd............................................................................................................... 245 Funkcje daty i czasu ............................................................................................................. 245 Jeżeli nie znasz daty ani czasu........................................................................................ 246 Jeżeli już odczytałeś datę i czas...................................................................................... 247 Funkcje konwersji kalendarza .............................................................................................. 247 Podsumowanie...................................................................................................................... 249 Rozdział 14. Styl PHP..............................................................................................251 Zalety prawidłowego stylu ................................................................................................... 251 Czytelność............................................................................................................................ 252 Komentarze.................................................................................................................... 256 Nazwy zmiennych i plików............................................................................................ 257 Łatwość konserwacji............................................................................................................ 259 Unikaj „magicznych liczb"............................................................................................. 259 Funkcje........................................................................................................................... 260
  • 12. 12_________________________________________________PHP 4. Biblia Pliki dołączane............................................................................................................... 260 Interfejs obiektowy......................................................................................................... 262 Solidność.............................................................................................................................. 263 Niedostępność usługi...................................................................................................... 263 Niespodziewany typ zmiennej........................................................................................ 263 Zwięzłość i wydajność.......................................................................................................... 264 Używaj właściwych algorytmów.................................................................................... 264 Poprawianie wydajności................................................................................................. 264 Zwięzłość: zmniejszanie................................................................................................. 265 Wskazówki na temat zwięzłości..................................................................................... 266 Tryb HTML, czy PHP? ........................................................................................................ 268 Oddzielanie kodu od projektu............................................................................................... 274 Funkcje........................................................................................................................... 274 Arkusze stylów w PHP................................................................................................... 274 Szablony i spójność stron............................................................................................... 275 Podsumowanie...................................................................................................................... 276 Rozdział 15. Podstawowe pułapki PHP.....................................................................277 Problemy związane z instalacją............................................................................................ 277 Źródło pliku wyświetlane w przeglądarce...................................................................... 278 Blok PHP pokazuje się jako tekst; przeglądarka chce zapisać plik ................................ 278 Nieodnaleziony serwer lub niemożliwe wyświetlenie strony......................................... 278 Problemy z wyświetlaniem................................................................................................... 279 Całkowicie pusta strona.................................................................................................. 279 Niekompletna lub nieprawidłowa strona........................................................................ 279 Kod PHP pokazuje się w przeglądarce........................................................................... 281 Niepowodzenie przy ładowaniu strony................................................................................. 282 Nieodnaleziona strona.................................................................................................... 282 Nieudane otwarcie pliku do włączenia........................................................................... 283 Błędy analizy składni............................................................................................................ 283 Komunikat błędu składni................................................................................................ 283 Brakujący średnik........................................................................................................... 284 Brak znaku $ .................................................................................................................. 284 Nieprawidłowa zmiana trybu.......................................................................................... 285 Nieoznaczone apostrofy................................................................................................. 285 Inne błędy składni.......................................................................................................... 286 Uprawnienia do plików......................................................................................................... 286 Błąd HTTP nr 403 .......................................................................................................... 286 Brak dołączanych plików ..................................................................................................... 286 Ostrzeżenie przy włączaniu pliku................................................................................... 287 Nieprzypisane zmienne......................................................................................................... 287 Zmienna nie pokazuje się w wynikowym ciągu............................................................. 287 Jak zachowują się niezainicjowane zmienne.................................................................. 288 Problemy z wielkością liter............................................................................................ 288 Problemy z zasięgiem..................................................................................................... 288 Problemy z funkcjami........................................................................................................... 289 Wywołanie niezdefiniowanej funkcji............................................................................. 289 Nie można ponownie zadeklarować funkcji................................................................... 290 Nieprawidłowa liczba argumentów................................................................................ 290 Błędy matematyczne............................................................................................................. 290 Ostrzeżenie o dzieleniu przez zero ................................................................................. 290 Niespodziewane wyniki działań..................................................................................... 291 NaN (lubNAŃ).............................................................................................................. 291
  • 13. Spis treści___________________________________________________13 Przekroczenie czasu oczekiwania......................................................................................... 292 Podsumowanie...................................................................................................................... 292 Część II PHP i bazy danych ............................................................297 Rozdział 16. Wybór bazy danych dla PHP .................................................................299 Czemu używamy baz danych?.............................................................................................. 299 Unikanie redundancji..................................................................................................... 300 Unikanie nudnego programowania................................................................................. 300 Szukanie......................................................................................................................... 300 Bezpieczeństwo..............................................................................................................301 Architektura wielowarstwowa........................................................................................ 301 Wybór bazy danych.............................................................................................................. 302 Możesz nie mieć wyboru................................................................................................ 302 Plikowe, relacyjne i obiektowo-relacyjne bazy danych.................................................. 302 ODBC/JDBC kontra własne API................................................................................... 303 Zmiana bazy danych....................................................................................................... 304 Przegląd zaawansowanych funkcji....................................................................................... 304 GUI.................................................................................................................................304 Podzapytania.................................................................................................................. 304 Złożone złączenia........................................................................................................... 305 Wielowątkowość i blokowanie....................................................................................... 305 Transakcje...................................................................................................................... 305 Procedury i wyzwalacze................................................................................................. 306 Klucze obce i więzy integralności.................................................................................. 306 Replikacja bazy danych.................................................................................................. 306 Bazy danych obsługiwane przez PHP................................................................................... 307 Wybieramy MySQL.............................................................................................................307 Podsumowanie...................................................................................................................... 308 Rozdział 17. Samouczek SQL...................................................................................311 Standardy SQL ..................................................................................................................... 311 Podstawowe wyrażenia SQL................................................................................................ 312 SELECT......................................................................................................................... 312 INSERT.......................................................................................................................... 315 UPDATE........................................................................................................................ 316 DELETE.........................................................................................................................316 Projekt bazy danych.............................................................................................................. 316 Użycie połączeń do bazy danych.......................................................................................... 319 Bezpieczeństwo i uprawnienia.............................................................................................. 319 Ustawianie uprawnień.................................................................................................... 320 Przechowywanie haseł w innym miejscu ....................................................................... 320 Użycie formularzy PHP do sprawdzania haseł............................................................... 321 Tworzenie kopii bezpieczeństwa.................................................................................... 322 Podsumowanie...................................................................................................................... 322 Rozdział 18. Funkcje PHP i MySQL ..........................................................................325 Łączenie z MySQL............................................................................................................... 325 Tworzenie zapytań w MySQL.............................................................................................. 326 Pobieranie wyniku................................................................................................................ 327 Pobieranie opisu danych....................................................................................................... 330 Korzystanie z wielokrotnych połączeń................................................................................. 330 Kontrola błędów................................................................................................................... 332 Tworzenie baz danych MySQL za pomocą PHP.................................................................. 332
  • 14. 14_________________________________________________PHP 4. Biblia Funkcje MySQL................................................................................................................... 333 Podsumowanie...................................................................................................................... 335 Rozdział 19. Wyświetlanie zapytań w tabelach .........................................................337 Tabele HTML i tabele bazy danych...................................................................................... 338 Przekształcenie jeden w jeden........................................................................................ 338 Przykład: wyświetlanie jednej tabeli.............................................................................. 338 Przykładowe tabele......................................................................................................... 340 Ulepszanie wyświetlania................................................................................................ 341 Złożone odwzorowania......................................................................................................... 343 Wiele zapytań albo skomplikowane wyświetlanie ......................................................... 344 Użycie kilku zapytań...................................................................................................... 345 Przykład skomplikowanego wyświetlania...................................................................... 346 Tworzenie przykładowych tabel........................................................................................... 348 Podsumowanie...................................................................................................................... 350 Rozdział 20. Tworzenie formularzy z zapytań.............................................................351 Formularze HTML ............................................................................................................... 351 Samoprzetwarzanie...............................................................................................................352 Obsługa formularzy.............................................................................................................. 353 Formularze zależne od zmiennych........................................................................................ 356 TEXT i TEXTAREA......................................................................................................356 CHECKBOX..................................................................................................................358 RADIO...........................................................................................................................359 SELECT.........................................................................................................................359 Formularze zależne od zapytań............................................................................................. 361 Podsumowanie...................................................................................................................... 362 Rozdział 21. Dziennik sieciowy ................................................................................363 Dlaczego dziennik?............................................................................................................... 363 Najprostszy dziennik ............................................................................................................ 364 Wprowadzanie danych przez HTTP..................................................................................... 368 Dołączenie bazy danych....................................................................................................... 370 Możliwe rozszerzenia........................................................................................................... 375 Podsumowanie...................................................................................................................... 376 Rozdział 22. Sieciowe głosowanie............................................................................377 Zadania systemu................................................................................................................... 377 Cele systemu.................................................................................................................. 378 Struktura......................................................................................................................... 378 Obsługa bazy danych...................................................................................................... 379 Zbieranie głosów.................................................................................................................. 379 Wyświetlanie sumarycznych wyników................................................................................. 383 Nadużycia i skalowanie.................................................................................................. 387 Podsumowanie...................................................................................................................... 387 Rozdział 23. Styl i efektywność rozwiązań na podstawie PHP i bazy danych ..............389 Połączenia — ograniczanie i powtórne użycie ..................................................................... 390 Przykład nieprawidłowego użycia: jedno połączenie na wyrażenie ............................... 390 Kilka wyników nie wymaga kilku połączeń................................................................... 391 Trwałe połączenia........................................................................................................... 391 Przenoszenie pracy na serwer bazy danych.......................................................................... 392 Bazajest szybsza od ciebie............................................................................................. 392 Przykład nieprawidłowego użycia: pętla zamiast warunku ............................................ 393
  • 15. Spis treści__________________________________________________15 Tworzenie pól daty i czasu............................................................................................. 394 Szukanie ostatnio wstawionego wiersza......................................................................... 395 Podsumowanie...................................................................................................................... 397 Rozdział 24. Pułapki tandemu PHP-baza danych .......................................................399 Brak połączenia.................................................................................................................... 399 Problemy z uprawnieniami................................................................................................... 402 Nieoznaczone apostrofy........................................................................................................ 403 Nieprawidłowe zapytania SQL............................................................................................. 405 Pomyłki w nazwach........................................................................................................ 407 Pomyłki przy przecinkach.............................................................................................. 407 Ciągi nieotoczone apostrofami....................................................................................... 407 Niezainicjowane zmienne............................................................................................... 407 Zbyt mało danych, zbyt dużo danych ................................................................................... 408 Kontrola poprawności........................................................................................................... 409 Podsumowanie...................................................................................................................... 409 Część III Techniki zaawansowane....................................................^! Rozdział 25. Sesje...................................................................................................413 Czym są sesje?...................................................................................................................... 413 Co stanowi problem?...................................................................................................... 413 Dlaczego się tym zajmujemy?........................................................................................ 414 Alternatywy sesji ..................................................................................................................414 Adres IP.......................................................................................................................... 414 Ukryte zmienne.............................................................................................................. 415 Cookie............................................................................................................................ 416 Jak działają sesje w PHP....................................................................................................... 416 Uaktywnianie sesji w PHP ............................................................................................. 417 Rejestrowanie zmiennych w sesji................................................................................... 418 Gdzie są przechowywane dane?..................................................................................... 419 Funkcje obsługi sesji............................................................................................................ 420 Przykładowy kod sesji.......................................................................................................... 422 Zagadnienia konfiguracji...................................................................................................... 423 Pułapki i wykrywanie usterek............................................................................................... 423 Podsumowanie...................................................................................................................... 426 Rozdział 26. Cookie i HTTP......................................................................................427 Cookie.................................................................................................................................. 427 FunkcjasetcookieQ........................................................................................................428 Przykłady........................................................................................................................428 Usuwanie cookie............................................................................................................ 430 Odczytywanie cookie..................................................................................................... 431 Zmienne GET, POST i cookie........................................................................................ 432 Pułapki cookie................................................................................................................ 435 Wysyłanie nagłówków HTTP............................................................................................... 437 Przykład: przekierowanie............................................................................................... 437 Przykład: uwierzytelnianie HTTP .................................................................................. 438 Pułapki związane z nagłówkami..................................................................................... 439 Podsumowanie...................................................................................................................... 439 Rozdział 27. PHP i JavaScript ..................................................................................441 Tworzenie kodu JavaScript w PHP....................................................................................... 441 Pojedynek obiektów....................................................................................................... 442 PHP nie analizuje wysyłanych danych........................................................................... 442 Kiedy używać JavaScript............................................................................................... 444
  • 16. 16_________________________________________________PHP 4. Biblia PHP jako koło zapasowe do JavaScript................................................................................ 444 JavaScript statyczny kontra dynamiczny.............................................................................. 445 Dynamiczna generacja formularzy................................................................................. 446 Przesyłanie danych z JavaScript do PHP........................................................................ 450 Podsumowanie...................................................................................................................... 452 Rozdział 28. E-mail..................................................................................................455 Informacje na temat architektury e-mail............................................................................... 455 Model systemu e-mail.................................................................................................... 456 Pobieranie poczty za pomocą PHP ....................................................................................... 460 Tworzenie przez zaniechanie.......................................................................................... 461 Tworzenie przez przykład .............................................................................................. 461 Tworzenie przez upiększanie.......................................................................................... 461 Wysyłanie poczty za pomocąPHP ....................................................................................... 462 Konfiguracja Windows................................................................................................... 462 Konfiguracja Unixa........................................................................................................ 462 Funkcja maił................................................................................................................... 462 Więcej na temat aplikacji pocztowych.................................................................................. 464 Wysyłanie poczty z formularza...................................................................................... 464 Wysyłanie poczty przy użyciu bazy danych................................................................... 466 Własna aplikacja pocztowa w PHP ................................................................................ 466 Podsumowanie...................................................................................................................... 468 Rozdział 29. PHP i XML...........................................................................................469 Co tojest XML?...................................................................................................................469 Praca z XML......................................................................................................................... 472 Dokumenty i DTD................................................................................................................ 472 Struktura DTD................................................................................................................474 Analizatory kontrolujące i nie kontrolujące poprawności.............................................. 476 DOM kontra SAX................................................................................................................. 477 SAX................................................................................................................................ 477 DOM.............................................................................................................................. 478 Funkcje PHP dla DOM.........................................................................................................478 SAX................................................................................................................................ 480 Użycie SAX.................................................................................................................... 481 Opcje SAX.....................................................................................................................482 Funkcje PHP dla SAX .......................................................................................................... 483 Przykładowa aplikacja SAX................................................................................................. 486 Pułapki i wyszukiwanie błędów ........................................................................................... 491 Podsumowanie...................................................................................................................... 492 Rozdział 30. Programowanie obiektowe w PHP ........................................................493 Jak dobrejest programowanie obiektowe?........................................................................... 494 Terminologia programowania obiektowego................................................................... 494 Obiekty, klasy i typy w PHP .......................................................................................... 495 Atrybuty ......................................................................................................................... 496 Funkcje........................................................................................................................... 496 Konstruktory .................................................................................................................. 497 Dziedziczenie.................................................................................................................497 Przesłanianie .................................................................................................................. 498 Przeciążanie.................................................................................................................... 499 Zasięg.............................................................................................................................499 Przypisywanie, aliasy i referencje .................................................................................. 500 Wyświetlanie i drukowanie obiektów ............................................................................ 502 Przeglądanie...................................................................................................................503
  • 17. Spis treści ________________________________________________17 Funkcje przeglądania typów i klas........................................................................................ 503 Serializacja obiektów............................................................................................................ 507 Zewnętrzne interfejsy: COM, Java i CORBA....................................................................... 508 COM i DCOM................................................................................................................509 Przykładowa aplikacja obiektowa......................................................................................... 510 Podsumowanie...................................................................................................................... 513 Rozdział 31. Bezpieczeństwo i kryptografia ..............................................................515 Możliwe ataki....................................................................................................................... 516 Zmiana zawartości witryny ............................................................................................ 516 Dostęp do kodu źródłowego........................................................................................... 518 Odczyt dowolnego pliku................................................................................................. 519 Uruchamianie dowolnych programów ........................................................................... 521 Wirusy i inne e-robaki.................................................................................................... 523 Bezpieczeństwo poczty .................................................................................................. 523 Szyfrowanie.......................................................................................................................... 524 Szyfrowanie kluczem publicznym.................................................................................. 524 Szyfrowanie pojedynczym kluczem............................................................................... 526 Szyfrowanie cookie........................................................................................................ 527 Mieszanie ....................................................................................................................... 529 Cyfrowe podpisywanie plików....................................................................................... 530 Secure Server Layer ....................................................................................................... 531 Witryny podejmujące problematykę bezpieczeństwa........................................................... 531 Podsumowanie...................................................................................................................... 532 Rozdział 32. Konfiguracja i dostrajanie.....................................................................535 Podglądanie zmiennych środowiska..................................................................................... 535 Poznajemy konfigurację PHP............................................................................................... 535 Opcje kompilacii............................................................................................................ 536 Opcje kompilacji dla postaci CGI .................................................................................. 541 Pliki konfiguracyjne Apache .......................................................................................... 543 Plikphp.ini..................................................................................................................... 545 Poprawianie wydajności PHP............................................................................................... 550 Podsumowanie...................................................................................................................... 552 Dodatki............................................................................................553 Dodatek A PHP dla programistów C ......................................................................555 Dodatek B PHP dla programistów ASP ..................................................................561 Dodatek C PHP dla programistów HTML................................................................571 Dodatek D Zasoby Sieci na temat PHP..................................................................579 Słownik ..................................................................................................................587 Skorowidz...............................................................................................................597
  • 19. O Autorach Tim Converse pisał oprogramowanie pomagające w wyborze szalików, odpowiadające na pytania na temat stacji kosmicznych, pobierające notowania giełdowe oraz symulu- jące robienie kolacji. Zdobył dyplom magistra informatyki na University of Chicago. Pracuje teraz w Excite@Home, gdzie zajmuje się wyszukiwarką internetową. Joyce Park posiada dyplom magistra historii University of Chicago; pracowała nad kil- koma witrynami informacyjnymi w PHP, między innymi nagrodzoną MysteryGuide. com. Jej teksty zdobyły uznanie redaktorów oraz czytelników Slashdot, OSOpinion, Li- nux.com i wielu innych na całym świecie. Joyce jest teraz projektantem witryn w firmie Epinions.com.
  • 20. 20 PHP 4. Biblia
  • 21. Przedmowa Witamy w książce P HP 4. Biblial Mimo że jesteśmy stronniczy, wierzymy, że PHP, skryptowy język programowania dla WWW, zajął niszę najłatwiejszego i najbardziej elastycznego narzędzia dla serwerów WWW, pozwalając na tworzenie wspaniałych i bardzo szybkich witryn. Mimo że miliony programistów WWW na całym świecie zwykle mogą się mylić, w tym konkretnym przypadku nie mylą się. PHP 4.0, udostępniony na wiosnę 2000 roku, został, w porównaniu do PHP 3, uzupeł- niony o wiele nowych możliwości, działa dużo szybciej. W książce tej przedstawione są główne możliwości tej wersji programu. Szczegółowe przykłady pokazują, w jaki spo- sób tworzyć witryny WWW przy użyciu PHP. Co to jest PHP? PHP jest językiem skryptowym wbudowywanym w strony WWW, wykonywanym na serwerze. Jest on zgodny z większością najważniejszych serwerów WWW (najbardziej ze znakomitym Apache). PHP pozwala na wbudowanie fragmentów kodu w normalne strony HTML — kodu, który jest interpretowany, gdy strony są przesyłane do użyt- kownika. PHP spełnia rolę „kleju" ułatwiającego łączenie stron WWW z bazami da- nych umieszczonych po stronie serwera. Dlaczego PHP? Odpowiedzi na to pytanie poświęcamy prawie cały rozdział l. Najkrótsza odpowiedź to: jest darmowy, ma duże możliwości, jest niezależny, stabilny, szybki, łatwy do nauki, dobrze zaprojektowany, dobrze współpracuje z innymi produktami. A poza tym mamy dostęp do kodu źródłowego.
  • 22. 22___________________________________________________PHP 4. Biblia Co nowego w PHP 4? PHP 4 zawiera wszystkie funkcje PHP oraz wbudowane wsparcie dla sesji, bardziej spójną analizę składni, nowy typ Boolean oraz wiele nowych funkcji. Rdzeniem ma- szyny skryptowej PHP jest teraz „Zend", który został napisany na nowo, aby zachować spójność oraz zyskać rewelacyjną szybkość działania. PHP to żywy organizm. Oryginalną wersję książki wydrukowano na wiosnę 2000 roku, mniej więcej w tym samym czasie, gdy PHP 4 został oficjalnie wydany. Przykłady za- warte w niej były intensywnie testowane za pomocą PHP 3 oraz różnych wersji beta PHP 4. Mimo, że opisaliśmy większość głównych funkcji PHP 4, wciąż pojawiają się nowe. Dla kogo jest ta książka Książka jest przeznaczona dla każdego, kto chce tworzyć witryny WWW, bardziej zło- żone, niż pozwala HTML. Mamy szczególnie na myśli trzy grupy: * projektantów stron WWW, którzy znają HTML i chcą rozpocząć tworzenie dynamicznych witryn WWW; * zaawansowanych programistów (C, Java, Perl itp.), ale bez doświadczenia w projektowaniu dla WWW, którzy chcą szybko nabrać biegłości w progra- mowaniu dla serwerów WWW; * programistów WWW, którzy używali innych technik programowania (np.: Ac- tive Server Pages, Java Server Pages, Cold Fusion) i chcą zmienić lub po pro- stu poznać inne narzędzie. Zakładamy, że czytelnik zna język HTML i ma podstawową wiedzę na temat sposobu działania Sieci, ale nie oczekujemy żadnego dodatkowego doświadczenia programi- stycznego. Aby zaoszczędzić czas bardziej zaawansowanym programistom, dodaliśmy wiele notatek i komentarzy porównujących PHP z innymi językami i wskazujących, które rozdziały i fragmenty mogą być przez nich pominięte. Na koniec przejrzyj nasze dodatki, które zawierają specyficzne porady dla programistów C, ASP oraz projektan- tów HTML. Książka nie jest podręcznikiem Grupa dokumentalistów PHP przygotowała świetny podręcznik, pod adresem http:// www.php.net, udostępniany oczywiście przez PHP. Książka ta nie jest takim podręczni- kiem, ani nawetjego namiastką. Uważamy ją za uzupełnienie podręcznika.
  • 23. Przedmowa__________________________________________________23 Podręcznik jest obszerny, obejmuje wszystkie aspekty i funkcje języka, jednak pozba- wiony jest szczegółów. My, w przeciwieństwie, mamy możliwość skupienia się na te- matach, które są najczęściej poruszane lub najmniej zrozumiałe, możemy wyjaśniać i dawać długie przykłady. Jak zorganizowanajest książka Książka jest podzielona na trzy części: Część l Podstawy Rozdziały od 1. do 4. stanowią wprowadzenie do PHP i opisują zagadnienia, które mu- sisz poznać przed rozpoczęciem pracy. Rozdziały od 5. do 13. to przewodnik traktujący o głównych aspektach PHP (oprócz współpracy z bazami danych): składni, typach danych, podstawowych funkcjach wbu- dowanych. Możesz opuścić ten fragment i używać go jak skorowidza. Rozdziały 14. i 15. to podręcznik stylu PHP oraz opis najczęściej spotykanych przy programowaniu pułapek. Część II PHP i bazy danych Rozdziały 16. i 17. dają ogólną orientację na temat programowania dla WWW przy użyciu baz danych SQL. Znajdują się tutaj porady, w jaki sposób wybrać najlepszy system baz danych. Rozdział 18. poświęcony jest funkcjom PHP dla MySQL — systemu baz danych, który będziemy omawiali aż do końca drugiej części książki. Rozdziały od 19. do 22. to szczegółowe i bogate w przykłady analizy przypadków współpracy PHP z bazami danych. W rozdziałach 23. i 24. znajdują się wskazówki i opisy pułapek w pracy z PHP i bazami danych. Część III Techniki zaawansowane W każdym z rozdziałów od 25. do 32. opisujemy bardziej zaawansowane, niezależne te- maty. Omawiamy: nowe wbudowane funkcje obsługi sesji, użycie mechanizmu cookie, generowanie kodu Javascript, przyłączanie PHP do programów pocztowych, wsparcie dla XML, programowanie obiektowe, bezpieczeństwo i opcje konfiguracji.
  • 24. 24_________________________________________________PHP 4. Biblia Konwencje używane w książce Używamy czcionki o stałej szerokości do zaznaczenia literałów kodu PHP. Fragmenty kodu zawarte w tekście wyglądają w następujący sposób, natomiast oddzielny frag- ment kodu wygląda tak: print("tak"}; Jeżeli wygląd strony WWW wygenerowanej przez PHP jest ważny, zamieszczamy ry- sunek z kopią ekranu; gdy nie jest — zamieszczamy źródło strony wygenerowanej przez PHP przy użyciu czcionki o stałej szerokości. Jeżeli chcemy odróżnić wynik skryptu PHP widoczny w przeglądarce od aktualnego wyniku PHP (który tłumaczy przeglądarka), nazywamy go „wynikiem z przeglądarki". Jeżeli zaznaczamy fragment kodu kursywą, oznacza to, że to miejsce należy odpowied- nio zmienić, a nie traktować tekst dosłownie. Jeżeli w normalnym tekście wyróżniamy wyraz za pomocą kursywy, oznacza to, że wyraz jest niezbyt znany i zdefiniowany w słowniku. Znaczenie ikon Ikony, przedstawione poniżej, są rozrzucone w całym tekście. Ich zadaniem jest wyraź- ne zaznaczenie wagi informacji. Wskazówki oznaczają sztuczki lub techniki PHP, które nie są oczywiste, a mogą pozwolić na wykonanie jakiejś czynności łatwiej i efektywniej. Ikona notatki zwykle oznacza dodatkowe informacje lub wyjaśnienia, które jednak można zignorować, jeżeli nie wydają się interesujące. Notatki w tej książce są często kierowane do określonej grupy czytel- ników, którzy znają konkretny język programowania lub technologię. Ikona ostrzeżenia wskazuje coś, co może być niezrozumiałe lub źle użyte, i w efekcie może sprawiać programistom kłopoty. Ikona nowej funkcji oznacza nową możliwość w PHP 4. Używamy tej ikony, aby skierować czytelnika do pokrewnej informacji w innym rozdziale lub innej części książki.
  • 25. Przedmowa__________________________________________________25 Witryna WWW i przykłady kodu Wszystkie przykłady z tej książki znajdują się pod adresem: ftp://ftp.helion.pl/przyklady/php4bi.zip Dodatkowe materiały znajdują się na stronie WWW pod adresem: http://wvw. troutworks. com/phpbook
  • 26. .26________________________________________ PHP 4. Biblia ,.»»*».,„„,„„„.„-u,*,
  • 28.
  • 29. Rozdział 1. Dlaczego PHP? W tym rozdziale: + Co to jest PHP? «• Historia PHP *• Dlaczego kochamy PHP? * Wyprzedzamy konkurencję z PHP Pierwszy rozdział zawiera wprowadzenie do PHP. Spróbujemy odpowiedzieć tu na kil- ka często stawianych pytań na temat PHP, takich jak: „Co to jest" lub „Jakie jest w porównaniu do podobnych technologii". Większość rozdziału zajęło wymienianie powodów, dlaczego kochamy PHP. Jeżeli jesteś inżynierem szukającym argumentów, aby przekonać szefa lub pytających „co to jest to P-coś-tam", rozdział ten dostarczy podstawowych odpowiedzi. Co to jest PHP? PHP pochodzi od Hypertext Preprocessor. Właściwie produkt ten wcześniej nazywał się Personal Home Page Tools, jednak gdy jego zakres rozszerzył się, w drodze głoso- wania została wybrana nowa, bardziej właściwa nazwa. Dla pliku PHP można używać dowolnego rozszerzenia, ale zalecane są .php, ,php3 oraz .phtml. Aktualnym numerem wersji PHPjest 4, nazywany PHP 4 lub po prostu PHP. PHP jest językiem skryptowym wbudowywanym w HTML, wykonywanym na serwerze. Inne produkty w tej niszy to: Active Server Pages Microsoftu, ColdFusion firmy Allaire oraz Java Server Pages — Sun. PHP jest czasami nazywany „darmowym ASP", ponieważ sposóbjego działaniajest bardzo podobny do produktu (koncepcji) Microsoftu. W następnym rozdziale prześledzimy dokładnie koncepcję skryptów wykonywanych na serwerze, a w tej chwili możesz myśleć o nich jak o zestawie znaczników superHTML,
  • 30. 30__________________________________________Część l » Podstawy PHP które pozwalają dodać funkcje obsługi serwera do stron WWW. Możesz np. użyć PHP do tworzenia na bieżąco skomplikowanych stron WWW lub do uruchamiania programu do obciążania karty kredytowej, gdy klient złoży zamówienie. Ściśle mówiąc, PHP ma niewiele wspólnego z układem strony, zdarzeniami lub czym- kolwiek innym, co nadaje wygląd stronom WWW. Właściwie wszystko, co robi PHP, jest niewidoczne dla użytkownika. Ten, kto ogląda stronę PHP, nie jest w stanie powiedzieć, że strona nie została napisana w HTML, ponieważ wynikiem PHPjest kod HTML. PHP jest oficjalnym modułem do serwera HTTP Apache, który jest wiodącym, bezpłat- nym serwerem WWW, napędzającym około 55% serwerów sieci. Oznacza to, że ma- szyna skryptowa PHP jest wbudowana w serwer WWW, co powoduje szybszą obsługę stron. Podobnie jak serwer Apache PHP jest niezależny od platformy, działa w kilku ro- dzajach systemu Unix oraz w Windows. Wszystkie projekty prowadzone przez Apache Software Foundation — włączając w to PHP — są dostępne na zasadzie open source (mamy dostęp do kodu źródłowego). Różne wersje PHP zebrały przez kilka lat wiele pochwał i nagród. PHP 3 był w 1999 r. finalistą konkursu LinuxWorld Editor's Choice Awards (w kategorii biblioteka — na- rzędzie programistyczne), w 1998 r. wygrał z ColdFusion CNet Builder.com Product Awards (w kategorii najlepsze narzędzie skryptowe). Kombinacja PHP 3/MySQL wy- grała w konkursie Database of the Year na Web '98. Nieźle, jak na program bez działu PR, bez reklam i bez agencji reklamowej. Historia PHP Rasmus Lerdorf— programista, członek zespołu Apache —jest twórcą i siłą napędową PHP. Pierwszą część PHP napisał na własny użytek w 1994 roku. Był to interfejs Perl CGI, który pomagał śledzić, kto odwiedza stronę domową. W następnym roku, w od- powiedzi na żądania użytkowników, którzy zaangażowali się w ten projekt, skompleto- wał pakiet nazwany Personal Home Page Tools (znany również jako PHP Construction Kit). Niebawem została wydana wersja 2. o nazwie PHP/FI, zawierająca Form Inter- preter, narzędzie do przetwarzania zapytań SQL. W połowie 1997 r. około witryn na całym świecie 50 000 używało PHP. Obsługa prze- kroczyła możliwości jednej osoby, nawet tak energicznej jak Rasmus. Niewielki zespół programistów rozpoczął projekt na zasadzie open source, korzystając z pomocy pro- gramistów i użytkowników z całego świata. Dwóch izraelskich programistów, Zeev Su- raski i Andi Gutmans (autorów analizatora składni do PHP 3 oraz PHP 4), rozszerza i uogólnia go pod szyldem Zend.com (od ich imion, Zeev i Andi). W czwartym kwartale 1998 r. nastąpił gwałtowny rozwój PHP, który korzystając z za- sady open source cieszył się masowym zainteresowaniem. W październiku 1998 r. około 100 000 różnych domen używało w jakiś sposób PHP. Rok później przełamana została bariera l 000 000 domen. W czasie pisaliśmy tę książkę, liczba ta eksplodowała do około dwóch milionów.
  • 31. Rozdział 1. » Dlaczego PHP?_______________________________________31^ Dlaczego kochamy PHP? Jest wiele powodów, dla których kochamy PHP. W tym rozdziale poznasz niektóre z nich. PHP jest darmowy PHP nic nie kosztuje. Nic na początku, nic w trakcie pracy aplikacji. Czy wspominaliśmy, że zestaw Apache+PHP+MySQL działa świetnie na niezbyt mocnym, tanim sprzęcie, w przypadku którego nawet nie możesz myśleć o instalacji IIS+ASP+SQL Server? Dla porównania w tabeli 1.1 zamieściliśmy średnie ceny detaliczne podobnych pro- duktów. Tabela 1.1. Porównanie wydatków Pozycja Tworzenie Serwer RDBMS Wsparcie ASP 0-2 000 zł 2 500 zł 5000-20000zł 0 - 1 000 zł ColdFusion ~1 500 zł ~5 000 zł 0-40 000 zł 300 zł JSP Ozł 0-2 200 zł 40 000 zł 300 zł PHP Ozł Ozł Ozł Ozł Oprogramowanie open source: nie bój się taniego W zasadzie można by mieć wątpliwości na temat jakości i żywotności bezpłatnego oprogramowania. Prawdopodobnie do tej opinii przyczyniło się oprogramowanie, za które nie trzeba płacić, zwane freeware, shareware lub Free Software, postrzegane jako należące do jednej z trzech kategorii: * programy wypełniające małe niekomercyjne nisze; 4 programy wykonujące ciężkie niskopoziomowe zadania; + programy dla ludzi o dziwnych poglądach socjo-politycznych. Czas na zmianę niektórych stereotypów. Jesteśmy w trakcie zmian w przemyśle two- rzenia programów. Wiele (jeżeli nie większość) głównych programów dla konsumen- tówjest dziś rozprowadzanych bez opłat: programy pocztowe, przeglądarki WWW, gry, czy nawet pełne pakiety biurowe są rozdawane tak szybko, jak tylko ich twórcy potrafią utworzyć wersję WWW lub ustawić serwer FTP. Oprogramowanie konsumenckie jest coraz częściej postrzegane jako źródło strat, jak kolorowy kwiatek przyciągający pszczoły — innymi słowy, sposób na sprzedanie większej liczby serwerów, systemów operacyjnych, połączeń, reklam lub akcji. Przez to cena programu nie odzwierciedla je- go jakości.
  • 32. 32__________________________________________Część l » Podstawy PHP W świecie serwerów idea open source oddziaływuje jeszcze silniej. Takie produkty nie tylko konkurują z komercyjnymi, ale wydaje się, że są poza konkurencją. Nie musisz nam wierzyć! Jeżeli nie jesteś przekonany, więcej dowiesz się na witrynach: http://www. opensource. org http://www.fsf.org Licencja PHP Schemat licencjonowania typu open source i Free Software gwarantuje, że program jest bezpłatny. Schemat ten jest najbardziej znany pod nazwą GPL (Gnu General Public Li- cense) lub „copyleft". PHP był rozprowadzany na zasadach licencji GPL i własnej — do wyboru przez każdego użytkownika. Ostatnio jednak całość programu rozprowadzana jest na podstawie liberalnej licencji PHP 4, a Zend, jako osobny produkt, jest dystrybu- owany na zasadach licencji Q Public license (klauzula jest stosowana, gdy Zend zosta- nie oddzielony od PHP i ktoś będzie chciał go sprzedawać). Dokładne objaśnienie warunków obu licencji można przeczytać pod adresami: http://www.php. net/license http://www. troll, no/ąpl/annotated. html Większość użytkowników może bezpłatnie ściągnąć PHP, niektórzy zapłacą za niego, jeżeli wchodzi w skład dystrybucji Linuksa, książki lub innego produktu. W takim wy- padku pewnie będziesz miał mieszane uczucia na temat naszych zapewnień, że PHP nic nie kosztuje. Możemy to wytłumaczyć: mimo że nie musisz płacić za większość pro- gramów typu open source, zapłacisz za dostarczenie oprogramowania w bardziej wy- godnej postaci — nagranej na dysk i dostarczonej do klienta. Możesz również zarabiać na dostarczaniu usług biorąc ryzyko, jakiego nie podejmuje zespół programistów PHP. Na przykład zagwarantujesz, że każda kopia będzie pozbawiona wirusów lub będzie odpowiedniej jakości, podejmując ryzyko pozwania przez klientów, którzy dostali uszkodzone CD-ROM-y. Zwykle użytkownicy programów open source mogą wybrać optymalną wersję spośród różnych propozycji: bezpłatnie i bez gwarancji, drogie, ale z świetnym serwisem lub coś pomiędzy. Nie ma jeszcze zorganizowanego serwisu ani wsparcia dla PHP (przy- puszczalnie będzie to jeden z dodatków do Zend). PHP jest łatwy PHP jest łatwy do nauczenia się, w porównaniu do innych produktów. W przeciwień- stwie do Java Server Pages lub CGI opartego najęzyku C, PHP nie wymaga osiągnięcia biegłości w podstawowych językach programowania do napisania prostych odwołań do bazy danych. W przeciwieństwie do składni języka Perl, który jest żartobliwie nazywa- ny językiem „tylko do zapisu", składnia PHP jest prosta do analizy i łatwa do zrozu- mienia przez programistę. W przeciwieństwie do Active Server Pages, PHP nie zmusza do uczenia się dwóch różnych języków!
  • 33. Rozdział 1. » Dlaczego PHP?_______________________________________33 Istnieje wiele predefmiowanych, bardzo użytecznych, a specyficznych funkcji (jak funkcje służące do łączenia się z bazami Oracle lub pobierania poczty z serwera IMAP). Dostępnych jest również wiele gotowych skryptów, do których możesz zajrzeć w trak- cie nauki PHP. Właściwie używanie PHP jest możliwe dzięki zmianom w istniejących skryptach bez potrzeby pisania od początku. Oczywiście musisz znać podstawowe za- sady, ale możesz uniknąć wielu frustrujących i zabierających czas pomyłek. Musimy jednak ostrzec: „łatwy" może oznaczać co innego dla różnych użytkowników. Dla niektórych projektantów WWW oznac/a środowisko graficzne, używające technik „przenieś i upuść" lub „dostaniesz, co widzisz". Aby być naprawdę wydajnym, musisz umieć ręcznie tworzyć strony HTML. Można oczywiście używać narzędzi WYSIWYG do zaprojektowania witryny, sformatowania stron i dodania interakcji z użytkownikiem przed dodaniem kodu PHP do źródeł. Są również sposoby, które opisujemy w rozdziale 3., pozwalające dodać funkcje PHP do ulubionego środowiska projektowania. Jednak nie można w pełni korzystać z możliwości PHP bez patrzenia na kod źródłowy. Większość zaawansowanych użytkowników PHP (włączając w to członków zespołu tworzącego) to „zatwardziali koderzy". Twierdzą np., że ręcznie pisany kod jest piękny, czysty i maksymalnie zgodny z przeglądarką i dlatego jest jedynie słuszny — nie wa- hają się gwałtownie tego wyrażać. Społeczność PHP zapewnia pomoc i wymienia się tajnikami języka przeważnie za pośrednictwem poczty elektronicznej, więc jeśli chcesz z nich skorzystać, musisz umieć czytać czysty kod źródłowy. Niektórzy użytkownicy narzędzi WYSIWYG czasami proszą członków listy dyskusyjnej o pomoc w rozpozna- niu problemu, ale obejrzeli stronę zamiast kodu źródłowego. Powtórzmy jeszcze raz, że PHP jest łatwy. Jest tylko nieco bardziej wymagający niż HTML, ale chyba łatwiejszy niż JavaScript czy ASP i dużo mniej złożony koncepcyjnie niż JSP. PHP można wbudować PHP można wbudować w HTML. Inaczej mówiąc, strony PHP są zwykłymi stronami HTML, które „przełączają się" w tryb PHP tylko, gdy jest to konieczne. Popatrzmy na przykład: <HTML> <HEAD> <TITLE> Powitanie</TITLE> </HEAD> <BODY> <P> Cześć, <?php /* Przełączamy się w tryb PHP. Zamiast zmiennych, w następnych trzech liniach można łatwo użyć danych z bazy danych*/ $firstname="Mata"; $lastname="Hari"; Stitle = "Ms."; PRINT("$title Slastname"); // wracamy do HTML ?>. Czy mogę nazywać cię <?php PRINT("$firstname"};?>?</P> </BODY> </HTML>
  • 34. 34__________________________________________Część l » Podstawy PHP Gdy klient zażąda tej strony, serwer WWW przetworzy ją. Oznacza to, że przejrzy ją od początku do końca, szukając sekcji PHP, które spróbuje przetworzyć. Analizator składni pobierze wszystkie przypisane zmienne (oznaczone znakiem $) i spróbuje wstawić je do późniejszych wyrażeń (w tym przypadku do funkcji print ( ) ) . Jeżeli wszystko się uda, preprocesor zwróci normalną stronę WWW do przeglądarki klienta (rysunek 1.1). Rysunek 1.1. Wynik przetworzonego PHP Jeżeli zerkniesz do kodu źródła strony w przeglądarce, powinieneś zobaczyć coś takiego: <HTML> <HEAD> <TITLE> Powitanie</TITLE> </HEAD> <BODY> <P> Cześć, Ms. Hari. Czy mogę nazywać cię Mata?</P> </BODY> </HTML> Gdybyś napisał to sam, byłoby identycznie. Proste! Możliwość wbudowania PHP w HTML ma wiele pozytywnych konsekwencji: * PHP może być szybko dodany do kodu utworzonego przez edytory WYSIWYG. * PHP pomaga podzielić pracę pomiędzy projektantów i skryptowców. * Nie ma potrzeby przepisywania HTML w języku programowania. * PHP obniża koszty pracy i zwiększa wydajność. Brak kompilacji Prawdopodobnie najlepszą rzeczą w językach skryptowych jest to, że nie muszą być kompilowane do postaci binarnej przed ich testowaniem i użyciem — po prostu napisz i uruchom. PHP jest interpretowany (jak prawie wszystkie najnowsze języki programo- wania), jednak Zend wykonuje czasami ukrytą prekompilację do zwiększenia szybkości działania skryptów.