[PHP] Kompendium Programisty

download [PHP] Kompendium Programisty

of 390

Transcript of [PHP] Kompendium Programisty

Spis TreciSPIS TRECI............................................................................................................................................................ 1 WSTP ...................................................................................................................................................................... 7 Dla kogo jest przeznaczona ta ksika ............................................................................................................... 7 Konwencje .......................................................................................................................................................... 7 Omwienie ksiki.............................................................................................................................................. 7 Od autora ........................................................................................................................................................... 8 Przykady kodu ................................................................................................................................................... 8 CZYM JEST PHP ...................................................................................................................................................... 8 DLACZEGO POWINIENE UY PHP......................................................................................................................... 9 GDZIE SZUKA POMOCY .......................................................................................................................................... 9 PODZIKOWANIA ................................................................................................................................................... 10 O AUTORZE............................................................................................................................................................ 10 ROZDZIA 1. KOMPILACJA I INSTALOWANIE PHP................................................................................ 11 WSTP ................................................................................................................................................................... 11 POBIERANIE PHP................................................................................................................................................... 11 INSTALOWANIE WERSJI BINARNEJ.......................................................................................................................... 11 Binarna instalacja dla Windows ...................................................................................................................... 11 Instalowanie PHP w postaci moduu ISAPI................................................................................................. 12 Uycie PHP jako CGI................................................................................................................................... 14 Inne instalacje binarne..................................................................................................................................... 14 KOMPILOWANIE PHP ............................................................................................................................................ 15 Kompilowanie PHP w Uniksach ...................................................................................................................... 15 Kompilacja moduu CGI .............................................................................................................................. 15 Kompilacja PHP jako statycznie doczanego moduu Apache................................................................... 17 Kompilacja PHP do postaci dynamicznie adowanego moduu Apache ..................................................... 17 Podsumowanie kompilacji PHP w systemach Unix .................................................................................... 18 Kompilowanie PHP w rodowisku Windows ................................................................................................... 18 Podsumowanie kompilacji PHP....................................................................................................................... 20 KONFIGUROWANIE PHP ........................................................................................................................................ 20 Korzystanie z pliku php.ini ............................................................................................................................... 20 Inne metody zmiany konfiguracji PHP............................................................................................................. 21 PODSUMOWANIE ................................................................................................................................................... 22 ROZDZIA 2. JZYK .......................................................................................................................................... 23 WSTP ................................................................................................................................................................... 23 OGLNE INFORMACJE NA TEMAT SKADNI ............................................................................................................ 23 TYPY ..................................................................................................................................................................... 24 Liczby cakowite i zmiennoprzecinkowe ...................................................................................................... 24 Cigi ................................................................................................................................................................. 24 Tablice.............................................................................................................................................................. 25 ZMIENNE I STAE ................................................................................................................................................... 26 Zmienne predefiniowane .................................................................................................................................. 26 Zasig zmiennych ............................................................................................................................................. 30

Stae.................................................................................................................................................................. 31 OPERATORY I KOLEJNO OPERATORW ............................................................................................................... 31 PROGRAMOWANIE PRZEPYWU STEROWANIA ....................................................................................................... 32 if, else, elseif ..................................................................................................................................................... 32 while ................................................................................................................................................................. 32 do .. while ......................................................................................................................................................... 32 for ..................................................................................................................................................................... 33 foreach.............................................................................................................................................................. 33 switch................................................................................................................................................................ 33 break i continue ................................................................................................................................................ 35 include i require ............................................................................................................................................... 36 FUNKCJE ................................................................................................................................................................ 36 Klasy i programowanie obiektowe................................................................................................................... 37 PORWNYWANIE WZORCW ................................................................................................................................. 39 Podsumowanie ................................................................................................................................................. 39 ROZDZIA 3. FORMULARZE I COOKIE....................................................................................................... 40 WSTP ................................................................................................................................................................... 40 OBSUGA FORMULARZY W PHP............................................................................................................................ 41 Skalarne i wielowartociowe elementy formularza.......................................................................................... 41 Alternatywne metody odczytywania wartoci z formularza ............................................................................. 42 Uycie formularzy do przesyania plikw ........................................................................................................ 45 Uycie rysunku jako przycisku wysania danych.............................................................................................. 45 KONTROLA POPRAWNOCI DANYCH FORMULARZA................................................................................................ 46 Kontrola danych za pomoc wyrae regularnych.......................................................................................... 46 Kontrola poprawnoci za pomoc sprawdzania typw.................................................................................... 47 Klasa Validator ................................................................................................................................................ 48 COOKIE ................................................................................................................................................................. 49 WANE ZAGADNIENIA PROGRAMOWANIA DLA WWW .......................................................................................... 50 Obsuga nieprawidowych danych ................................................................................................................... 50 Obsuga i formatowanie wywietlanych danych .............................................................................................. 52 PODSUMOWANIE ................................................................................................................................................... 57 ROZDZIA 4. OPERACJE NA PLIKACH........................................................................................................ 58 WSTP ................................................................................................................................................................... 58 ODCZYT I ZAPIS PLIKW ........................................................................................................................................ 58 UYCIE GNIAZD ..................................................................................................................................................... 59 UYCIE POTOKW ................................................................................................................................................. 60 KLASA FILE ........................................................................................................................................................... 61 PODSUMOWANIE ................................................................................................................................................... 61 ROZDZIA 5. WYSYANIE PLIKW PRZEZ FORMULARZ.................................................................... 62 WSTP ................................................................................................................................................................... 62 WYSYANIE POJEDYNCZEGO PLIKU ....................................................................................................................... 62 PUAPKI ................................................................................................................................................................ 64 PRZESYANIE WIELU PLIKW ................................................................................................................................ 64 BEZPIECZESTWO ................................................................................................................................................. 65 PODSUMOWANIE ................................................................................................................................................... 66 ROZDZIA 6. WSPPRACA Z BAZAMI DANYCH.................................................................................... 67 WSTP ................................................................................................................................................................... 67 WPROWADZENIE ................................................................................................................................................... 67 FUNKCJE BAZ DANYCH .......................................................................................................................................... 67 MYSQL................................................................................................................................................................. 68 2 Spis Treci

Rozpoczynamy prac z MySQL ........................................................................................................................ 68 Uycie MySQL.................................................................................................................................................. 68 ODBC................................................................................................................................................................... 71 Podstawy ODBC .............................................................................................................................................. 71 Instalowanie i kompilowanie unixODBC .................................................................................................... 72 Kompilowanie PHP z obsug unixODBC .................................................................................................. 72 Instalowanie sterownika OOB...................................................................................................................... 72 Konfigurowanie OOB .................................................................................................................................. 72 Korzystanie z ODBC ........................................................................................................................................ 73 PHPLIB ................................................................................................................................................................ 74 PRZECHOWYWANIE DANYCH Z FORMULARZY........................................................................................................ 75 WYKORZYSTANIE MOLIWOCI BAZY DANYCH ..................................................................................................... 77 PODSUMOWANIE ................................................................................................................................................... 78 ROZDZIA 7. SESJE I STAN APLIKACJI....................................................................................................... 80 WSTP ................................................................................................................................................................... 80 PODSTAWY MECHANIZMU SESJI ............................................................................................................................. 80 WBUDOWANY W PHP MECHANIZM ZARZDZANIA SESJAMI .................................................................................. 81 Rozpoczcie pracy z sesjami w PHP ................................................................................................................ 81 Przesyanie identyfikatora sesji bez uycia cookie........................................................................................... 83 Zapisywanie zmiennych sesji w bazie danych .................................................................................................. 85 Inne funkcje i opcje dotyczce sesji.................................................................................................................. 89 UYCIE PHPLIB DO OBSUGI SESJI ....................................................................................................................... 90 TWORZENIE WASNEGO MECHANIZMU SESJI ......................................................................................................... 92 INYNIERIA PROGRAMOWANIA A SESJE ................................................................................................................. 92 PODSUMOWANIE ................................................................................................................................................... 94 ROZDZIA 8. UWIERZYTELNIANIE.............................................................................................................. 95 WSTP ................................................................................................................................................................... 95 PODSTAWOWE UWIERZYTELNIANIE W APACHE ..................................................................................................... 95 AKTUALIZACJA PLIKU .HTACCESS PRZY UYCIU PHP............................................................................................ 97 PODSTAWOWE UWIERZYTELNIANIE ZA POMOC PHP ........................................................................................... 99 KOMPLETNY SYSTEM UWIERZYTELNIANIA OPARTY O PHP ................................................................................. 100 PODSUMOWANIE ................................................................................................................................................. 104 ROZDZIA 9. NIEZALENO OD PRZEGLDARKI ............................................................................. 105 WSTP ................................................................................................................................................................. 105 ROZPOCZYNAMY ................................................................................................................................................. 105 WEWNTRZNE FUNKCJE PHP .............................................................................................................................. 106 Dodatkowe informacje na temat Browscap ................................................................................................... 106 BROWSERHAWK .................................................................................................................................................. 109 WYKORZYSTANIE DANYCH O PRZEGLDARCE..................................................................................................... 113 PODSUMOWANIE ................................................................................................................................................. 114 ROZDZIA 10. URUCHAMIANIE................................................................................................................... 115 WSTP ................................................................................................................................................................. 115 INYNIERIA PROGRAMOWANIA A URUCHAMIANIE ............................................................................................... 115 Projekt aplikacji ............................................................................................................................................. 115 Definiowanie standardw programowania.................................................................................................... 116 Przegld oprogramowania............................................................................................................................. 116 Testowanie...................................................................................................................................................... 117 Uruchamianie................................................................................................................................................. 117 PROGRAMOWANIE DEFENSYWNE ......................................................................................................................... 118 WASNA OBSUGA BDW................................................................................................................................ 122 PHP Kompendium wiedzy 3

ZAAWANSOWANA OBSUGA BDW ................................................................................................................. 125 PODSUMOWANIE ................................................................................................................................................. 129 BIBLIOGRAFIA ..................................................................................................................................................... 130 ROZDZIA 11. PONOWNE WYKORZYSTANIE KODU ............................................................................ 131 WSTP ................................................................................................................................................................. 131 PONOWNE WYKORZYSTANIE KODU A INYNIERIA PROGRAMOWANIA .................................................................. 131 PONOWNE UYCIE ISTNIEJCEGO KODU .............................................................................................................. 132 PHP ................................................................................................................................................................ 132 C/C++ ............................................................................................................................................................ 133 Java ................................................................................................................................................................ 138 Dodawanie obsugi Javy w PHP na *niksach ............................................................................................ 138 Doczanie obsugi Javy w PHP dla Windows .......................................................................................... 139 Opcje konfiguracji Javy.............................................................................................................................. 139 COM ............................................................................................................................................................... 141 Inne metody .................................................................................................................................................... 143 PODSUMOWANIE ................................................................................................................................................. 144 BIBLIOGRAFIA ..................................................................................................................................................... 144 ROZDZIA 12. ODDZIELANIE KODU HTML OD PHP ............................................................................. 145 WSTP ................................................................................................................................................................. 145 WPROWADZENIE ................................................................................................................................................. 145 ODDZIELENIE I INTEGRACJA PRZY UYCIU WBUDOWANYCH FUNKCJI PHP.......................................................... 146 Motywacja ...................................................................................................................................................... 146 Implementacja ................................................................................................................................................ 147 Czego naley unika ....................................................................................................................................... 151 Podsumowanie: Oddzielanie i integracja przy wykorzystaniu funkcji PHP.................................................. 151 WYKORZYSTANIE SYSTEMU SZABLONW............................................................................................................ 152 FastTemplate .................................................................................................................................................. 152 Zaawansowane techniki uycia FastTemplate ............................................................................................... 157 PODSUMOWANIE ................................................................................................................................................. 159 BIBLIOGRAFIA ..................................................................................................................................................... 159 ROZDZIA 13. FAJNY PHP.............................................................................................................................. 160 WSTP ................................................................................................................................................................. 160 WYSYANIE DO PRZEGLDARKI PLIKW INNYCH NI HTML.............................................................................. 160 SKRYPTY AUTOMATYZUJCE .............................................................................................................................. 164 WDDX................................................................................................................................................................ 168 MONITOROWANIE SIECI ....................................................................................................................................... 172 PODSUMOWANIE ................................................................................................................................................. 174 ROZDZIA 14. WITRYNY OPARTE O SZABLONY ................................................................................... 175 PODSTAWY WYKORZYSTANIA SZABLONW ......................................................................................................... 175 ZAPOYCZANIE ................................................................................................................................................... 183 PERSONALIZACJA WITRYNY................................................................................................................................. 185 OBSUGA WIELU JZYKW .................................................................................................................................. 187 PODSUMOWANIE ................................................................................................................................................. 189 ROZDZIA 15. WITRYNY OPARTE O BAZ DANYCH............................................................................ 190 WSTP ................................................................................................................................................................. 190 PROJEKT BAZY DANYCH ...................................................................................................................................... 190 ZARZDZANIE DANYMI APLIKACJI....................................................................................................................... 192 WYWIETLANIE DANYCH .................................................................................................................................... 199 PODSUMOWANIE ................................................................................................................................................. 204 4 Spis Treci

ROZDZIA 16. GENEROWANIE STATYCZNYCH STRON HTML W OPARCIU O DYNAMICZNE DANE..................................................................................................................................................................... 205 WSTP ................................................................................................................................................................. 205 KONCEPCJA ......................................................................................................................................................... 205 GENEROWANIE STRON STATYCZNYCH ................................................................................................................. 205 Uycie buforowania........................................................................................................................................ 205 Uycie FastTemplate ...................................................................................................................................... 207 TECHNIKI BUFOROWANIA .................................................................................................................................... 208 PODSUMOWANIE ................................................................................................................................................. 210 ROZDZIA 17. WITRYNY HANDLU ELEKTRONICZNEGO ................................................................... 211 WSTP ................................................................................................................................................................. 211 BEZPIECZESTWO ............................................................................................................................................... 211 Zastosowanie SSL........................................................................................................................................... 211 Certyfikaty ...................................................................................................................................................... 211 Bezpieczestwo bazy danych.......................................................................................................................... 212 PRZETWARZANIE PATNOCI ............................................................................................................................... 212 DOSTARCZANIE PRODUKTW .............................................................................................................................. 219 PODSUMOWANIE ................................................................................................................................................. 220 DODATEK A. FUNKCJE ................................................................................................................................... 221 DODATEK B. PREDEFINIOWANE ZMIENNE I STAE PHP................................................................... 367 ZMIENNE ............................................................................................................................................................. 367 Zmienne Apache ............................................................................................................................................. 367 Zmienne rodowiska....................................................................................................................................... 369 Zmienne PHP ................................................................................................................................................. 369 STAE .................................................................................................................................................................. 370 DODATEK C. OPCJE KOMPILACJI PHP..................................................................................................... 372 BAZY DANYCH .................................................................................................................................................... 372 HANDEL ELEKTRONICZNY ................................................................................................................................... 374 GRAFIKA ............................................................................................................................................................. 374 RNE ................................................................................................................................................................. 375 --enable-inline-optimization........................................................................................................................... 376 SIE ..................................................................................................................................................................... 379 DZIAANIE PHP .................................................................................................................................................. 379 SERWER ............................................................................................................................................................... 380 TEKST I JZYK ..................................................................................................................................................... 380 XML ................................................................................................................................................................... 381 DODATEK D. OPCJE KONFIGURACJI PHP ............................................................................................... 382 OGLNE DYREKTYWY KONFIGURACJI ................................................................................................................. 382 DYREKTYWY KONFIGURACJI POCZTY .................................................................................................................. 385 DYREKTYWY KONFIGURACJI TRYBU BEZPIECZNEGO ........................................................................................... 385 DYREKTYWY KONFIGURACJI DEBUGGERA ........................................................................................................... 385 DYREKTYWY ADOWANIA ROZSZERZE ............................................................................................................. 385 DYREKTYWY KONFIGURACJI MYSQL ................................................................................................................. 386 DYREKTYWY KONFIGURACJI MSQL .................................................................................................................... 386 DYREKTYWY KONFIGURACJI POSTGRESQL ........................................................................................................ 386 DYREKTYWY KONFIGURACJI SYBASE .................................................................................................................. 387 DYREKTYWY KONFIGURACJI SYBASE-CT ........................................................................................................... 387 DYREKTYWY KONFIGURACJI INFORMIX .............................................................................................................. 388 DYREKTYWY KONFIGURACJI BC MATH .............................................................................................................. 389 5 PHP Kompendium wiedzy

DYREKTYWY KONFIGURACJI MOLIWOCI PRZEGLDAREK ................................................................................ 389 DYREKTYWY KONFIGURACJI ZUNIFIKOWANEGO ODBC ..................................................................................... 389 DODATEK E. ZASOBY SIECI.......................................................................................................................... 390

Spis Treci

6

WstpKsika ta jest przeznaczona dla programistw tworzcych aplikacje WWW za pomoc PHP. Naley zwrci uwag, e zostao uyte okrelenie aplikacje WWW a nie strony WWW lub witryny WWW. W przeszoci w Sieci znajdoway si w wikszoci proste strony HTML o ograniczonej moliwoci interakcji. Dzisiejszy obraz Sieci jest o wiele bardziej skomplikowany. Uytkownicy i firmy oczekuj od Sieci coraz wicej. Powoduje to powstanie coraz wikszej iloci dynamicznych aplikacji WWW. PHP jest idealny do tworzenia takich aplikacji, poniewa zosta zaprojektowany wanie do realizacji tego zadania.

Dla kogo jest przeznaczona ta ksikaKsika ta powinna by uyteczna dla szerokiego grona programistw WWW, ale pisana bya z myl o rednio zaawansowanych lub zaawansowanych programistach. PHP jest jzykiem programowania a nie jzykiem opisu strony, wic przydatne bdzie dowiadczenie w programowaniu. Programici znajcy C lub Perla powinni uzna PHP za jzyk bardzo przyjazny, natomiast programici pracujcy w ASP Microsoftu (Active Server Pages) uznaj PHP za jzyk o podobnej strukturze. Poniewa ksika ta nie jest kierowana do pocztkujcych programistw, podstawowe pojcia dotyczce programowania zostan przedstawione bardzo skrtowo. Zakada si, e Czytelnik zna takie pojcia programowania, jak funkcje, zmienne i stae.

KonwencjeW ksice przyjto nastpujce konwencje: Kod programu i jego wyniki zaznaczone s czcionk o staej Nazwy plikw i katalogw zaznaczone s czcionk pochy. Komendy i elementy jzyka zaznaczone s czcionk o staejszerokoci. szerokoci.

Omwienie ksikiKsika zawiera zwize wprowadzenie do PHP, oraz opis jzyka. Zosta w niej rwnie przedstawiony sposb instalacji i konfiguracji PHP. Druga cz, Specjalne wymagania przy programowaniu WWW, przeznaczona jest dla programistw tradycyjnych aplikacji rozpoczynajcych prac przy aplikacjach WWW. W czci tej przedstawione zostay takie zagadnienia jak: przetwarzanie formularzy, interakcj z uytkownikiem, utrzymywanie stanu oraz niezaleno od przegldarki. Nastpna cz, Zarzdzanie projektem aplikacji WWW opisuje zalety modularnoci i powtrnego uycia kodu. Cz Przykady zastosowa pokazuje uycie PHP na podstawie fragmentw dziaajcych ju aplikacji. Cz ta czy zagadnienia przedstawione w poprzednich czciach i pokazuje przykady penej wymiany informacji pomidzy przegldark uytkownika i aplikacj zainstalowan na serwerze WWW. Na kocu ksiki znajduje si skorowidz zawierajcy wszystkie funkcje PHP4.

Od autoraOd okoo trzech lat tworz aplikacje WWW przy uyciu PHP i ASP, jako niezaleny przedsibiorca. Fundamentem mojego sukcesu byo uycie PHP, poniewa pozwala on na szybkie budowanie prototypw, oraz jest wystarczajco wydajny i pewny nawet do tworzenia duych aplikacji WWW. Celem tej ksiki jest przekazanie innym programistw uytecznych informacji. Nie bd opisywa rnic pomidzy PHP i innymi tego typu narzdziami i nie bd zajmowa si histori PHP. Wszystkie te informacje mona znale na oficjalnej witrynie PHP, www.php.net. Zamiast tego poka zastosowanie PHP do stworzenia aplikacji WWW. Omwi rwnie inynieri programowania w projektach WWW, sposoby przeniesienia istniejcego kodu do nowych projektw WWW. Przedstawi rwnie kilka przydatnych narzdzi napisanych dla PHP.

Przykady koduZamieszczone przykady kodu byy tworzone i testowane pzy uyciu PHP 4.0.1 (poprawka 2) na Apache 1.3.11 dziaajcym w systemie RedHat 6.1. Do edycji plikw HTML i PHP wykorzystuj edytor Allaire Homeite 4.5.1 zainstalowany na Windows NT. Do testowania maych fragmentw kodu stosowaem nastpujcy szablon HTML do ktrego wklejaem odpowiedni kod PHP: Nazwa przykadu

Wiksze fragmenty kodu byy tworzone od razu razem z kodem HTML.

Czym jest PHPPHP to jzyk programowania przeznaczony dla programistw WWW pozwalajcy na szybkie tworzenie dynamicznych aplikacji WWW. Oficjalnym rozwiniciem skrtu PHP jest PHP: Hypertext Preprocessor (preprocesor hipertekstu). Jest to jzyk programowania osadzany w HTML skadniowo podobny do C, Perla i Javy. Na wydruku 1. przedstawiony jest przykad kodu PHP. Wydruk 1. Prosty przykad kodu PHP Prosty przykad kodu PHP

Po uruchomieniu tego przykadu (poprzez odpowiednio skonfigurowany serwer WWW) generowany jest kod HTML zamieszczony na wydruku 2. Wydruk 2. Wynik dziaania wydruku 1 Prosty przykad kodu PHP Witajcie w PHP!

Preprocesor PHP wykonuje cay kod zawarty pomidzy znacznikami umieszczonymi w kodzie HTML i zwraca wynik w postaci tekstu. Nie jest to szczeglnie interesujcy, ale pokazuje jak atwo mona umieszcza kod PHP w kodzie HTML. Naley pamita, e kod ten jest wykonywany na serwerze WWW a nie na kliencie. Oznacza to, e przegldarka nie wie, e do stworzenia strony by uywany PHP. Otrzymuje ona po prostu strumie kodu HTML, identycznie jak w przypadku zwykych stron. Wicej na ten temat znajduje si w Wstp 8

czci Specjalne wymagania przy programowaniu WWW.

Dlaczego powiniene uy PHPPHP jest penowartociowym jzykiem programowania pozwalajcy na tworzenie aplikacji WWW z wszystkimi potrzebnymi funkcjami. PHP wsppracuje z wieloma systemami baz danych. Pozwala to na bardzo atwe tworzenie aplikacji WW korzystajcych z informacji zapisanych w bazie danych. Moliwy jest rwnie dostp do usug sieciowych takich jak IMAP, POP3, NNTP i TTP. Pozwala on rwnie na otwieranie gniazd sieciowych i podczanie si do innych protokow TCP/IP. PHP moe by uyty we wielu konfiguracjach serwerw. Poniewa PHP jest rozprowadzany gwnie w postaci kodu rdowego, moe by skompilowany na wielu rnych platformach, na przykad na Linuksie, FreeBSD i nawet na Windows. Dostpne s rwnie binarne dystrybucje dla Win32. PHP moe dziaa jako program CGI lub moe by zainstalowany jako modu Apache lub rozszerzenie ISAPI. Dziki temu moe on dziaa z praktycznie kadym serwerem WWW, od Apache na Linuksie do IIS na Windows NT. W celu utworzenia najbardziej elastycznego rodowiska pracy naley samodzielnie skompilowa i zainstalowa PHP. Jeeli wolisz szybko zacz prac, moesz zastosowa binarn dystrybucj PHP.

Gdzie szuka pomocyPomoc mona uzyska na witrynie PHP oraz poprzez kilka grup dyskusyjnych i wysykowych. W lutym 2000 roku okoo 1400000 domen korzystao z PHP. Poniewa jest on tak popularny, istnieje ogromna grupa programistw i konsultantw, ktrzy mog odpowiedzie na pytania. Wicej informacji na temat dostpnych zasobw Sieci znajduje si w czci Zasoby na kocu ksiki.

9

PHP Kompendium wiedzy

PodzikowaniaNa pocztku chciabym podzikowa wszystkim z wydawnictwa McGraw-Hill za umoliwienie mi zrealizowania tego zadania. Szczeglne podzikowania nale si Rebece Young za wsparcie i pomoc w technicznych aspektach pisania ksiki. Dzikuj Johnowi Steele, mojemu redaktorowi technicznemu, ktry niezmiernie pomg mi swoimi trafnymi uwagami i informacjami. Oczywicie, naley podzikowa caemu zespoowi tworzcemu PHP. Wiele osb z tego zespou pomagao mi w pracy nad ksik. Caa cz zawierajca skorowidz funkcji jest ich zasug. To oni spdzili setki lub tysice godzin tworzc ten wspaniay jzyk programowania i bogat dokumentacj. Dzikuj Mattowi Wilson za umoliwienie mi wykorzystania w przykadzie do ksiki kodu MWeather. Dzikuj Nickowi Bradbury za pozwolenie wykorzystania informacji i rysunkw z edytora TopStyle. Podzikowania dla Nate Weiss za pomoc przy uyciu deserializera WDDX dla JavaScript, dla Johna Kos za pomoc przy unixODBC i EasySoft ODBC-ODBC Bridge. Dla Martina Evans, gwnego programisty ODBCODBC Bridge, za stworzenie tego wietnego produktu. Dzikuj Michaelowi Justin za pomoc przy konwerterze RTF do HTML firmy Scrooge. Dzikuj rwnie Michaelowi C. Battilana za pomoc przy Cloanto Currency Server. Dla Sama Ockman za umoliwienie wykorzystania w ksice rysunku serwera Penguin 1U. Dzikuj Richardowi Litofski za pomoc przy BrowserHawk. Podzikowania dla Ali Ersheid za umoliwienie wykorzystania w ksice dokumentacji CyberCash. Dzikuj Josephowi Harris (znany jako CDI) za klas FastTemplate oraz inne fantastyczne narzdzia dostpne na witrynie The Webmasters.net. Dzikuj rodzicom i braciom za nieustanne wsparcie nawet, gdy w latach osiemdziesitych spdzaem cae noce na pisaniu programw w Apple Basicu. Dzikuj pani Barton, pani Smith i panu Wakefield, moim nauczycielom angielskiego z liceum, ktrzy mieli ogromny wpyw na moje pisanie. Dzikuj Garemu Rogers i Jasonowi Wallin za wskazanie mi PHP i Linuksa w czasie gdy coraz bardziej pograem si wykorzystujc ASP i Windows. Dzikuj Tracy Ard za poyteczne komentarze do tej pracy oraz za jego niezmienn przyja. Na koniec najwaniejsze podzikowania nale si mojej onie i crce za umoliwienie mi zakoczenia tej pracy. Teraz znw moemy wieczorami chodzi skaka na trampolinie.

O autorzeBlake Schwendiman rozpocz programowanie w 1980 roku rozpoczynajc od Apple IIe i jzyka Basic. Zdoby licencjat na uniwersytecie Arizona State University w roku 1994. W chwili obecnej Blake zarzdza firm Intechra LLC, http://www.intechra.net/, firm konsultingow specjalizujc si w oprogramowaniu, ktra ma siedzib w Rexburg, Idaho. Intechra LLC specjalizuje si w tworzeniu oprogramowania dla WWW. Blake ma on Holy i trzyletni crk. Mona si z nim skontaktowa pod adresem [email protected].

Wstp

10

Rozdzia 1. Kompilacja i instalowanie PHPWstpZanim rozpoczniemy nauk jzyka PHP, naley go poprawnie zainstalowa i skonfigurowa w uywanym rodowisku interpreter PHP. Poniewa pakiet PHP moe dziaa na wielu serwerach WWW i systemach operacyjnych, w rozdziale tym znajd si szczegowe opisy instalacji na jedynie kilku platformach, ale podane informacje s wystarczajco uniwersalne i mog by wykorzystane przy konfigurowaniu rodowiska pracy na innych platformach. W rozdziale tym opisane zostan szczegowo Apache dla Linuksa oraz IIS dla Windows NT. S to czsto spotykane konfiguracje serwerw WWW i s one na tyle rne, e ilustruj oglne zasady instalacji pakietu PHP na wikszoci platform. Szczegowe dane na temat okrelonej platformy mona rwnie znale na witrynie www.php.net.

Pobieranie PHPPierwszym krokiem do rozpoczcia pracy z PHP jest zaopatrzenie si w kopi interpretera PHP. Na witrynie www.php.net umieszczone jest kilka wariantw tego pakietu. Najnowsza wersja zawsze znajduje si na grze listy. W przypadku serwerw uniksowych zaleca si pobranie pakietu zawierajcego kompletny kod rdowy i przeprowadzenie samodzielnej kompilacji. Platformy uniksowe to midzy innymi Linux, BSD, Solaris itp. W przypadku Windows zaleca si pobranie binarnej instalacji PHP. Ze strony zawierajcej pakiety instalacyjne mona rwnie pobra poprzednie wersje programw, dokumentacj i narzdzia pomocnicze. Poprzednie wersje mog by potrzebne, jeeli masz ju gdzie zainstalowane PHP i nie chcesz ryzykowa niekompatybilnoci.

Instalowanie wersji binarnejPo pobraniu binarnej dystrybucji PHP, instalacja jest banalna. Najczciej binarna instalacja PHP jest przeznaczona dla Windows. Poniewa jednak niektre dystrybucje Uniksa zawieraj binarn dystrybucj PHP, opisany zostanie rwnie taki przypadek.

Binarna instalacja dla WindowsW PHP prawie wszystkie operacje mona wykona na kilka sposobw. Instalacja binarna dla Windows zawiera zarwno wersj CGI (Common Gateway Interface) PHP, jak rwnie wersj ISAPI. Jeeli korzystasz z serwera IIS (Internet Information Server) lub PWS (Personal Web Server) zalecane jest uycie moduu ISAPI. Wersja CGI powoduje, e PHP jest uruchamiany za kadym odwoaniem do strony, wic jest mniej efektywny od dynamicznego moduu jakim jest rozszerzenie ISAPI. Modu ISAPI jest rwnie ze swojej natury bezpieczniejszy od programu CGI.

Instalowanie PHP w postaci moduu ISAPI Jeeli korzystasz z serwera IIS, PWS lub innego serwera WWW obsugujcego moduy ISAPI, najlepszym rozwizaniem bdzie uycie PHP w postaci moduu ISAPI. Aby zainstalowa tak wersj, naley skopiowa pliki php4ts.dll i msvcrt.dll do katalogu systemowego Windows (zwykle \windows\system w Windows 95 lub \winnt\system32 w Windows NT). S to wspdzielone biblioteki niezbdne do prawidowej pracy kadej wersji PHP dla Windows. Dodatkowo mona skopiowa do katalogu systemowego inne pliki .dll, ale nie jest to konieczne do ich uycia. Nastpnie naley tak skonfigurowa IIS lub PWS, aby korzysta z moduu ISAPI do obsugi plikw php. Serwer IIS mona konfigurowa za pomoc konsoli konfiguracji zainstalowanej w menu Option Pack. Na rysunku 1.1. znajduje jest rozwinite menu pokazujce pooenie tego programu w Windows NT. Rysunek 1.1. Uruchamianie aplikacji konfigurujcej IIS

Po uruchomieniu konsoli Meneder usug internetowych naley klikn prawym przyciskiem myszy na wle serwera WWW (prawdopodobnie zatytuowany Domylna witryna sieci Web) i wybra Waciwoci, tak jak jest to pokazane na rysunku 1.2. Nastpnie w oknie Waciwoci naley przej na zakadk Katalog macierzysty i klikn przycisk Konfiguracja. Opcja ta pozwala na dodawanie i edycj skojarze. Rysunek 1.2. Konfigurowanie IIS

Teraz naley klikn przycisk Dodaj i wprowadzi potrzebne informacje. Na rysunku 1.3. pokazany jest proces dodawania mapowania rozszerzenia phtml do moduu ISAPI PHP.

Rozdzia 1 Kompilacja i instalowanie PHP

12

Rysunek 1.3. Dodawanie mapowania dla rozszerzenia w IIS

Po dodaniu mapowania zmiany s od razu widoczne w oknie dialogowym Konfiguracja aplikacji. Czasami moe by poyteczne skojarzenie niektrych rozszerze z moduem ISAPI a niektrych z programem CGI. Na rysunku 1.4. pokazana jest konfiguracja mojego serwera WWW. Na rysunku wida mapowania dla PHP3, dla PHP4 jako CGI oraz PHP4 jako ISAPI. Jest to przydatne przy testowaniu rnic pomidzy wersjami 3 i 4 PHP. Rysunek 1.4. Mapowanie rozszerze PHP

Po zakoczeniu konfiguracji naley ponownie uruchomi serwer WWW. Mona to zrobi przy uyciu moduu Usugi w Panelu sterowania, lub uruchamiajc z linii polece nastpujce polecenia:net stop iisadmin net start w3svc

Po uruchomieniu serwera naley go przetestowa tworzc prosty plik testowy, na przykad taki, jak pokazany na wydruku 1.1. i otwierajc go poprzez twj serwer. Jeeli wszystko jest skonfigurowane poprawnie, powiniene zobaczy ekran z informacjami na temat instalacji PHP. Wydruk 1.1. Testowy skrypt PHP phpinfo()

13

PHP Kompendium wiedzy

Trzeba pamita, e w pakiecie instalacyjnym PHP znajduje si uwaga na temat stanu moduu ISAPI ktra ostrzega, e nie powinien by stosowany w rodowisku produkcyjnym. Sugeruje si, e w celu zapewnienia odpowiedniej stabilnoci powinna by uyta wersja CGI. Nastpna cz rozdziau opisuje uycie PHP jako CGI. Uycie PHP jako CGI Jeeli nie masz zainstalowanego serwera WWW obsugujcego moduy ISAPI lub istniej inne powody wyboru wersji CGI, naley przeprowadzi instalacj PHP jako CGI. Instalacja jest bardzo podobna do tej przedstawionej powyej, rnice wystpuj jedynie przy mapowaniu rozszerze. Zamiast wybiera bibliotek .dll ISAPI, naley wybra plik php.exe. Serwer IIS lub PWS wysya parametry do pliku wykonywalnego CGI, wic oprcz nazwy pliku wykonywalnego naley poda opcje linii polece %s %s. Jest to pokazane na rysunku 1.4. dla rozszerzenia .php4. Rne serwery WWW maj rne metody okrelenia mapowania rozszerze. Do Apache dla Windows istnieje wietny podrcznik dostpny pod adresem www.php.net/manual/config-apache-nt.html. Zasoby sieci na temat instalacji PHP na rnych serwerach WWW dla Windows mona odszuka za pomoc wyszukiwarki umieszczonej na witrynie www.php.net.

Inne instalacje binarneNiektre instalacje Uniksa posiadaj instalacj binarn PHP zintegrowan z instalacj serwera WWW. Niektrzy dostawcy, na przykad Red Hat, udostpniaj rwnie binarn instalacj na swoich witrynach. Instalacja taka jest wykonana w formie plikw RPM (Red Hat Package Manager). Zalet uycia plikw RPM jest atwo instalacji. Nie trzeba martwi si szczegami procesu kompilacji, poniewa plik RPM zawiera gotow do uycia odpowiednio skompilowan wersj programu. Wad jest to, e z powodu wielu moliwych wariantw platform dla Uniksa, problemem dla pocztkujcych moe by nawet wybr waciwego pliku. Poza tym w pliku RPM nie zawsze s ustawione wszystkie potrzebne opcje konfiguracji, niezbdne do prawidowego dziaania programu. Jeeli masz plik RPM z PHP, moesz go zainstalowa wydajc polecenie rpm -i . Powoduje to zainstalowanie plikw binarnych do katalogw okrelonych przez twrc pliku RPM. Dla wikszoci uytkownikw katalogi te s prawidowe. Po instalacji naley rcznie skonfigurowa serwer WWW tak, aby korzysta z zainstalowanych wanie plikw binarnych PHP. Poniej przedstawimy sposb konfiguracji Apache. Inne serwery WWW wymagaj przeprowadzenia podobnych czynnoci. Niezalenie od tego, czy PHP bdzie dziaao jako program CGI czy w postaci moduu, pierwszy krok konfiguracji jest zawsze taki sam. Trzeba utworzy skojarzenie pomidzy rozszerzeniem pliku a wewntrznym typem stosowanym przez serwer. Robi si to dodajc do pliku konfiguracyjnego nastpujce linie:AddType application/x-httpd-php .php AddType application/x-httpd-php .phtml AddType application/x-httpd-php .inc

Dyrektywy te powoduj, e Apache uwaa wszystkie pliki z rozszerzeniami .php, .phtml i .inc jako pliki typu application/x-httpd-php. Do przetwarzania tego typu plikw wykorzystywane jest PHP. Zakadajc, e masz zainstalowane PHP w postaci moduu Apache, kolejnym krokiem bdzie modyfikacja pliku konfiguracyjnego httpd.conf tak, aby Apache zaadowa modu PHP:LoadModule php4_module libexec/libphp4.so

Jeeli zainstalowana zostaa wersja CGI, naley wprowadzi nieco inne zmiany do pliku konfiguracji httpd.conf. Dyrektywa konfiguracji jest podobna do poprzedniej, ale odwouje si do programu w postaci pliku wykonywalnego.:Action application/x-httpd-php /cgi-bin/php

Dyrektywa Action definiuje typ pliku powodujcy uruchomienie PHP po otrzymaniu dania cignicia strony z serwera WWW. Oczywicie naley poda waciw ciek do pliku wykonywalnego. Po wprowadzeniu zmian naley ponownie uruchomi serwer WWW, aby zaczy dziaa nowe ustawienia. Serwer Apache mona zrestartowa za pomoc polecenia:/cieka/do/apachectl restart

Aby przetestowa konfiguracj mona wczyta za pomoc przegldarki skrypt testowy, przedstawiony na wydruku 1.1. Binarna dystrybucja PHP uatwia szybkie rozpoczcie pracy z PHP w Uniksach, ale moe ona sprawia problemy. Z powodu istnienia wielu wariantw Uniksw, znalezienie gotowej wersji dziaajcej na okrelonym Rozdzia 1 Kompilacja i instalowanie PHP 14

systemie moe by czasami trudne. W wielu przypadkach bdzie to bardziej czasochonne ni cignicie kodu rdowego, skompilowanie i zainstalowanie PHP. Proces ten zostanie opisany w kolejnej czci rozdziau.

Kompilowanie PHPJeeli chcesz skorzysta z elastycznoci wasnej instalacji PHP lub jeeli przewidujesz dodawanie wasnych rozszerze do jzyka PHP (opisane w rozdziale 11. Ponowne wykorzystanie kodu), musisz dokadnie pozna proces kompilowania PHP. Jeeli pracujesz na platformie, dla ktrej nie ma instalacji binarnej, moesz nie mie innego wyboru jak tylko samodzielnie kompilowa PHP.

Kompilowanie PHP w UniksachW tej czci rozdziau przedstawione zostan informacje na temat kompilowania PHP na platformie Unix. Naley pamita, e Unix okrela ca rodzin systemw, np.: Linux, BSD, Solaris i inne. Oczywicie systemy te rni si midzy sob, ale wiele z krokw niezbdnych do kompilacji PHP jest identycznych. Wicej informacji na temat okrelonej platformy mona odszuka za pomoc wyszukiwarki dostpnej na witrynie www.php.net. Dla kadej platformy istnieje kilka sposobw kompilacji PHP. Jeeli serwerem WWW jest Apache, mona skompilowa PHP jako plik wykonywalny, jako modu adowany dynamicznie lub jako statyczn bibliotek. Jeeli nie korzystasz z Apache, naley odszuka w dokumentacji PHP i serwera WWW szczegy postpowania. Przy okazji moemy zarekomendowa korzystanie z PHP w postaci dynamicznie adowanego moduu, jako najlepsze rozwizanie dla wikszoci aplikacji. Jeeli PHP zostanie statycznie doczony do Apache, kada zmiana konfiguracji wymaga wikszego nakadu pracy. W przypadku moduu CGI, wystpuj problemy z bezpieczestwem. W kolejnych czciach zakadamy, e cigne ju rda PHP i rozpakowae je. Proces kompilacji jest waciwie taki sam dla kadego typu pliku wynikowego. Na pocztku trzeba uruchomi skrypt configure, ktry ustawia opcje kompilacji. Nastpnie przy pomocy narzdzia make przeprowadza si kompilacj. Na koniec trzeba zainstalowa gotowe PHP i zrestartowa serwer WWW. Informacje na temat skryptu konfiguracyjnego s przedstawione w czci powiconej kompilowaniu moduu CGI, wic zaleca si przeczytanie tego fragmentu jako wprowadzenia. Kompilacja moduu CGI Kompilacja PHP do postaci wykonywalnego moduu CGI jest najprostsz metod kompilacji i dobrym rozwizaniem, jeeli nigdy wczeniej nie kompilowae programw dla Uniksa. Poniej przedstawiona jest kompletna lista operacji jakie naley wykona. Niektre z nich nie s obowizkowe. Operacje opcjonalne s zaznaczone czcionk pochy. Odwoanie do powinno by zamienione na nazw twojego katalogu bazowego PHP.cd rm config.cache make clean ./configure make make install

Wykonanie tych operacji spowoduje usunicie podrcznych danych konfiguracji, usunicie plikw wynikowych a nastpnie skompilowanie PHP do postaci CGI. Jest to najprostsza metoda kompilacji, przytoczona jedynie jako przykad. W prawdziwej kompilacji do skryptu konfiguracyjnego docza si opcje okrelajce atrybuty PHP. Druga i trzecia linia jest nieobowizkowa, poniewa polecenia w nich umieszczone s uywane jedynie do wyczyszczenia poprzedniej konfiguracji i pozostaoci po poprzedniej kompilacji. Jeeli wczeniej nie konfigurowae ani nie kompilowae PHP, nie s one potrzebne. Mona rwnie nie korzysta z tych opcji przy kompilacji PHP, cho czasami ich wykonanie jest niezbdne. Jeeli wprowadzane s powane zmiany w konfiguracji lub zmieniasz typ kompilacji z CGI na inny, moe okaza si, e wykonanie czyszczenia jest niezbdne, aby kompilacja przebiega prawidowo. W zalenoci od szybkoci komputera, na ktrym wykonywana jest kompilacja, przeprowadzenie caej konfiguracji i kompilacji moe zaj dosy duo czasu. 15 PHP Kompendium wiedzy

Pozostawienie zapisanych opcji konfiguracji oraz obiektw binarnych spowoduje znaczne skrcenie czasu tworzenia PHP. Wszyscy, ktrzy nigdy nie przeprowadzali takiego procesu powinni wiedzie, e skrypt konfiguracyjny poszukuje w systemie narzdzi, plikw i innych danych systemowych. Nastpnie na podstawie tych danych tworzy specyficzny dla systemu skrypt za pomoc mona skompilowa kod. Jeeli w czasie dziaania skryptu konfiguracyjnego nastpi awaria, czsto zdarza si, e wymagany plik lub narzdzie nie jest odnajdywane lub niewaciwie skonfigurowane. Po zakoczeniu dziaania skryptu konfiguracyjnego tworzony jest plik tymczasowy config.cache zawierajcy szczegy na temat systemu, wic badanie systemu nie musi by powtarzane przy ponownym uruchomieniu konfiguracji. Jeeli wprowadzisz due zmiany do konfiguracji systemu, musisz usun plik tymczasowy przed kolejnym uruchomieniem skryptu konfiguracyjnego. W ten sposb upewniamy si, e zmiany te zostan wykryte. Po wykonaniu wszystkich podanych polece zostanie utworzony nowy plik wykonywalny php. Mona przetestowa poprawno kompilacji za pomoc nastpujcego polecenia:php < /dev/null

Jeeli zobaczysz wynik podobny do poniej przedstawionego, udao ci si poprawnie skompilowa i zainstalowa PHP w postaci CGI.X-Powered-By: PHP/4.0.2 Content-type: text/html

Trzeba zauway, e skompilowana wanie wersja PHP nie posiada funkcji, ktre by moe bdziemy chcieli wykorzystywa w aplikacjach, poniewa zostaa skompilowana z uyciem tylko ustawie domylnych. Trzeba ponownie uruchomi skrypt konfiguracyjny, ustawi opcje potrzebne w aplikacji a nastpnie ponownie skompilowa i zainstalowa PHP. Poyteczn cech zestawu domylnych ustawie jest to, e doczone jest do niego wiele czsto uywanych opcji konfiguracji, w tym obsuga bazy danych MySQL, sesji i wiele, wiele innych. Oznacza to, e przytoczone polecenia umoliwiaj skompilowanie PHP, ktry pozwala na rozpoczcie nauki jzyka. Jeeli potrzebujesz obsugi innej bazy danych lub innego rozszerzenia, trzeba doda odpowiedni opcj konfiguracji. Lista dostpnych opcji jest wywietlana po wpisaniu:./configure --help

with-PAKIET.

Wikszo opcji konfiguracji wpywajcych na dostpne funkcje PHP ma posta --enable-FUNKCJA lub -Aby doda funkcj do PHP naley uy jednej z poniszych form: Aby usun funkcj z PHP, naley uy:

--enable-FUNKCJA --enable-FUNKCJA=yes --disable-FUNKCJA --enable-FUNKCJA=no

Pena lista opcji konfiguracji znajduje si w skorowidzu na kocu ksiki. Funkcje korzystajce ze skadni --enable s to zwykle wbudowane opcje PHP, takie jak moliwo wykorzystywania krtkich znacznikw lub obsuga protokou FTP. Pakiety s to zwykle moduy zewntrzne, ktre mog by doczone do PHP, na przykad obsuga bazy danych Oracle lub Javy. Te wasnoci wymagaj zwykle wskazania zewntrznego pliku i do jego wczania korzysta si z nastpujcego zapisu:--with-PAKIET=/cieka/do/pakietu

Aby wyczy pakiet naley uy polece:--with-PAKIET=no --without-PAKIET

Jako przykad przedstawimy nastpujc konfiguracj:./configure --with-apxs=/www/bin/apxs --with-java --with-cybercash=/home/blake/mck-3.2.0.6-i586-pc-linuxgnulibc2.1 --withunixODBC=/usr/local/unixODBC --disable-debug --enabletrack-vars -- enable-fin-funcs --withsnmp=/home/blake/ucd-snmp-4.1.2 --enable-ucd-snmp-hack

Powysze wywoanie konfiguracji powoduje dodanie do PHP obsugi Javy, CyberCash, SNMP (Simple Network Management Protocol) oraz unixODBC. Nie zostao podane pooenie katalogu Javy, wic skrypt konfiguracyjny uyje domylnej cieki do katalogu z tym pakietem. Dodatkowo zostaa dodana opcja -withapxs, ktra powoduje, e PHP jest kompilowane do postaci dynamicznie adowanego moduu Apache a nie jako program typu CGI. Pniej omwimy to zagadnienie dokadniej. W przedstawianej konfiguracji wyczono informacje dla debuggera oraz wczono opcje track-vars, fin-funcs oraz ucd-snmp-hack. Opcja fin-funcs powoduje dodanie wasnego moduu rozszerze opisanego w dalszej czci ksiki (rozdzia 11.), natomiast pozostae s standardowymi elementami konfiguracji opisanymi w skorowidzu na kocu ksiki.

Rozdzia 1 Kompilacja i instalowanie PHP

16

Wiele z pakietw oprogramowania jakie chcemy doda do PHP musi by osobno zainstalowane. Wicej informacji na temat tego, gdzie mona zaopatrzy si w potrzebne pakiety, mona znale w dokumentacji na witrynie www.php.net. Po utworzeniu PHP w postaci CGI, naley skonfigurowa serwer WWW do wsppracy z nowym programem. Aby skonfigurowa serwer Apache naley doda nastpujce dyrektywy do pliku httpd.conf:AddType application/x-httpd-php .php AddType application/x-httpd-php .phtml AddType application/x-httpd-php .inc Action application/x-httpd-php /cgi-bin/php

Pierwsze trzy dyrektywy definiuj zawarto plikw z rozszerzeniami php, phtml i inc jako typ application/x-httpd-php. Ostatnia dyrektywa powoduje wysanie wszystkich plikw tego typu do pliku wykonywalnego php. Zakadamy, e plik ten jest umieszczony w katalogu cgi-bin serwera WWW. Dyrektywy te s minimum wymaganym do konfiguracji PHP w Apache, ale ta sama czynno moe by zrealizowana jeszcze na kilka sposobw. Wicej szczegw mona znale w dokumentacji do Apache. Kompilacja PHP jako statycznie doczanego moduu Apache Apache pozwala na statyczne doczanie moduw bezporednio do pliku binarnego Apache. W porwnaniu z wersj CGI uycie moduu pozwala poprawi wydajno aplikacji oraz zwikszy bezpieczestwo systemu,. Wad tej metody jest konieczno powtrnej kompilacji Apache po kadej kompilacji PHP. Moe by to czasochonne i frustrujce, poniewa w przypadku wystpienia kopotw z konfiguracj PHP, Apache moe rwnie przesta dziaa. Jednak niektre aplikacje wymagaj zastosowania statycznie doczanego moduu Apache, opiszemy teraz sposb jego tworzenia. Przed skonfigurowaniem i skompilowaniem PHP niezbdne jest skonfigurowanie Apache. Zakadamy, e na dysku jest ju katalog z kodem rdowym Apache. Aby skonfigurowa Apache, naley uy nastpujcych polece:cd ./configure

Po zakoczeniu dziaania tego skryptu mona zaj si konfigurowaniem i kompilowaniem PHP.cd ./configure --with-apache= make make install

Opcja --with-apache powoduje kompilacj do postaci statycznej biblioteki oraz pozwala poda katalog z plikami rdowymi Apache. Nastpnie naley skompilowa serwer Apache za pomoc polece:cd ./configure --prefix=/www --activate-module=src/modules/php4/libphp4.a make make install

Dyrektywa prefix moe by inna w twoim systemie, poniewa wskazuje ona katalog gdzie zostan zainstalowane pliki zalene od architektury. Teraz naley uruchomi serwer Apache i przy wykorzystaniu skryptu testowego z wydruku 1.1. sprawdzi poprawno konfiguracji. Aby Apache prawidowo przetwarza pliki PHP naley odpowiednio zmodyfikowa plik httpd.conf. W zalenoci od rozszerze jakie zostay wybrane do reprezentowania plikw PHP, naley wprowadzi odpowiednie zmiany. I tym razem standardowa konfiguracja wyglda nastpujco:AddType application/x-httpd-php .php AddType application/x-httpd-php .phtml AddType application/x-httpd-php .inc

Przedstawiony opis przedstawia jedynie bardzo prost wersj PHP, ktra zawiera jedynie opcje domylne. Wicej informacji o zmianie konfiguracji kompilacji PHP znajduje si w czci na temat kompilacji wersji CGI. Kompilacja PHP do postaci dynamicznie adowanego moduu Apache Sposb kompilacji PHP do postaci dynamicznie adowanego moduu Apache nie rni si zbytnio od innych przedstawionych do tej pory metod. Zalet tej metody jest moliwo kompilacji PHP bez koniecznoci rwnoczesnej kompilacji Apache. Rwnie niektre moduy rozszerze (na przykad Java) wymagaj do poprawnej pracy, aby PHP by skompilowany do postaci dynamicznie adowanego moduu. Aby Apache obsugiwa dynamicznie adowane moduy naley go przekompilowa z nastpujcymi opcjami konfiguracji:cd make clean ./configure --enable-module=so --enable-rule=SHARED_CORE --prefix=/www make

17

PHP Kompendium wiedzy

make install

Oprcz kompilacji Apache przedstawione polecenia przygotowuj skrypt apxs, ktry jest niezbdny do kompilacji dynamicznego moduu PHP. Jeeli wystpi kopoty ze skryptem apxs mona powtrnie wykona przedstawione polecenia, co spowoduje ponowne wygenerowanie prawidowo skonfigurowanego skryptu. Po skompilowaniu Apache z obsug dynamicznie adowanych moduw, naley skompilowa PHP w nastpujcy sposb:cd make clean rm config.cache ./configure --with-apxs=/www/bin/apxs (pozostae opcje) make make install

Polecenia porzdkujce s zalecane, jeeli PHP by ju kompilowany w innej konfiguracji. cieka podana w dyrektywie konfiguracji --with-apxs powinna by pen ciek do skryptu apxs na serwerze. Tak jak w przypadku poprzednich sposobw kompilacji naley prawidowo skonfigurowa Apache, aby przetwarza pliki PHP. Po zmodyfikowaniu konfiguracji naley uruchomi Apache i wywoa skrypt testowy. Podsumowanie kompilacji PHP w systemach Unix Celem tego fragmentu ksiki nie byo podawanie szczegowego i wyczerpujcego opisu wszystkich moliwych opcji konfiguracji, ale pokazanie podstawowych metod kompilowania PHP do rnych postaci. Jeeli nie kompilowae wczeniej PHP, powiniene na pocztku sprbowa skompilowa podstawow konfiguracj, a pniej uzupenia potrzebne opcje. Po zapoznaniu si z procesem kompilacji jest ju bardzo atwo testowa rne konfiguracje i dodawa niestandardowe rozszerzenia. Po skompilowaniu PHP i sprawdzeniu, czy dziaa z Apache, mona zapozna si z opcjami konfiguracji, ktre mona ustawia bez potrzeby ponownej kompilacji. Zostay one opisane w dalszej czci rozdziau.

Kompilowanie PHP w rodowisku WindowsKompilowanie PHP dla Windows jest na pocztku bardziej skomplikowanym procesem ni kompilacja PHP dla Uniksa. Dokumentacja zaleca uycie Visual C++ wersja 6, cho wersja 5 rwnie powinna dziaa. Prbowaem sprawdzi, czy mona uy pakietu Borland C++ Builder, ale nie udao mi si tego zrobi. Problem stanowiy prekompilowane pliki lib, poniewa Microsoft i Borland korzystaj z rnych formatw tych plikw. Prawdopodobnie mona zastosowa kompilator Borlanda, ale trzeba wczeniej przekompilowa wszystkie biblioteki. W poniszym opisie zakadamy uycie Visual C++. Przed rozpoczciem pracy naley si zaopatrzy w kilka programw i plikw pomocniczych. Tabela 1.1. zawiera wszystkie dodatkowe programy oraz adresy w Internecie, gdzie byy dostpne w czasie pisania ksiki. Tabela 1.1. Dodatkowe pliki pomocnicze i ich adresy w Sieci Program Pooenie Kod rdowy PHP www.php.net/download.php Pakiet Cygwin http://sources.redhat.con/cygwin/ Narzdzia do kompilacji PHP dla www.php.net/extra/win32build.zip Win32 Obsuga BCMath www.php.net/version4/downloads/num ber.tar.gz Zastpnik pliku resolv.lib www.php.net/version4/downloads/bind lib_w32.zip Pakiet Cygwin zawiera popularne narzdzia GNU, takie jak gcc, make i bison. Niektre z tych programw s wykorzystywane w procesie kompilacji, wic trzeba wczeniej zainstalowa ten pakiet. Inne potrzebne pliki s integraln czci dystrybucji PHP. Kod rdowy PHP jest identyczny jak ten, ktry jest uywany do utworzenia wersji dla Uniksa. Potrzebny jest rwnie program do rozpakowywania plikw. Ja uywam programu Winzip, poniewa bez problemu radzi sobie z plikami .tar.gz. Rwnie inne programy posiadaj takie moliwoci. Na pocztku naley zainstalowa narzdzia Cygwin. Trzeba rcznie doda zmienn rodowiska wskazujc na pooenie plikw Cygwin. Jeeli pracujesz w Windows 95, trzeba doda t zmienn rcznie do pliku autoexec.bat. W Windows NT naley klikn prawym przyciskiem myszy ikon Mj komputer i wybra z menu Waciwoci. Teraz trzeba Rozdzia 1 Kompilacja i instalowanie PHP 18

klikn zakadk rodowisko i doda now zmienn, tak jak jest to pokazane na rysunku 1.5. Zmienna nazywa si CYGWIN a jej wartoci jest cieka do katalogu, gdzie zainstalowane s narzdzia Cygwin. Rysunek 1.5. Ustawienie zmiennej rodowiskowej CYGWIN

Nastpnie utwrz katalog i rozpakuj do niego zawarto pliku win32build.zip. Uruchom Visual C++ i wybierz Options z menu Tools. Teraz wybierz zakadk Directories (rysunek 1.6.) i przy uyciu listy rozwijalnej opisanej Show directories for, wybierz opcj Executable files i dodaj katalog z plikami Cygwin. Teraz z listy rozwijalnej wybierz Include files i dodaj katalog z win32build\include (rysunek 1.6.). Na koniec wybierz Library files i dodaj katalog win32build\lib. Od tej pory kompilator Visual C++ bdzie mg korzysta z zainstalowanych narzdzi i plikw. Rysunek 1.6. Ustawienie katalogw w Visual C++

Kolejnym krokiem bdzie skompilowanie nowej wersji pliku resolv.lib. Najpierw utwrz nowy katalog i rozpakuj do niego pliki z archiwum bindlib_w32.zip. W Visual C++ otwrz projekt bindlib.dsp. Z menu Build wybierz Set Active Project Configuration i wybierz wersj handlow biblioteki lub wersj do uruchamiania. Nacinij klawisz F7, aby skompilowa projekt. Po zakoczeniu kompilacji naley skopiowa plik resolv.lib do katalogu win32build\lib. Nastpnie rozpakuj rda PHP i plik number.tar.gz za pomoc zewntrznego programu lub narzdzia tar z pakietu Cygwin. Skopiuj rozpakowane pliki number.c i number.h do katalogu ext/bcmath w katalogu z kodem rdowym PHP. 19 PHP Kompendium wiedzy

Jeeli wykonae wszystkie opisane wczeniej czynnoci, jeste gotowy do kompilacji PHP. Uruchom Visual C++ i otwrz plik projektu php4ts.dsp, znajdujcy si w podkatalogu win32 katalogu z kodem rdowym PHP. Projekt ten zawiera kilka konfiguracji. Najatwiej jest rozpocz od skompilowania wersji CGI wybierajc wersj handlow lub wersj z danymi dla debuggera, tak jak jest to pokazane na rysunku 1.7. Rysunek 1.7. Wybr konfiguracji dla wersji CGI

Skompiluj projekt i jeeli wszystko pjdzie dobrze posiadasz ju wasn wersj PHP. Jeeli potrzebujesz wersji PHP jako ISAPI lub NSAPI, wystarczy wybra odpowiedni konfiguracj dla kompilacji i ponownie skompilowa projekt. Jak wspomniaem wczeniej, najtrudniejsz czci byo wstpne przygotowanie rodowiska. Gdy wszystko jest ju gotowe, caa reszta jest tak samo prosta jak w Uniksie.

Podsumowanie kompilacji PHPKompilowanie wersji PHP dla Windows jest za pierwszym razem duo trudniejsze od wersji dla Uniksa, ale gdy wszystkie potrzebne dodatki zostan odpowiednio skonfigurowane, jest ju proste. Gdy poznae ju proces kompilowania PHP dla obu platform moesz tworzy wysoce specjalizowane wersje PHP, speniajcych precyzyjnie potrzeby konkretnej witryny. Dokadna wiedza na temat procesu kompilacji PHP jest rwnie niezbdna, aby mc tworzy rozszerzenia PHP. Zagadnienie to zostao opisane w rozdziale 11.

Konfigurowanie PHPNiezalenie od platformy na ktrej dziaa PHP, sposb jego konfigurowania jest taki sam. Wykorzystuje si w tym celu plik php.ini. Plik ten jest dostarczany w dystrybucji PHP jako php.ini-dist i php.ini-optimized. Jeeli nie znasz dobrze opcji konfiguracji, powiniene rozpocz do podstawowych ustawie z pliku php.ini-dist. Pierwszym krokiem bdzie skopiowanie i zmiana nazwy pliku. Plik powinien by nazwany php.ini i skopiowany do katalogu zalenego od uywanej platformy. W tabeli 1.2. zamieszczone s podstawowe warianty. Tabela 1.2. Platformy PHP i pooenie pliku php.ini Platforma Pooenie pliku php.ini Windows Katalog zwykle \windows w Windows 95 i \winnt w Windows NT Unix Mona to sprawdzi za pomoc funkcji phpinfo(), ale zwykle jest to /usr/local/lib. Po umieszczeniu pliku konfiguracyjnego w odpowiednim katalogu, naley do niego wprowadzi odpowiednie zmiany. Plik php.ini jest podzielony na sekcje, rozpoczynajce si od linii [nazwa_sekcji] podobnie, jak w standardowych plikach ini systemu Windows. Plik ten zawiera obszerne komentarze opisujce przeznaczenie sekcji i opcji konfiguracji. W pozostaej czci ksiki czasami bd przytaczane opcje niezbdne do uruchomienia przykadw. Zwykle przykad taki zawiera nazw sekcji, nazw opcji oraz warto. Aby wprowadzi zmiany najczciej zmienia si plik php.ini i ponownie uruchamia Apache, ale istniej rwnie inne mechanizmy zmiany opcji. Mechanizmy te opisane zostan w pniejszej czci rozdziau.

Korzystanie z pliku php.iniZalecan metod zmiany konfiguracji jest modyfikacja pliku php.ini i ponowne uruchomienie serwera WWW. Jeeli korzystasz z PHP w postaci programu CGI nie musisz restartowa serwera, poniewa plik php.ini jest odczytywany za kadym uruchomieniem programu CGI. Dla przykadu mona zmieni sposb raportowania bdw przez PHP, korzystajc z odpowiednich opcji konfiguracji. Opcje te maj nastpujce wartoci domylne: Rozdzia 1 Kompilacja i instalowanie PHP 20

error_reporting display_errors log_errors error_log

= = = =

E_ALL & ~E_NOTICE ; Poka wszystkie bdy oprcz informacji On ; Wypisuj bdy (jako cz wynikowego HTML) Off ; Zapisuj bdy do pliku bdw syslog ; Zapisuj bdy do dziennika systemowego

Pierwsza opcja powoduje generowanie komunikatw dla wszystkich typw bdw poza typem E_NOTICE. Nastpna linia powoduje wstawianie komunikatw bdw do wynikowego kodu HTML. Nastpne dwa wiersze powoduj zapisywanie komunikatw bdw w pliku. Zamy, e w instalacji produkcyjnej nie chcemy wywietla bdw, a zamiast tego bdy bd zapisywane do okrelonego pliku. Mona to zrealizowa zmieniajc konfiguracj w nastpujcy sposb:error_reporting display_errors log_errors error_log = = = = E_ALL ; Poka wszystkie bdy Off ; On ; Zapisuj bdy /tmp/php_log ; Zapisuj bdy do pliku /tmp/php_log

Taka konfiguracja powoduje, e wszystkie komunikaty bdw, w tym informacje, bd zapisywane w pliku /tmp/php_log. Oczywicie plik ten powinien mie odpowiednio ustawione prawa dostpu, aby serwer WWW mg zapisa w nim dane. Z powodu duej iloci opcji konfiguracji, nie zostan tu przedstawione wszystkie moliwe opcje. Pena lista znajduje si w skorowidzu na kocu ksiki. Tutaj przedstawione zostan jedynie oglne sposoby wykorzystywania tych opcji. Aby zmieni opcj konfiguracji, naley otworzy w edytorze plik php.ini i odszuka opcj. Zwykle znajduje si tam sporo komentarzy opisujcych moliwe wartoci danej opcji.

Inne metody zmiany konfiguracji PHPIstniej dwie metody zmiany konfiguracji PHP bez koniecznoci modyfikacji pliku php.ini. Pierwszym sposobem jest wstawienie tych opcji do pliku konfiguracyjnego Apache httpd.conf lub do pliku .htaccess. Pierwsza metoda jest uyteczna, jeeli chcemy mie rne ustawienia PHP dla rnych serwerw wirtualnych lub rnych katalogw. Druga metoda jest wykorzystywana, gdy nie jest moliwy dostp do plikw php.ini i httpd.conf. Jest to czsta sytuacja, witryna jest umieszczona na dzierawionym serwerze zewntrznej firmy. Jest to jednak najmniej zalecana metoda, poniewa plik .htaccess jest wczytywany i analizowany za kadym odwoaniem do stron znajdujcych si w tym katalogu. Powoduje to znaczne spowolnienie serwera WWW. W obu tych przypadkach sposb zmiany konfiguracji PHP jest tak sam. Naley uy dyrektyw konfiguracji php_value i php_flag do ustawienia potrzebnych opcji. Na przykad, aby ustawi poprzednio opisane opcje konfigurujce sposb raportowania bdw, naley uy nastpujcych dyrektyw Apache: ServerAdmin [email protected] DocumentRoot /www/hosts/wwwprojects/ ServerName www.testserver.com php_value error_reporting 2047 php_flag display_errors off php_flag log_errors on php_value error_log /tmp/php_log

Umieszczenie tych ustawie w pliku httpd.conf spowoduje, e zostanie ustawiony sposb raportowania bdw dla serwera wirtualnego o nazwie www.testserver.com. Jeeli na tej samej maszynie istniej inne serwery wirtualne, uywaj one konfiguracji okrelonej przez plik php.ini. Pozwala to na posiadanie rnych konfiguracji PHP dla rnych serwerw wirtualnych lub katalogw. Jeeli musisz zmieni konfiguracj PHP a nie masz dostpu do pliku php.ini ani do httpd.conf, moesz wykorzysta pliki Apache .htaccess. Jest to rwnie uyteczne, jeeli okrelony katalog musi mie inne ustawienia konfiguracji ni reszta witryny. Na przykad, mona zmieni sposb raportowania bdw dla jednego katalogu na czas uruchamiania skryptw w nim si znajdujcych. W tym celu naley stworzy plik .htaccess z nastpujc zawartoci:php_value error_reporting 2039 php_flag log_errors off php_flag display_errors on

Naley zauway, e w obu przykadowych plikach konfiguracyjnych Apache warto zmiennej konfiguracji error_reporting jest ustawiana za pomoc wartoci numerycznej a nie staej. Jest o jedyny sposb poprawnego ustawienia wartoci. Naley pamita, e konfigurujc PHP poprzez dyrektywy Apache nie mona uywa jako wartoci adnych staych PHP. W przeciwnym wypadku efekty mog by niespodziewane. Aby zilustrowa potg dostpnego mechanizmu konfiguracji na rysunku 1.8. przedstawiony zosta schemat moliwoci konfiguracji rodowiska PHP. 21 PHP Kompendium wiedzy

Rysunek 1.8. Elastyczno konfiguracji z zastosowaniem php.ini oraz plikw konfiguracyjnych Apache

PodsumowanieW tym rozdziale przedstawiono kilka informacji niezbdnych do rozpoczcia pracy z PHP. Z powodu elastycznoci i duej iloci obsugiwanych platform niemoliwe jest szczegowe opisanie wszystkich dostpnych konfiguracji. Korzystajc jednak z informacji umieszczonych w tej ksice, oraz na witrynie www.php.net powiniene by w stanie zainstalowa i skonfigurowa PHP na twojej platformie. Trzeba zauway, e PHP posiada wiele wasnych funkcji zmieniajcych ustawienia konfiguracji. Przykadami takich funkcji s error_reporting() oraz set_time_limit(). Wicej informacji na temat tych funkcji mona znale w skorowidzu na kocu ksiki.

Rozdzia 1 Kompilacja i instalowanie PHP

22

Rozdzia 2. JzykWstpW rozdziale tym znajduje si zwizy opis jzyka programowania PHP. Jak wspomniaem we wstpie do ksiki nie jest moj intencj powica zbyt wiele czasu na omawianiu oglnych koncepcji programowania. W tym rozdziale znajduje si opis skadni podstawowych konstrukcji programowania, na przykad zmiennych, staych i funkcji. Przykady przytoczone w tym rozdziale nie pokazuj najlepszych technik programowania a jedynie ilustruj skadni i uycie omawianych elementw. Peny opis jzyka znajduje si w dokumentacji jzyka dostpnej na witrynie http://www.php.net.

Oglne informacje na temat skadniPoniewa PHP jest zwykle wbudowywany w kod HTML istniej specjalne znaczniki ograniczajce bloki PHP. Uycie tych znacznikw jest nazywane czasem wyjciem z trybu HTML. Wydruk 2.1. Sposoby oznaczania bloku kodu PHP w HTML echo "niektre edytory HTML nie obsuguj instrukcji przetwarzania
";

Pierwsza metoda oznaczania blokw PHP jest dostpna jedynie wtedy, gdy uaktywnione s krtkie znaczniki. Aby to zrobi naley uy funkcji short_tags(), wczy w pliku konfiguracyjnym opcj short_tag_open lub skompilowa PHP z opcj -enable-short-tags. Znaczniki w stylu ASP s dostpne jedynie wtedy, gdy uaktywniona jest opcja konfiguracji asp_tags. Wicej informacji na temat kompilowania i konfiguracji PHP znajduje si w rozdziaach Kompilacja i instalowanie PHP oraz dodatku D - Opcje konfiguracji. PHP jest syntaktycznie bardzo podobny do C. Na przykad, instrukcje s oddzielone rednikiem. Znacznik ?> jest niejawnym kocem instrukcji, wic ponisze przykady s poprawne skadniowo: Wydruk 2.2. Koniec instrukcji

Komentarze w PHP mona oznacza symbolami komentarzy pochodzcymi z C, C++ lub stosowanych w skryptach Uniksa. Komentarze jednoliniowe komentuj tekst do koca linii lub do koca biecego bloku PHP w zalenoci od tego, co bdzie pierwsze. Nie mona zagbia wielowierszowych komentarzy w stylu C. Wydruk 2.3. Komentarze To wywietli nic.

TypyPHP posiada nastpujce typy: liczby zmiennoprzecinkowe, liczby cakowite, cigi, tablice i obiekty. Typ zmiennej jest ustalany w oparciu o kontekst w jakim jest uyta zmienna i nie jest on jawnie ustalany przez programist. Jest to wana cecha o ktrej naley pamita podczas programowania aplikacji PHP, poniewa niejawna konwersja typw moe spowodowa trudne do odnalezienia bdy. Na przykad ponisza instrukcja jest prawidowa i spowoduje wywietlenie liczby 9:print( 3* "3 mae winki");

Aby mona byo zapanowa nad typami, PHP posiada funkcje gettype() i settype() oraz kilka funkcji przeznaczonych dla okrelonych typw, na przykad is_integer() lub is_array(). W skorowidzu funkcji na kocu ksiki znajduje si pene omwienie tych funkcji. Teraz zostanie opisany kady z typw zmiennych (oprcz obiektw). Obiekty PHP zostan opisane w dalszej czci rozdziau.

Liczby cakowite i zmiennoprzecinkoweLiczby cakowite mona podawa uywajc notacji dziesitnej, semkowej i szesnastkowej. Liczby zmiennoprzecinkowe mona podawa uywajc notacji zwykej lub zapisu naukowego. Na poniszym wydruku pokazana jest skadnia PHP dla wszystkich tych notacji. Wydruk 2.4. Reprezentacja liczb

CigiCigi w PHP s ograniczane apostrofami (') lub cudzysowami ("). Zapisy te rni si sposobem interpretacji cigu. Jeeli cig jest otoczony cudzysowami, zmienne zapisane w cigu zostaj zamienione na ich wartoci. Aby zapisa znaki specjalne w cigach otoczonych cudzysowami, naley uy znaku lewego ukonika (\), tak jak zostao to pokazane w tabeli 2.1. Tabela 2.1. Znaki specjalne w cigach otoczonych cudzysowami Sekwencja znakw Znaczenie \n nowa linia \r powrt karetki (CR) \t tabulacja \\ lewy ukonik \" cudzysw \$ znak dolara W cigach otoczonych apostrofami zmienne nie s zastpowane. Jedynymi dopuszczalnymi sekwencjami sterujcymi s te oznaczajce lewy ukonik (\\) i apostrof (\'). Sekwencje te pozwalaj na wpisanie do cigu znaku apostrofu i lewego ukonika. Cigi mog by czone przy uyciu operatora kropki (.). Dokadniej jest to opisane w czci rozdziau na temat operatorw. Podobnie jak w jzyku C, mamy dostp do poszczeglnych znakw cigu, traktujc go jak tablic znakw. Wydruk 2.5. Przykad operacji na cigach

break i continuePHP posiada rwnie znane z C instrukcje break i continue, ktre pozwalaj na dodatkowe sterowanie ptlami. Obie te instrukcje pozwalaj na podanie im parametru numerycznego, ktry okrela ilo zagbionych ptli, ktre naley przerwa lub rozpocz od pocztku. Wyraenie break koczy wykonanie biecej konstrukcji sterujcej (ptli lub wyraenia switch). Wyraenie continue jest uywane jedynie w ptlach. Powoduje ono opuszczenie pozostaych instrukcji ciaa ptli i rozpoczcie nowej iteracji. Najczciej instrukcje break i continue s stosowane w zagniedonych ptlach. W przypadku ptli prostych, wyraenia warunkowe s wystarczajce do realizacji tych zada. Wydruk 2.18. Przykady uycia break i continue

PHP osiada alternatywn skadni dla konstrukcji sterujcych if, while, for i switch. W kadej z tych konstrukcji otwierajca klamra jest zamieniona na dwukropek (:) a zamykajca klamra na odpowiednio endif, endwhile, endfor i endswitch. Gdy tworzysz due skrypty wbudowane w HTML, skadnia alternatywna moe by uyteczna, poniewa zapewnia wyran identyfikacj koca struktur sterujcych. Wydruk 2.19. Przykad uycia alternatywnej skadni PHP na stronie HTML Przykad 19

35

PHP Kompendium wiedzy

Wybierz swj rok urudzenia: Prosz wpisa dane nowego pracownika:

Na wydruku 9.4 pokazujemy w jaki sposb mona sprawdzi obsug ActiveX i tak samo atwo mona sprawdzi kad z waciwoci BrowserHawk. W tabeli 9.1. zamieszczone s metody odczytujce informacje na temat moliwoci przegldarki dostpne w BrowserHawk. Typ Metoda Zastosowanie Boolean getActiveXControls() Sprawdza, czy przegldarka obsuguje kontrolki ActiveX. Boolean getAOL() Sprawdza, czy uytkownik witryny korzysta z przegldarki firmowanej przez America Online (AOL) (na sieci AOL). double getAOLVersion() Zwraca numer wersji przegldarki AOL. int getAuthenticodeUpdate() Zwraca numer wersji Authenticode obsugiwanego przez przegldark. Boolean getBackgroundSounds() Sprawdza, czy przegldarka potrafi odgrywa dwik w tle. Boolean getBeta() Sprawdza, czy przegldarka jest w wersji beta. java.lang.String getBrowser() Zwraca ogln nazw przegldarki, na przykad Netscape lub IE (Internet Explorer). Boolean getCDF() Sprawdza, czy przegladarka obsuguje Channel Definition Format (CDF) uywany do prenumerowania zawartoci WWW z moliwoci automatycznej aktualizacji. Boolean getCompressGZip() Sprawdza, czy przegldarka przyjmuje dane w skompresowanym formacie GZip. Boolean getCookies() Sprawdza, czy przegldarka obsuguje cookie. Boolean getCrawler() Sprawdza, czy przegldarka jest szperaczem sieciowym lub innym programem wykorzystywanym do indeksowania zawartoci witryny. Boolean getDHML() Sprawdza, czy przegldarka obsuguje skrypty DHTML(). java.lang.String getFileUpload() Sprawdza, czy przegldarka obsuguje Rozdzia 9 Niezaleno od przegldarki 110

Boolean Boolean Boolean java.lang.String

getFontColor() getFontSize() getFrames() getFullversion()

Boolean Boolean java.lang.String Boolean Boolean double java.lang.String int double java.lang.String Boolean Boolean java.lang.String Boolean java.lang.String

getGold() getHDML() getIPAddr() getJavaApplets() getJavaScript() getJavaScriptVer() getLanguage() getMajorver() getMinorver() getMinorverlet() getMouseOver() getMSN() getOSDetails() getPDA() getPlatform()

Boolean

getPNG()

Boolean Boolean Boolean java.lang.String

getProxy() getSSL() getSSLActive() getSSLCipherSuite()

moliwo przesyania plikw do serwera (przegldarki zgodne z RFC 1867). Sprawdza, czy przegldarka potrafi wywietla kolorowy tekst. Sprawdza, czy przegldarka potrafi wywietla rne wielkoci tekstu. Sprawdza, czy przegldarka obsuguje ramki. Zwraca kompletn wersje przegldarki zawierajc wysz i nisz cz numeru oraz litery, o ile wystpuj. Sprawdza, czy jest to wersja Gold przegldarki Netscape Navigator. Zwraca True, jeeli obsuguje HDML (poprzednik WAP). Zwraca adres IP klienta. Sprawdza, czy przegldarka obsuguje applety Java. Sprawdza, czy przegldarka obsuguje JavaScript. Zwraca numer wersji JavaScript obsugiwanego przez przegldark. Zwraca wybrany przez uytkownika jzyk. Zwraca wysz cz numeru wersji przegldarki. Zwraca nisz cz numeru wersji przegldarki. Zwraca liter niszej czci numeru przegldarki, o ile wystpuje. Sprawdza, czy przegldarka obsuguje efekt JavaScript, mouseover. Sprawdza, czy uytkownik korzysta z sieci Microsoft Network (MSN). Zwraca szczegy na temat systemu operacyjnego (OS) systemu uytkownika. Zwraca True, jeeli przegldark jest urzdzeniem PDA na przykad PalmPilot. Zwraca bardziej oglne dane (w porwnaniu do getOSDetails()) na temat platformy uytkownika. Sprawdza, czy przegldarka obsuguje format rysunkw PNG (Potrable Network Graphics). Sprawdza, czy uytkownik jest poczony poprzez serwer Proxy. Sprawdza, czy przegldarka obsuguje protok SSL (Secure Socket Layer). Sprawdza, czy uytkownik jest poczony poprzez aktywne poczenie SSL. Zwraca zestaw szyfrowania SSL dla biecej sesji. Dostpny jedynie w przypadku PHP Kompendium wiedzy

111

aktywnej sesji SSL. Sprawdza wielko klucza SSL obsugiwan przez przegldark. Dostpne jedynie w przypadku aktywnego poczenia SSL. Boolean getStyleSheets() Sprawdza, czy przegldarka obsuguje kaskadowe arkusze stylu (CSS). Boolean getTableBGColor() Sprawdza, czy przegldarka obsuguje ustawianie kolorw dla poszczeglnych komrek tabeli HTML. Boolean getTableBGImage() Sprawdza, czy przegldarka obsuguje ustawianie rysunkw ta dla poszczeglnych komrek tabeli HTML. Boolean getTables() Sprawdza, czy przegldarka obsuguje wywietlanie tabel. Boolean getVBScript() Sprawdza, czy przegldarka obsuguje VBScript. double getVersion() Zwraca wersj przegldarki. int getVersionpos() Zwraca pozycj w numerze wersji przegldarki, ktry jest umieszczony w cigu identyf