PHP Kompendium

  • Upload
    hrumek

  • View
    719

  • Download
    1

Embed Size (px)

Citation preview

Spis TresciSPIS TRESCI............................................................................................................................................................ 1 WSTEP ...................................................................................................................................................................... 7 Dla kogo jest przeznaczona ta ksiazka ............................................................................................................... 7 Konwencje .......................................................................................................................................................... 7 Omwienie ksiazki.............................................................................................................................................. 7 Od autora ........................................................................................................................................................... 8 Przyklady kodu ................................................................................................................................................... 8 CZYM JEST PHP....................................................................................................................................................... 8 DLACZEGO POWINIENES UZYC PHP......................................................................................................................... 9 GDZIE SZUKAC POMOCY .......................................................................................................................................... 9 PODZIEKOWANIA ................................................................................................................................................... 10 O AUTORZE............................................................................................................................................................ 10 ROZDZIAL 1. KOMPILACJA I INSTALOWANIE PHP................................................................................ 11 WSTEP ................................................................................................................................................................... 11 POBIERANIE PHP................................................................................................................................................... 11 INSTALOWANIE WERSJI BINARNEJ .......................................................................................................................... 11 Binarna instalacja dla Windows ...................................................................................................................... 11 Instalowanie PHP w postaci modulu ISAPI................................................................................................. 12 Uzycie PHP jako CGI................................................................................................................................... 14 Inne instalacje binarne..................................................................................................................................... 14 KOMPILOWANIE PHP ............................................................................................................................................ 15 Kompilowanie PHP w Uniksach ...................................................................................................................... 15 Kompilacja modulu CGI .............................................................................................................................. 15 Kompilacja PHP jako statycznie dolaczanego modulu Apache................................................................... 17 Kompilacja PHP do postaci dynamicznie ladowanego modulu Apache ..................................................... 17 Podsumowanie kompilacji PHP w systemach Unix..................................................................................... 18 Kompilowanie PHP w srodowisku Windows ................................................................................................... 18 Podsumowanie kompilacji PHP....................................................................................................................... 20 KONFIGUROWANIE PHP ........................................................................................................................................ 20 Korzystanie z pliku php.ini ............................................................................................................................... 20 Inne metody zmiany konfiguracji PHP............................................................................................................. 21 PODSUMOWANIE ................................................................................................................................................... 22 ROZDZIAL 2. JEZYK .......................................................................................................................................... 23 WSTEP ................................................................................................................................................................... 23 OGLNE INFORMACJE NA TEMAT SKLADNI ............................................................................................................ 23 TYPY ..................................................................................................................................................................... 24 Liczby calkowite i zmiennoprzecinkowe ...................................................................................................... 24 Ciagi ................................................................................................................................................................. 24 Tablice .............................................................................................................................................................. 25 ZMIENNE I STALE ................................................................................................................................................... 26 Zmienne predefiniowane .................................................................................................................................. 26 Zasieg zmiennych ............................................................................................................................................. 30

Stale.................................................................................................................................................................. 31 OPERATORY I KOLEJNOSC OPERATORW ............................................................................................................... 31 PROGRAMOWANIE PRZEPLYWU 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 ROZDZIAL 3. FORMULARZE I COOKIE....................................................................................................... 40 WSTEP ................................................................................................................................................................... 40 OBSLUGA FORMULARZY W PHP ............................................................................................................................ 41 Skalarne i wielowartosciowe elementy formularza.......................................................................................... 41 Alternatywne metody odczytywania wartosci z formularza ............................................................................. 42 Uzycie formularzy do przesylania plikw ........................................................................................................ 45 Uzycie rysunku jako przycisku wyslania danych.............................................................................................. 45 KONTROLA POPRAWNOSCI DANYCH FORMULARZA................................................................................................ 46 Kontrola danych za pomoca wyrazen regularnych.......................................................................................... 46 Kontrola poprawnosci za pomoca sprawdzania typw.................................................................................... 47 Klasa Validator ................................................................................................................................................ 48 COOKIE ................................................................................................................................................................. 49 WAZNE ZAGADNIENIA PROGRAMOWANIA DLA WWW.......................................................................................... 50 Obsluga nieprawidlowych danych ................................................................................................................... 50 Obsluga i formatowanie wyswietlanych danych .............................................................................................. 52 PODSUMOWANIE ................................................................................................................................................... 57 ROZDZIAL 4. OPERACJE NA PLIKACH........................................................................................................ 58 WSTEP ................................................................................................................................................................... 58 ODCZYT I ZAPIS PLIKW ........................................................................................................................................ 58 UZYCIE GNIAZD ..................................................................................................................................................... 59 UZYCIE POTOKW ................................................................................................................................................. 60 KLASA FILE ........................................................................................................................................................... 61 PODSUMOWANIE ................................................................................................................................................... 61 ROZDZIAL 5. WYSYLANIE PLIKW PRZEZ FORMULARZ ................................................................... 62 WSTEP ................................................................................................................................................................... 62 WYSYLANIE POJEDYNCZEGO PLIKU ....................................................................................................................... 62 PULAPKI ................................................................................................................................................................ 64 PRZESYLANIE WIELU PLIKW ................................................................................................................................ 64 BEZPIECZENSTWO ................................................................................................................................................. 65 PODSUMOWANIE ................................................................................................................................................... 66 ROZDZIAL 6. WSPLPRACA Z BAZAMI DANYCH ................................................................................... 67 WSTEP ................................................................................................................................................................... 67 WPROWADZENIE ................................................................................................................................................... 67 FUNKCJE BAZ DANYCH .......................................................................................................................................... 67 MYSQL................................................................................................................................................................. 68 2 Spis Tresci

Rozpoczynamy prace z MySQL ........................................................................................................................ 68 Uzycie MySQL.................................................................................................................................................. 68 ODBC ................................................................................................................................................................... 71 Podstawy ODBC .............................................................................................................................................. 71 Instalowanie i kompilowanie unixODBC .................................................................................................... 72 Kompilowanie PHP z obsluga unixODBC .................................................................................................. 72 Instalowanie sterownika OOB...................................................................................................................... 72 Konfigurowanie OOB .................................................................................................................................. 72 Korzystanie z ODBC ........................................................................................................................................ 73 PHPLIB ................................................................................................................................................................ 74 PRZECHOWYWANIE DANYCH Z FORMULARZY........................................................................................................ 75 WYKORZYSTANIE MOZLIWOSCI BAZY DANYCH ..................................................................................................... 77 PODSUMOWANIE ................................................................................................................................................... 78 ROZDZIAL 7. SESJE I STAN APLIKACJI....................................................................................................... 80 WSTEP ................................................................................................................................................................... 80 PODSTAWY MECHANIZMU SESJI ............................................................................................................................. 80 WBUDOWANY W PHP MECHANIZM ZARZADZANIA SESJAMI .................................................................................. 81 Rozpoczecie pracy z sesjami w PHP ................................................................................................................ 81 Przesylanie identyfikatora sesji bez uzycia cookie........................................................................................... 83 Zapisywanie zmiennych sesji w bazie danych .................................................................................................. 85 Inne funkcje i opcje dotyczace sesji.................................................................................................................. 89 UZYCIE PHPLIB DO OBSLUGI SESJI ....................................................................................................................... 90 TWORZENIE WLASNEGO MECHANIZMU SESJI ......................................................................................................... 92 INZYNIERIA PROGRAMOWANIA A SESJE ................................................................................................................. 92 PODSUMOWANIE ................................................................................................................................................... 94 ROZDZIAL 8. UWIERZYTELNIANIE.............................................................................................................. 95 WSTEP ................................................................................................................................................................... 95 PODSTAWOWE UWIERZYTELNIANIE W APACHE ..................................................................................................... 95 AKTUALIZACJA PLIKU .HTACCESS PRZY UZYCIU PHP............................................................................................ 97 PODSTAWOWE UWIERZYTELNIANIE ZA POMOCA PHP ........................................................................................... 99 KOMPLETNY SYSTEM UWIERZYTELNIANIA OPARTY O PHP ................................................................................. 100 PODSUMOWANIE ................................................................................................................................................. 104 ROZDZIAL 9. NIEZALEZNOSC OD PRZEGLADARKI ............................................................................. 105 WSTEP ................................................................................................................................................................. 105 ROZPOCZYNAMY ................................................................................................................................................. 105 WEWNETRZNE FUNKCJE PHP .............................................................................................................................. 106 Dodatkowe informacje na temat Browscap ................................................................................................... 106 BROWSERHAWK .................................................................................................................................................. 109 WYKORZYSTANIE DANYCH O PRZEGLADARCE..................................................................................................... 113 PODSUMOWANIE ................................................................................................................................................. 114 ROZDZIAL 10. URUCHAMIANIE................................................................................................................... 115 WSTEP ................................................................................................................................................................. 115 INZYNIERIA PROGRAMOWANIA A URUCHAMIANIE ............................................................................................... 115 Projekt aplikacji ............................................................................................................................................. 115 Definiowanie standardw programowania.................................................................................................... 116 Przeglad oprogramowania............................................................................................................................. 116 Testowanie...................................................................................................................................................... 117 Uruchamianie................................................................................................................................................. 117 PROGRAMOWANIE DEFENSYWNE ......................................................................................................................... 118 WLASNA OBSLUGA BLEDW................................................................................................................................ 122 PHP Kompendium wiedzy 3

ZAAWANSOWANA OBSLUGA BLEDW ................................................................................................................. 125 PODSUMOWANIE ................................................................................................................................................. 129 BIBLIOGRAFIA ..................................................................................................................................................... 130 ROZDZIAL 11. PONOWNE WYKORZYSTANIE KODU ............................................................................ 131 WSTEP ................................................................................................................................................................. 131 PONOWNE WYKORZYSTANIE KODU A INZYNIERIA PROGRAMOWANIA .................................................................. 131 PONOWNE UZYCIE ISTNIEJACEGO KODU .............................................................................................................. 132 PHP ................................................................................................................................................................ 132 C/C++ ............................................................................................................................................................ 133 Java ................................................................................................................................................................ 138 Dodawanie obslugi Javy w PHP na *niksach ............................................................................................ 138 Dolaczanie obslugi Javy w PHP dla Windows .......................................................................................... 139 Opcje konfiguracji Javy.............................................................................................................................. 139 COM ............................................................................................................................................................... 141 Inne metody .................................................................................................................................................... 143 PODSUMOWANIE ................................................................................................................................................. 144 BIBLIOGRAFIA ..................................................................................................................................................... 144 ROZDZIAL 12. ODDZIELANIE KODU HTML OD PHP ............................................................................. 145 WSTEP ................................................................................................................................................................. 145 WPROWADZENIE ................................................................................................................................................. 145 ODDZIELENIE I INTEGRACJA PRZY UZYCIU WBUDOWANYCH FUNKCJI PHP.......................................................... 146 Motywacja ...................................................................................................................................................... 146 Implementacja ................................................................................................................................................ 147 Czego nalezy unikac ....................................................................................................................................... 151 Podsumowanie: Oddzielanie i integracja przy wykorzystaniu funkcji PHP.................................................. 151 WYKORZYSTANIE SYSTEMU SZABLONW............................................................................................................ 152 FastTemplate.................................................................................................................................................. 152 Zaawansowane techniki uzycia FastTemplate ............................................................................................... 157 PODSUMOWANIE ................................................................................................................................................. 159 BIBLIOGRAFIA ..................................................................................................................................................... 159 ROZDZIAL 13. FAJNY PHP.............................................................................................................................. 160 WSTEP ................................................................................................................................................................. 160 WYSYLANIE DO PRZEGLADARKI PLIKW INNYCH NIZ HTML.............................................................................. 160 SKRYPTY AUTOMATYZUJACE .............................................................................................................................. 164 WDDX................................................................................................................................................................ 168 MONITOROWANIE SIECI ....................................................................................................................................... 172 PODSUMOWANIE ................................................................................................................................................. 174 ROZDZIAL 14. WITRYNY OPARTE O SZABLONY ................................................................................... 175 PODSTAWY WYKORZYSTANIA SZABLONW ......................................................................................................... 175 ZAPOZYCZANIE ................................................................................................................................................... 183 PERSONALIZACJA WITRYNY................................................................................................................................. 185 OBSLUGA WIELU JEZYKW .................................................................................................................................. 187 PODSUMOWANIE ................................................................................................................................................. 189 ROZDZIAL 15. WITRYNY OPARTE O BAZE DANYCH............................................................................ 190 WSTEP ................................................................................................................................................................. 190 PROJEKT BAZY DANYCH ...................................................................................................................................... 190 ZARZADZANIE DANYMI APLIKACJI....................................................................................................................... 192 WYSWIETLANIE DANYCH .................................................................................................................................... 199 PODSUMOWANIE ................................................................................................................................................. 204 Spis Tresci 4

ROZDZIAL 16. GENEROWANIE STATYCZNYCH STRON HTML W OPARCIU O DYNAMICZNE DANE..................................................................................................................................................................... 205 WSTEP ................................................................................................................................................................. 205 KONCEPCJA ......................................................................................................................................................... 205 GENEROWANIE STRON STATYCZNYCH ................................................................................................................. 205 Uzycie buforowania........................................................................................................................................ 205 Uzycie FastTemplate ...................................................................................................................................... 207 TECHNIKI BUFOROWANIA .................................................................................................................................... 208 PODSUMOWANIE ................................................................................................................................................. 210 ROZDZIAL 17. WITRYNY HANDLU ELEKTRONICZNEGO ................................................................... 211 WSTEP ................................................................................................................................................................. 211 BEZPIECZENSTWO ............................................................................................................................................... 211 Zastosowanie SSL........................................................................................................................................... 211 Certyfikaty ...................................................................................................................................................... 211 Bezpieczenstwo bazy danych .......................................................................................................................... 212 PRZETWARZANIE PLATNOSCI ............................................................................................................................... 212 DOSTARCZANIE PRODUKTW .............................................................................................................................. 219 PODSUMOWANIE ................................................................................................................................................. 220 DODATEK A. FUNKCJE ................................................................................................................................... 221 DODATEK B. PREDEFINIOWANE ZMIENNE I STALE PHP................................................................... 367 ZMIENNE ............................................................................................................................................................. 367 Zmienne Apache ............................................................................................................................................. 367 Zmienne srodowiska....................................................................................................................................... 369 Zmienne PHP ................................................................................................................................................. 369 STALE .................................................................................................................................................................. 370 DODATEK C. OPCJE KOMPILACJI PHP..................................................................................................... 372 BAZY DANYCH .................................................................................................................................................... 372 HANDEL ELEKTRONICZNY ................................................................................................................................... 374 GRAFIKA ............................................................................................................................................................. 374 RZNE ................................................................................................................................................................. 375 --enable-inline-optimization........................................................................................................................... 376 SIEC ..................................................................................................................................................................... 379 DZIALANIE PHP .................................................................................................................................................. 379 SERWER ............................................................................................................................................................... 380 TEKST I JEZYK ..................................................................................................................................................... 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 LADOWANIA ROZSZERZEN ............................................................................................................. 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 MOZLIWOSCI PRZEGLADAREK ................................................................................ 389 DYREKTYWY KONFIGURACJI ZUNIFIKOWANEGO ODBC ..................................................................................... 389 DODATEK E. ZASOBY SIECI.......................................................................................................................... 390

Spis Tresci

6

WstepKsiazka ta jest przeznaczona dla programistw tworzacych aplikacje WWW za pomoca PHP. Nalezy zwrcic uwage, ze zostalo uzyte okreslenie aplikacje WWW a nie strony WWW lub witryny WWW. W przeszlosci w Sieci znajdowaly sie w wiekszosci proste strony HTML o ograniczonej mozliwosci interakcji. Dzisiejszy obraz Sieci jest o wiele bardziej skomplikowany. Uzytkownicy i firmy oczekuja od Sieci coraz wiecej. Powoduje to powstanie coraz wiekszej ilosci dynamicznych aplikacji WWW. PHP jest idealny do tworzenia takich aplikacji, poniewaz zostal zaprojektowany wlasnie do realizacji tego zadania.

Dla kogo jest przeznaczona ta ksiazkaKsiazka ta powinna byc uzyteczna dla szerokiego grona programistw WWW, ale pisana byla z mysla o srednio zaawansowanych lub zaawansowanych programistach. PHP jest jezykiem programowania a nie jezykiem opisu strony, wiec przydatne bedzie doswiadczenie w programowaniu. Programisci znajacy C lub Perla powinni uznac PHP za jezyk bardzo przyjazny, natomiast programisci pracujacy w ASP Microsoftu (Active Server Pages) uznaja PHP za jezyk o podobnej strukturze. Poniewaz ksiazka ta nie jest kierowana do poczatkujacych programistw, podstawowe pojecia dotyczace programowania zostana przedstawione bardzo skrtowo. Zaklada sie, ze Czytelnik zna takie pojecia programowania, jak funkcje, zmienne i stale.

KonwencjeW ksiazce przyjeto nastepujace konwencje: Kod programu i jego wyniki zaznaczone sa czcionka o stalej Nazwy plikw i katalogw zaznaczone sa czcionka pochyla. Komendy i elementy jezyka zaznaczone sa czcionka o stalejszerokosci. szerokosci.

Omwienie ksiazkiKsiazka zawiera zwiezle wprowadzenie do PHP, oraz opis jezyka. Zostal w niej rwniez przedstawiony sposb instalacji i konfiguracji PHP. Druga czesc, Specjalne wymagania przy programowaniu WWW, przeznaczona jest dla programistw tradycyjnych aplikacji rozpoczynajacych prace przy aplikacjach WWW. W czesci tej przedstawione zostaly takie zagadnienia jak: przetwarzanie formularzy, interakcje z uzytkownikiem, utrzymywanie stanu oraz niezaleznosc od przegladarki. Nastepna czesc, Zarzadzanie projektem aplikacji WWW opisuje zalety modularnosci i powtrnego uzycia kodu. Czesc Przyklady zastosowan pokazuje uzycie PHP na podstawie fragmentw dzialajacych juz aplikacji. Czesc ta laczy zagadnienia przedstawione w poprzednich czesciach i pokazuje przyklady pelnej wymiany informacji pomiedzy przegladarka uzytkownika i aplikacja zainstalowana na serwerze WWW. Na koncu ksiazki znajduje sie skorowidz zawierajacy wszystkie funkcje PHP4.

Od autoraOd okolo trzech lat tworze aplikacje WWW przy uzyciu PHP i ASP, jako niezalezny przedsiebiorca. Fundamentem mojego sukcesu bylo uzycie PHP, poniewaz pozwala on na szybkie budowanie prototypw, oraz jest wystarczajaco wydajny i pewny nawet do tworzenia duzych aplikacji WWW. Celem tej ksiazki jest przekazanie innym programistw uzytecznych informacji. Nie bede opisywal rznic pomiedzy PHP i innymi tego typu narzedziami i nie bede zajmowal sie historia PHP. Wszystkie te informacje mozna znalezc na oficjalnej witrynie PHP, www.php.net. Zamiast tego pokaze zastosowanie PHP do stworzenia aplikacji WWW. Omwie rwniez inzynierie programowania w projektach WWW, sposoby przeniesienia istniejacego kodu do nowych projektw WWW. Przedstawie rwniez kilka przydatnych narzedzi napisanych dla PHP.

Przyklady koduZamieszczone przyklady kodu byly tworzone i testowane pzy uzyciu PHP 4.0.1 (poprawka 2) na Apache 1.3.11 dzialajacym w systemie RedHat 6.1. Do edycji plikw HTML i PHP wykorzystuje edytor Allaire Homeite 4.5.1 zainstalowany na Windows NT. Do testowania malych fragmentw kodu stosowalem nastepujacy szablon HTML do ktrego wklejalem odpowiedni kod PHP: Nazwa przykladu

Wieksze fragmenty kodu byly tworzone od razu razem z kodem HTML.

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

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

Preprocesor PHP wykonuje caly kod zawarty pomiedzy znacznikami umieszczonymi w kodzie HTML i zwraca wynik w postaci tekstu. Nie jest to szczeglnie interesujacy, ale pokazuje jak latwo mozna umieszczac kod PHP w kodzie HTML. Nalezy pamietac, ze kod ten jest wykonywany na serwerze WWW a nie na kliencie. Oznacza to, ze przegladarka nie wie, ze do stworzenia strony byl uzywany PHP. Otrzymuje ona po prostu strumien kodu HTML, identycznie jak w przypadku zwyklych stron. Wiecej na ten temat znajduje sie w Wstep 8

czesci Specjalne wymagania przy programowaniu WWW.

Dlaczego powinienes uzyc PHPPHP jest pelnowartosciowym jezykiem programowania pozwalajacy na tworzenie aplikacji WWW z wszystkimi potrzebnymi funkcjami. PHP wsplpracuje z wieloma systemami baz danych. Pozwala to na bardzo latwe tworzenie aplikacji WW korzystajacych z informacji zapisanych w bazie danych. Mozliwy jest rwniez dostep do uslug sieciowych takich jak IMAP, POP3, NNTP i TTP. Pozwala on rwniez na otwieranie gniazd sieciowych i podlaczanie sie do innych protokolw TCP/IP. PHP moze byc uzyty we wielu konfiguracjach serwerw. Poniewaz PHP jest rozprowadzany glwnie w postaci kodu zrdlowego, moze byc skompilowany na wielu rznych platformach, na przyklad na Linuksie, FreeBSD i nawet na Windows. Dostepne sa rwniez binarne dystrybucje dla Win32. PHP moze dzialac jako program CGI lub moze byc zainstalowany jako modul Apache lub rozszerzenie ISAPI. Dzieki temu moze on dzialac z praktycznie kazdym serwerem WWW, od Apache na Linuksie do IIS na Windows NT. W celu utworzenia najbardziej elastycznego srodowiska pracy nalezy samodzielnie skompilowac i zainstalowac PHP. Jezeli wolisz szybko zaczac prace, mozesz zastosowac binarna dystrybucje PHP.

Gdzie szukac pomocyPomoc mozna uzyskac na witrynie PHP oraz poprzez kilka grup dyskusyjnych i wysylkowych. W lutym 2000 roku okolo 1400000 domen korzystalo z PHP. Poniewaz jest on tak popularny, istnieje ogromna grupa programistw i konsultantw, ktrzy moga odpowiedziec na pytania. Wiecej informacji na temat dostepnych zasobw Sieci znajduje sie w czesci Zasoby na koncu ksiazki.

9

PHP Kompendium wiedzy

PodziekowaniaNa poczatku chcialbym podziekowac wszystkim z wydawnictwa McGraw-Hill za umozliwienie mi zrealizowania tego zadania. Szczeglne podziekowania naleza sie Rebece Young za wsparcie i pomoc w technicznych aspektach pisania ksiazki. Dziekuje Johnowi Steele, mojemu redaktorowi technicznemu, ktry niezmiernie pomgl mi swoimi trafnymi uwagami i informacjami. Oczywiscie, nalezy podziekowac calemu zespolowi tworzacemu PHP. Wiele osb z tego zespolu pomagalo mi w pracy nad ksiazka. Cala czesc zawierajaca skorowidz funkcji jest ich zasluga. To oni spedzili setki lub tysiace godzin tworzac ten wspanialy jezyk programowania i bogata dokumentacje. Dziekuje Mattowi Wilson za umozliwienie mi wykorzystania w przykladzie do ksiazki kodu MWeather. Dziekuje Nickowi Bradbury za pozwolenie wykorzystania informacji i rysunkw z edytora TopStyle. Podziekowania dla Nate Weiss za pomoc przy uzyciu deserializera WDDX dla JavaScript, dla Johna Kos za pomoc przy unixODBC i EasySoft ODBC-ODBC Bridge. Dla Martina Evans, glwnego programisty ODBCODBC Bridge, za stworzenie tego swietnego produktu. Dziekuje Michaelowi Justin za pomoc przy konwerterze RTF do HTML firmy Scrooge. Dziekuje rwniez Michaelowi C. Battilana za pomoc przy Cloanto Currency Server. Dla Sama Ockman za umozliwienie wykorzystania w ksiazce rysunku serwera Penguin 1U. Dziekuje Richardowi Litofski za pomoc przy BrowserHawk. Podziekowania dla Ali Ersheid za umozliwienie wykorzystania w ksiazce dokumentacji CyberCash. Dziekuje Josephowi Harris (znany jako CDI) za klase FastTemplate oraz inne fantastyczne narzedzia dostepne na witrynie The Webmasters.net. Dziekuje rodzicom i braciom za nieustanne wsparcie nawet, gdy w latach osiemdziesiatych spedzalem cale noce na pisaniu programw w Apple Basicu. Dziekuje pani Barton, pani Smith i panu Wakefield, moim nauczycielom angielskiego z liceum, ktrzy mieli ogromny wplyw na moje pisanie. Dziekuje Garemu Rogers i Jasonowi Wallin za wskazanie mi PHP i Linuksa w czasie gdy coraz bardziej pograzalem sie wykorzystujac ASP i Windows. Dziekuje Tracy Ard za pozyteczne komentarze do tej pracy oraz za jego niezmienna przyjazn. Na koniec najwazniejsze podziekowania naleza sie mojej zonie i crce za umozliwienie mi zakonczenia tej pracy. Teraz znw mozemy wieczorami chodzic skakac na trampolinie.

O autorzeBlake Schwendiman rozpoczal programowanie w 1980 roku rozpoczynajac od Apple IIe i jezyka Basic. Zdobyl licencjat na uniwersytecie Arizona State University w roku 1994. W chwili obecnej Blake zarzadza firma Intechra LLC, http://www.intechra.net/, firma konsultingowa specjalizujaca sie w oprogramowaniu, ktra ma siedzibe w Rexburg, Idaho. Intechra LLC specjalizuje sie w tworzeniu oprogramowania dla WWW. Blake ma zone Holy i trzyletnia crke. Mozna sie z nim skontaktowac pod adresem [email protected].

Wstep

10

Rozdzial 1. Kompilacja i instalowanie PHPWstepZanim rozpoczniemy nauke jezyka PHP, nalezy go poprawnie zainstalowac i skonfigurowac w uzywanym srodowisku interpreter PHP. Poniewaz pakiet PHP moze dzialac na wielu serwerach WWW i systemach operacyjnych, w rozdziale tym znajda sie szczeglowe opisy instalacji na jedynie kilku platformach, ale podane informacje sa wystarczajaco uniwersalne i moga byc wykorzystane przy konfigurowaniu srodowiska pracy na innych platformach. W rozdziale tym opisane zostana szczeglowo Apache dla Linuksa oraz IIS dla Windows NT. Sa to czesto spotykane konfiguracje serwerw WWW i sa one na tyle rzne, ze ilustruja oglne zasady instalacji pakietu PHP na wiekszosci platform. Szczeglowe dane na temat okreslonej platformy mozna rwniez znalezc na witrynie www.php.net.

Pobieranie PHPPierwszym krokiem do rozpoczecia pracy z PHP jest zaopatrzenie sie w kopie interpretera PHP. Na witrynie www.php.net umieszczone jest kilka wariantw tego pakietu. Najnowsza wersja zawsze znajduje sie na grze listy. W przypadku serwerw uniksowych zaleca sie pobranie pakietu zawierajacego kompletny kod zrdlowy i przeprowadzenie samodzielnej kompilacji. Platformy uniksowe to miedzy innymi Linux, BSD, Solaris itp. W przypadku Windows zaleca sie pobranie binarnej instalacji PHP. Ze strony zawierajacej pakiety instalacyjne mozna rwniez pobrac poprzednie wersje programw, dokumentacje i narzedzia pomocnicze. Poprzednie wersje moga byc potrzebne, jezeli masz juz gdzies zainstalowane PHP i nie chcesz ryzykowac niekompatybilnosci.

Instalowanie wersji binarnejPo pobraniu binarnej dystrybucji PHP, instalacja jest banalna. Najczesciej binarna instalacja PHP jest przeznaczona dla Windows. Poniewaz jednak niektre dystrybucje Uniksa zawieraja binarna dystrybucje PHP, opisany zostanie rwniez taki przypadek.

Binarna instalacja dla WindowsW PHP prawie wszystkie operacje mozna wykonac na kilka sposobw. Instalacja binarna dla Windows zawiera zarwno wersje CGI (Common Gateway Interface) PHP, jak rwniez wersje ISAPI. Jezeli korzystasz z serwera IIS (Internet Information Server) lub PWS (Personal Web Server) zalecane jest uzycie modulu ISAPI. Wersja CGI powoduje, ze PHP jest uruchamiany za kazdym odwolaniem do strony, wiec jest mniej efektywny od dynamicznego modulu jakim jest rozszerzenie ISAPI. Modul ISAPI jest rwniez ze swojej natury bezpieczniejszy od programu CGI.

Instalowanie PHP w postaci modulu ISAPI Jezeli korzystasz z serwera IIS, PWS lub innego serwera WWW obslugujacego moduly ISAPI, najlepszym rozwiazaniem bedzie uzycie PHP w postaci modulu ISAPI. Aby zainstalowac taka wersje, nalezy skopiowac pliki php4ts.dll i msvcrt.dll do katalogu systemowego Windows (zwykle \windows\system w Windows 95 lub \winnt\system32 w Windows NT). Sa to wspldzielone biblioteki niezbedne do prawidlowej pracy kazdej wersji PHP dla Windows. Dodatkowo mozna skopiowac do katalogu systemowego inne pliki .dll, ale nie jest to konieczne do ich uzycia. Nastepnie nalezy tak skonfigurowac IIS lub PWS, aby korzystal z modulu ISAPI do obslugi plikw php. Serwer IIS mozna konfigurowac za pomoca konsoli konfiguracji zainstalowanej w menu Option Pack. Na rysunku 1.1. znajduje jest rozwiniete menu pokazujace polozenie tego programu w Windows NT. Rysunek 1.1. Uruchamianie aplikacji konfigurujacej IIS

Po uruchomieniu konsoli Menedzer uslug internetowych nalezy kliknac prawym przyciskiem myszy na wezle serwera WWW (prawdopodobnie zatytulowany Domyslna witryna sieci Web) i wybrac Wlasciwosci, tak jak jest to pokazane na rysunku 1.2. Nastepnie w oknie Wlasciwosci nalezy przejsc na zakladke Katalog macierzysty i kliknac przycisk Konfiguracja. Opcja ta pozwala na dodawanie i edycje skojarzen. Rysunek 1.2. Konfigurowanie IIS

Teraz nalezy kliknac przycisk Dodaj i wprowadzic potrzebne informacje. Na rysunku 1.3. pokazany jest proces dodawania mapowania rozszerzenia phtml do modulu ISAPI PHP.

Rozdzial 1 Kompilacja i instalowanie PHP

12

Rysunek 1.3. Dodawanie mapowania dla rozszerzenia w IIS

Po dodaniu mapowania zmiany sa od razu widoczne w oknie dialogowym Konfiguracja aplikacji. Czasami moze byc pozyteczne skojarzenie niektrych rozszerzen z modulem ISAPI a niektrych z programem CGI. Na rysunku 1.4. pokazana jest konfiguracja mojego serwera WWW. Na rysunku widac mapowania dla PHP3, dla PHP4 jako CGI oraz PHP4 jako ISAPI. Jest to przydatne przy testowaniu rznic pomiedzy wersjami 3 i 4 PHP. Rysunek 1.4. Mapowanie rozszerzen PHP

Po zakonczeniu konfiguracji nalezy ponownie uruchomic serwer WWW. Mozna to zrobic przy uzyciu modulu Uslugi w Panelu sterowania, lub uruchamiajac z linii polecen nastepujace polecenia:net stop iisadmin net start w3svc

Po uruchomieniu serwera nalezy go przetestowac tworzac prosty plik testowy, na przyklad taki, jak pokazany na wydruku 1.1. i otwierajac go poprzez twj serwer. Jezeli wszystko jest skonfigurowane poprawnie, powinienes zobaczyc ekran z informacjami na temat instalacji PHP. Wydruk 1.1. Testowy skrypt PHP phpinfo()

13

PHP Kompendium wiedzy

Trzeba pamietac, ze w pakiecie instalacyjnym PHP znajduje sie uwaga na temat stanu modulu ISAPI ktra ostrzega, ze nie powinien byc stosowany w srodowisku produkcyjnym. Sugeruje sie, ze w celu zapewnienia odpowiedniej stabilnosci powinna byc uzyta wersja CGI. Nastepna czesc rozdzialu opisuje uzycie PHP jako CGI. Uzycie PHP jako CGI Jezeli nie masz zainstalowanego serwera WWW obslugujacego moduly ISAPI lub istnieja inne powody wyboru wersji CGI, nalezy przeprowadzic instalacje PHP jako CGI. Instalacja jest bardzo podobna do tej przedstawionej powyzej, rznice wystepuja jedynie przy mapowaniu rozszerzen. Zamiast wybierac biblioteke .dll ISAPI, nalezy wybrac plik php.exe. Serwer IIS lub PWS wysyla parametry do pliku wykonywalnego CGI, wiec oprcz nazwy pliku wykonywalnego nalezy podac opcje linii polecen %s %s. Jest to pokazane na rysunku 1.4. dla rozszerzenia .php4. Rzne serwery WWW maja rzne metody okreslenia mapowania rozszerzen. Do Apache dla Windows istnieje swietny podrecznik dostepny pod adresem www.php.net/manual/config-apache-nt.html. Zasoby sieci na temat instalacji PHP na rznych serwerach WWW dla Windows mozna odszukac za pomoca wyszukiwarki umieszczonej na witrynie www.php.net.

Inne instalacje binarneNiektre instalacje Uniksa posiadaja instalacje binarna PHP zintegrowana z instalacja serwera WWW. Niektrzy dostawcy, na przyklad Red Hat, udostepniaja rwniez binarna instalacje na swoich witrynach. Instalacja taka jest wykonana w formie plikw RPM (Red Hat Package Manager). Zaleta uzycia plikw RPM jest latwosc instalacji. Nie trzeba martwic sie szczeglami procesu kompilacji, poniewaz plik RPM zawiera gotowa do uzycia odpowiednio skompilowana wersje programu. Wada jest to, ze z powodu wielu mozliwych wariantw platform dla Uniksa, problemem dla poczatkujacych moze byc nawet wybr wlasciwego pliku. Poza tym w pliku RPM nie zawsze sa ustawione wszystkie potrzebne opcje konfiguracji, niezbedne do prawidlowego dzialania programu. Jezeli masz plik RPM z PHP, mozesz go zainstalowac wydajac polecenie rpm -i . Powoduje to zainstalowanie plikw binarnych do katalogw okreslonych przez twrce pliku RPM. Dla wiekszosci uzytkownikw katalogi te sa prawidlowe. Po instalacji nalezy recznie skonfigurowac serwer WWW tak, aby korzystal z zainstalowanych wlasnie plikw binarnych PHP. Ponizej przedstawimy sposb konfiguracji Apache. Inne serwery WWW wymagaja przeprowadzenia podobnych czynnosci. Niezaleznie od tego, czy PHP bedzie dzialalo jako program CGI czy w postaci modulu, pierwszy krok konfiguracji jest zawsze taki sam. Trzeba utworzyc skojarzenie pomiedzy rozszerzeniem pliku a wewnetrznym typem stosowanym przez serwer. Robi sie to dodajac do pliku konfiguracyjnego nastepujace linie:AddType application/x-httpd-php .php AddType application/x-httpd-php .phtml AddType application/x-httpd-php .inc

Dyrektywy te powoduja, ze Apache uwaza wszystkie pliki z rozszerzeniami .php, .phtml i .inc jako pliki typu application/x-httpd-php. Do przetwarzania tego typu plikw wykorzystywane jest PHP. Zakladajac, ze masz zainstalowane PHP w postaci modulu Apache, kolejnym krokiem bedzie modyfikacja pliku konfiguracyjnego httpd.conf tak, aby Apache zaladowal modul PHP:LoadModule php4_module libexec/libphp4.so

Jezeli zainstalowana zostala wersja CGI, nalezy wprowadzic nieco inne zmiany do pliku konfiguracji httpd.conf. Dyrektywa konfiguracji jest podobna do poprzedniej, ale odwoluje sie do programu w postaci pliku wykonywalnego.:Action application/x-httpd-php /cgi-bin/php

Dyrektywa Action definiuje typ pliku powodujacy uruchomienie PHP po otrzymaniu zadania sciagniecia strony z serwera WWW. Oczywiscie nalezy podac wlasciwa sciezke do pliku wykonywalnego. Po wprowadzeniu zmian nalezy ponownie uruchomic serwer WWW, aby zaczely dzialac nowe ustawienia. Serwer Apache mozna zrestartowac za pomoca polecenia:/sciezka/do/apachectl restart

Aby przetestowac konfiguracje mozna wczytac za pomoca przegladarki skrypt testowy, przedstawiony na wydruku 1.1. Binarna dystrybucja PHP ulatwia szybkie rozpoczecie pracy z PHP w Uniksach, ale moze ona sprawiac problemy. Z powodu istnienia wielu wariantw Uniksw, znalezienie gotowej wersji dzialajacej na okreslonym Rozdzial 1 Kompilacja i instalowanie PHP 14

systemie moze byc czasami trudne. W wielu przypadkach bedzie to bardziej czasochlonne niz sciagniecie kodu zrdlowego, skompilowanie i zainstalowanie PHP. Proces ten zostanie opisany w kolejnej czesci rozdzialu.

Kompilowanie PHPJezeli chcesz skorzystac z elastycznosci wlasnej instalacji PHP lub jezeli przewidujesz dodawanie wlasnych rozszerzen do jezyka PHP (opisane w rozdziale 11. Ponowne wykorzystanie kodu), musisz dokladnie poznac proces kompilowania PHP. Jezeli pracujesz na platformie, dla ktrej nie ma instalacji binarnej, mozesz nie miec innego wyboru jak tylko samodzielnie kompilowac PHP.

Kompilowanie PHP w UniksachW tej czesci rozdzialu przedstawione zostana informacje na temat kompilowania PHP na platformie Unix. Nalezy pamietac, ze Unix okresla cala rodzine systemw, np.: Linux, BSD, Solaris i inne. Oczywiscie systemy te rznia sie miedzy soba, ale wiele z krokw niezbednych do kompilacji PHP jest identycznych. Wiecej informacji na temat okreslonej platformy mozna odszukac za pomoca wyszukiwarki dostepnej na witrynie www.php.net. Dla kazdej platformy istnieje kilka sposobw kompilacji PHP. Jezeli serwerem WWW jest Apache, mozna skompilowac PHP jako plik wykonywalny, jako modul ladowany dynamicznie lub jako statyczna biblioteke. Jezeli nie korzystasz z Apache, nalezy odszukac w dokumentacji PHP i serwera WWW szczegly postepowania. Przy okazji mozemy zarekomendowac korzystanie z PHP w postaci dynamicznie ladowanego modulu, jako najlepsze rozwiazanie dla wiekszosci aplikacji. Jezeli PHP zostanie statycznie dolaczony do Apache, kazda zmiana konfiguracji wymaga wiekszego nakladu pracy. W przypadku modulu CGI, wystepuja problemy z bezpieczenstwem. W kolejnych czesciach zakladamy, ze sciagnales juz zrdla PHP i rozpakowales je. Proces kompilacji jest wlasciwie taki sam dla kazdego typu pliku wynikowego. Na poczatku trzeba uruchomic skrypt configure, ktry ustawia opcje kompilacji. Nastepnie przy pomocy narzedzia make przeprowadza sie kompilacje. Na koniec trzeba zainstalowac gotowe PHP i zrestartowac serwer WWW. Informacje na temat skryptu konfiguracyjnego sa przedstawione w czesci poswieconej kompilowaniu modulu CGI, wiec zaleca sie przeczytanie tego fragmentu jako wprowadzenia. Kompilacja modulu CGI Kompilacja PHP do postaci wykonywalnego modulu CGI jest najprostsza metoda kompilacji i dobrym rozwiazaniem, jezeli nigdy wczesniej nie kompilowales programw dla Uniksa. Ponizej przedstawiona jest kompletna lista operacji jakie nalezy wykonac. Niektre z nich nie sa obowiazkowe. Operacje opcjonalne sa zaznaczone czcionka pochyla. Odwolanie do powinno byc zamienione na nazwe twojego katalogu bazowego PHP.cd rm config.cache make clean ./configure make make install

Wykonanie tych operacji spowoduje usuniecie podrecznych danych konfiguracji, usuniecie plikw wynikowych a nastepnie skompilowanie PHP do postaci CGI. Jest to najprostsza metoda kompilacji, przytoczona jedynie jako przyklad. W prawdziwej kompilacji do skryptu konfiguracyjnego dolacza sie opcje okreslajace atrybuty PHP. Druga i trzecia linia jest nieobowiazkowa, poniewaz polecenia w nich umieszczone sa uzywane jedynie do wyczyszczenia poprzedniej konfiguracji i pozostalosci po poprzedniej kompilacji. Jezeli wczesniej nie konfigurowales ani nie kompilowales PHP, nie sa one potrzebne. Mozna rwniez nie korzystac z tych opcji przy kompilacji PHP, choc czasami ich wykonanie jest niezbedne. Jezeli wprowadzane sa powazne zmiany w konfiguracji lub zmieniasz typ kompilacji z CGI na inny, moze okazac sie, ze wykonanie czyszczenia jest niezbedne, aby kompilacja przebiegla prawidlowo. W zaleznosci od szybkosci komputera, na ktrym wykonywana jest kompilacja, przeprowadzenie calej konfiguracji i kompilacji moze zajac dosyc duzo 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 wiedziec, ze skrypt konfiguracyjny poszukuje w systemie narzedzi, plikw i innych danych systemowych. Nastepnie na podstawie tych danych tworzy specyficzny dla systemu skrypt za pomoca mozna skompilowac kod. Jezeli w czasie dzialania skryptu konfiguracyjnego nastapi awaria, czesto zdarza sie, ze wymagany plik lub narzedzie nie jest odnajdywane lub niewlasciwie skonfigurowane. Po zakonczeniu dzialania skryptu konfiguracyjnego tworzony jest plik tymczasowy config.cache zawierajacy szczegly na temat systemu, wiec badanie systemu nie musi byc powtarzane przy ponownym uruchomieniu konfiguracji. Jezeli wprowadzisz duze zmiany do konfiguracji systemu, musisz usunac plik tymczasowy przed kolejnym uruchomieniem skryptu konfiguracyjnego. W ten sposb upewniamy sie, ze zmiany te zostana wykryte. Po wykonaniu wszystkich podanych polecen zostanie utworzony nowy plik wykonywalny php. Mozna przetestowac poprawnosc kompilacji za pomoca nastepujacego polecenia:php < /dev/null

Jezeli zobaczysz wynik podobny do ponizej przedstawionego, udalo ci sie poprawnie skompilowac i zainstalowac PHP w postaci CGI.X-Powered-By: PHP/4.0.2 Content-type: text/html

Trzeba zauwazyc, ze skompilowana wlasnie wersja PHP nie posiada funkcji, ktre byc moze bedziemy chcieli wykorzystywac w aplikacjach, poniewaz zostala skompilowana z uzyciem tylko ustawien domyslnych. Trzeba ponownie uruchomic skrypt konfiguracyjny, ustawic opcje potrzebne w aplikacji a nastepnie ponownie skompilowac i zainstalowac PHP. Pozyteczna cecha zestawu domyslnych ustawien jest to, ze dolaczone jest do niego wiele czesto uzywanych opcji konfiguracji, w tym obsluga bazy danych MySQL, sesji i wiele, wiele innych. Oznacza to, ze przytoczone polecenia umozliwiaja skompilowanie PHP, ktry pozwala na rozpoczecie nauki jezyka. Jezeli potrzebujesz obslugi innej bazy danych lub innego rozszerzenia, trzeba dodac odpowiednia opcje konfiguracji. Lista dostepnych opcji jest wyswietlana po wpisaniu:./configure --help

with-PAKIET.

Wiekszosc opcji konfiguracji wplywajacych na dostepne funkcje PHP ma postac Aby dodac funkcje do PHP nalezy uzyc jednej z ponizszych form: Aby usunac funkcje z PHP, nalezy uzyc:

--enable-FUNKCJA

lub --

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

Pelna lista opcji konfiguracji znajduje sie w skorowidzu na koncu ksiazki. Funkcje korzystajace ze skladni --enable sa to zwykle wbudowane opcje PHP, takie jak mozliwosc wykorzystywania krtkich znacznikw lub obsluga protokolu FTP. Pakiety sa to zwykle moduly zewnetrzne, ktre moga byc dolaczone do PHP, na przyklad obsluga bazy danych Oracle lub Javy. Te wlasnosci wymagaja zwykle wskazania zewnetrznego pliku i do jego wlaczania korzysta sie z nastepujacego zapisu:--with-PAKIET=/sciezka/do/pakietu

Aby wylaczyc pakiet nalezy uzyc polecen:--with-PAKIET=no --without-PAKIET

Jako przyklad przedstawimy nastepujaca konfiguracje:./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

Powyzsze wywolanie konfiguracji powoduje dodanie do PHP obslugi Javy, CyberCash, SNMP (Simple Network Management Protocol) oraz unixODBC. Nie zostalo podane polozenie katalogu Javy, wiec skrypt konfiguracyjny uzyje domyslnej sciezki do katalogu z tym pakietem. Dodatkowo zostala dodana opcja -withapxs, ktra powoduje, ze PHP jest kompilowane do postaci dynamicznie ladowanego modulu Apache a nie jako program typu CGI. Pzniej omwimy to zagadnienie dokladniej. W przedstawianej konfiguracji wylaczono informacje dla debuggera oraz wlaczono opcje track-vars, fin-funcs oraz ucd-snmp-hack. Opcja fin-funcs powoduje dodanie wlasnego modulu rozszerzen opisanego w dalszej czesci ksiazki (rozdzial 11.), natomiast pozostale sa standardowymi elementami konfiguracji opisanymi w skorowidzu na koncu ksiazki.

Rozdzial 1 Kompilacja i instalowanie PHP

16

Wiele z pakietw oprogramowania jakie chcemy dodac do PHP musi byc osobno zainstalowane. Wiecej informacji na temat tego, gdzie mozna zaopatrzyc sie w potrzebne pakiety, mozna znalezc w dokumentacji na witrynie www.php.net. Po utworzeniu PHP w postaci CGI, nalezy skonfigurowac serwer WWW do wsplpracy z nowym programem. Aby skonfigurowac serwer Apache nalezy dodac nastepujace 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 definiuja zawartosc plikw z rozszerzeniami php, phtml i inc jako typ application/x-httpd-php. Ostatnia dyrektywa powoduje wyslanie wszystkich plikw tego typu do pliku wykonywalnego php. Zakladamy, ze plik ten jest umieszczony w katalogu cgi-bin serwera WWW. Dyrektywy te sa minimum wymaganym do konfiguracji PHP w Apache, ale ta sama czynnosc moze byc zrealizowana jeszcze na kilka sposobw. Wiecej szczeglw mozna znalezc w dokumentacji do Apache. Kompilacja PHP jako statycznie dolaczanego modulu Apache Apache pozwala na statyczne dolaczanie modulw bezposrednio do pliku binarnego Apache. W porwnaniu z wersja CGI uzycie modulu pozwala poprawic wydajnosc aplikacji oraz zwiekszyc bezpieczenstwo systemu,. Wada tej metody jest koniecznosc powtrnej kompilacji Apache po kazdej kompilacji PHP. Moze byc to czasochlonne i frustrujace, poniewaz w przypadku wystapienia klopotw z konfiguracja PHP, Apache moze rwniez przestac dzialac. Jednak niektre aplikacje wymagaja zastosowania statycznie dolaczanego modulu Apache, opiszemy teraz sposb jego tworzenia. Przed skonfigurowaniem i skompilowaniem PHP niezbedne jest skonfigurowanie Apache. Zakladamy, ze na dysku jest juz katalog z kodem zrdlowym Apache. Aby skonfigurowac Apache, nalezy uzyc nastepujacych polecen:cd ./configure

Po zakonczeniu dzialania tego skryptu mozna zajac sie konfigurowaniem i kompilowaniem PHP.cd ./configure --with-apache= make make install

Opcja --with-apache powoduje kompilacje do postaci statycznej biblioteki oraz pozwala podac katalog z plikami zrdlowymi Apache. Nastepnie nalezy skompilowac serwer Apache za pomoca polecen:cd ./configure --prefix=/www --activate-module=src/modules/php4/libphp4.a make make install

Dyrektywa prefix moze byc inna w twoim systemie, poniewaz wskazuje ona katalog gdzie zostana zainstalowane pliki zalezne od architektury. Teraz nalezy uruchomic serwer Apache i przy wykorzystaniu skryptu testowego z wydruku 1.1. sprawdzic poprawnosc konfiguracji. Aby Apache prawidlowo przetwarzal pliki PHP nalezy odpowiednio zmodyfikowac plik httpd.conf. W zaleznosci od rozszerzen jakie zostaly wybrane do reprezentowania plikw PHP, nalezy wprowadzic odpowiednie zmiany. I tym razem standardowa konfiguracja wyglada nastepujaco:AddType application/x-httpd-php .php AddType application/x-httpd-php .phtml AddType application/x-httpd-php .inc

Przedstawiony opis przedstawia jedynie bardzo prosta wersje PHP, ktra zawiera jedynie opcje domyslne. Wiecej informacji o zmianie konfiguracji kompilacji PHP znajduje sie w czesci na temat kompilacji wersji CGI. Kompilacja PHP do postaci dynamicznie ladowanego modulu Apache Sposb kompilacji PHP do postaci dynamicznie ladowanego modulu Apache nie rzni sie zbytnio od innych przedstawionych do tej pory metod. Zaleta tej metody jest mozliwosc kompilacji PHP bez koniecznosci rwnoczesnej kompilacji Apache. Rwniez niektre moduly rozszerzen (na przyklad Java) wymagaja do poprawnej pracy, aby PHP byl skompilowany do postaci dynamicznie ladowanego modulu. Aby Apache obslugiwal dynamicznie ladowane moduly nalezy go przekompilowac z nastepujacymi 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 przygotowuja skrypt apxs, ktry jest niezbedny do kompilacji dynamicznego modulu PHP. Jezeli wystapia klopoty ze skryptem apxs mozna powtrnie wykonac przedstawione polecenia, co spowoduje ponowne wygenerowanie prawidlowo skonfigurowanego skryptu. Po skompilowaniu Apache z obsluga dynamicznie ladowanych modulw, nalezy skompilowac PHP w nastepujacy sposb:cd make clean rm config.cache ./configure --with-apxs=/www/bin/apxs (pozostale opcje) make make install

Polecenia porzadkujace sa zalecane, jezeli PHP byl juz kompilowany w innej konfiguracji. Sciezka podana w dyrektywie konfiguracji --with-apxs powinna byc pelna sciezka do skryptu apxs na serwerze. Tak jak w przypadku poprzednich sposobw kompilacji nalezy prawidlowo skonfigurowac Apache, aby przetwarzal pliki PHP. Po zmodyfikowaniu konfiguracji nalezy uruchomic Apache i wywolac skrypt testowy. Podsumowanie kompilacji PHP w systemach Unix Celem tego fragmentu ksiazki nie bylo podawanie szczeglowego i wyczerpujacego opisu wszystkich mozliwych opcji konfiguracji, ale pokazanie podstawowych metod kompilowania PHP do rznych postaci. Jezeli nie kompilowales wczesniej PHP, powinienes na poczatku sprbowac skompilowac podstawowa konfiguracje, a pzniej uzupelniac potrzebne opcje. Po zapoznaniu sie z procesem kompilacji jest juz bardzo latwo testowac rzne konfiguracje i dodawac niestandardowe rozszerzenia. Po skompilowaniu PHP i sprawdzeniu, czy dziala z Apache, mozna zapoznac sie z opcjami konfiguracji, ktre mozna ustawiac bez potrzeby ponownej kompilacji. Zostaly one opisane w dalszej czesci rozdzialu.

Kompilowanie PHP w srodowisku WindowsKompilowanie PHP dla Windows jest na poczatku bardziej skomplikowanym procesem niz kompilacja PHP dla Uniksa. Dokumentacja zaleca uzycie Visual C++ wersja 6, choc wersja 5 rwniez powinna dzialac. Prbowalem sprawdzic, czy mozna uzyc pakietu Borland C++ Builder, ale nie udalo mi sie tego zrobic. Problem stanowily prekompilowane pliki lib, poniewaz Microsoft i Borland korzystaja z rznych formatw tych plikw. Prawdopodobnie mozna zastosowac kompilator Borlanda, ale trzeba wczesniej przekompilowac wszystkie biblioteki. W ponizszym opisie zakladamy uzycie Visual C++. Przed rozpoczeciem pracy nalezy sie zaopatrzyc w kilka programw i plikw pomocniczych. Tabela 1.1. zawiera wszystkie dodatkowe programy oraz adresy w Internecie, gdzie byly dostepne w czasie pisania ksiazki. Tabela 1.1. Dodatkowe pliki pomocnicze i ich adresy w Sieci Program Polozenie Kod zrdlowy PHP www.php.net/download.php Pakiet Cygwin http://sources.redhat.con/cygwin/ Narzedzia do kompilacji PHP dla www.php.net/extra/win32build.zip Win32 Obsluga BCMath www.php.net/version4/downloads/num ber.tar.gz Zastepnik pliku resolv.lib www.php.net/version4/downloads/bind lib_w32.zip Pakiet Cygwin zawiera popularne narzedzia GNU, takie jak gcc, make i bison. Niektre z tych programw sa wykorzystywane w procesie kompilacji, wiec trzeba wczesniej zainstalowac ten pakiet. Inne potrzebne pliki sa integralna czescia dystrybucji PHP. Kod zrdlowy PHP jest identyczny jak ten, ktry jest uzywany do utworzenia wersji dla Uniksa. Potrzebny jest rwniez program do rozpakowywania plikw. Ja uzywam programu Winzip, poniewaz bez problemu radzi sobie z plikami .tar.gz. Rwniez inne programy posiadaja takie mozliwosci. Na poczatku nalezy zainstalowac narzedzia Cygwin. Trzeba recznie dodac zmienna srodowiska wskazujac na polozenie plikw Cygwin. Jezeli pracujesz w Windows 95, trzeba dodac ta zmienna recznie do pliku autoexec.bat. W Windows NT nalezy kliknac prawym przyciskiem myszy ikone Mj komputer i wybrac z menu Wlasciwosci. Teraz trzeba Rozdzial 1 Kompilacja i instalowanie PHP 18

kliknac zakladke Srodowisko i dodac nowa zmienna, tak jak jest to pokazane na rysunku 1.5. Zmienna nazywa sie a jej wartoscia jest sciezka do katalogu, gdzie zainstalowane sa narzedzia Cygwin. Rysunek 1.5. Ustawienie zmiennej srodowiskowej CYGWINCYGWIN

Nastepnie utwrz katalog i rozpakuj do niego zawartosc pliku win32build.zip. Uruchom Visual C++ i wybierz Options z menu Tools. Teraz wybierz zakladke Directories (rysunek 1.6.) i przy uzyciu listy rozwijalnej opisanej Show directories for, wybierz opcje 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++ bedzie mgl korzystac z zainstalowanych narzedzi i plikw. Rysunek 1.6. Ustawienie katalogw w Visual C++

Kolejnym krokiem bedzie 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 wersje handlowa biblioteki lub wersje do uruchamiania. Nacisnij klawisz F7, aby skompilowac projekt. Po zakonczeniu kompilacji nalezy skopiowac plik resolv.lib do katalogu win32build\lib. Nastepnie rozpakuj zrdla PHP i plik number.tar.gz za pomoca zewnetrznego programu lub narzedzia tar z pakietu Cygwin. Skopiuj rozpakowane pliki number.c i number.h do katalogu ext/bcmath w katalogu z kodem zrdlowym PHP. 19 PHP Kompendium wiedzy

Jezeli wykonales wszystkie opisane wczesniej czynnosci, jestes gotowy do kompilacji PHP. Uruchom Visual C++ i otwrz plik projektu php4ts.dsp, znajdujacy sie w podkatalogu win32 katalogu z kodem zrdlowym PHP. Projekt ten zawiera kilka konfiguracji. Najlatwiej jest rozpoczac od skompilowania wersji CGI wybierajac wersje handlowa lub wersje z danymi dla debuggera, tak jak jest to pokazane na rysunku 1.7. Rysunek 1.7. Wybr konfiguracji dla wersji CGI

Skompiluj projekt i jezeli wszystko pjdzie dobrze posiadasz juz wlasna wersje PHP. Jezeli potrzebujesz wersji PHP jako ISAPI lub NSAPI, wystarczy wybrac odpowiednia konfiguracje dla kompilacji i ponownie skompilowac projekt. Jak wspomnialem wczesniej, najtrudniejsza czescia bylo wstepne przygotowanie srodowiska. Gdy wszystko jest juz gotowe, cala reszta jest tak samo prosta jak w Uniksie.

Podsumowanie kompilacji PHPKompilowanie wersji PHP dla Windows jest za pierwszym razem duzo trudniejsze od wersji dla Uniksa, ale gdy wszystkie potrzebne dodatki zostana odpowiednio skonfigurowane, jest juz proste. Gdy poznales juz proces kompilowania PHP dla obu platform mozesz tworzyc wysoce specjalizowane wersje PHP, spelniajacych precyzyjnie potrzeby konkretnej witryny. Dokladna wiedza na temat procesu kompilacji PHP jest rwniez niezbedna, aby mc tworzyc rozszerzenia PHP. Zagadnienie to zostalo opisane w rozdziale 11.

Konfigurowanie PHPNiezaleznie od platformy na ktrej dziala PHP, sposb jego konfigurowania jest taki sam. Wykorzystuje sie w tym celu plik php.ini. Plik ten jest dostarczany w dystrybucji PHP jako php.ini-dist i php.ini-optimized. Jezeli nie znasz dobrze opcji konfiguracji, powinienes rozpoczac do podstawowych ustawien z pliku php.ini-dist. Pierwszym krokiem bedzie skopiowanie i zmiana nazwy pliku. Plik powinien byc nazwany php.ini i skopiowany do katalogu zaleznego od uzywanej platformy. W tabeli 1.2. zamieszczone sa podstawowe warianty. Tabela 1.2. Platformy PHP i polozenie pliku php.ini Platforma Polozenie pliku php.ini Windows Katalog zwykle \windows w Windows 95 i \winnt w Windows NT Unix Mozna to sprawdzic za pomoca funkcji phpinfo(), ale zwykle jest to /usr/local/lib. Po umieszczeniu pliku konfiguracyjnego w odpowiednim katalogu, nalezy do niego wprowadzic odpowiednie zmiany. Plik php.ini jest podzielony na sekcje, rozpoczynajace sie od linii [nazwa_sekcji] podobnie, jak w standardowych plikach ini systemu Windows. Plik ten zawiera obszerne komentarze opisujace przeznaczenie sekcji i opcji konfiguracji. W pozostalej czesci ksiazki czasami beda przytaczane opcje niezbedne do uruchomienia przykladw. Zwykle przyklad taki zawiera nazwe sekcji, nazwe opcji oraz wartosc. Aby wprowadzic zmiany najczesciej zmienia sie plik php.ini i ponownie uruchamia Apache, ale istnieja rwniez inne mechanizmy zmiany opcji. Mechanizmy te opisane zostana w pzniejszej czesci rozdzialu.

Korzystanie z pliku php.iniZalecana metoda zmiany konfiguracji jest modyfikacja pliku php.ini i ponowne uruchomienie serwera WWW. Jezeli korzystasz z PHP w postaci programu CGI nie musisz restartowac serwera, poniewaz plik php.ini jest odczytywany za kazdym uruchomieniem programu CGI. Dla przykladu mozna zmienic sposb raportowania bledw przez PHP, korzystajac z odpowiednich opcji konfiguracji. Opcje te maja nastepujace wartosci domyslne: Rozdzial 1 Kompilacja i instalowanie PHP 20

error_reporting display_errors log_errors error_log

= = = =

E_ALL & ~E_NOTICE ; Pokaz wszystkie bledy oprcz informacji On ; Wypisuj bledy (jako czesc wynikowego HTML) Off ; Zapisuj bledy do pliku bledw syslog ; Zapisuj bledy do dziennika systemowego

Pierwsza opcja powoduje generowanie komunikatw dla wszystkich typw bledw poza typem E_NOTICE. Nastepna linia powoduje wstawianie komunikatw bledw do wynikowego kodu HTML. Nastepne dwa wiersze powoduja zapisywanie komunikatw bledw w pliku. Zalzmy, ze w instalacji produkcyjnej nie chcemy wyswietlac bledw, a zamiast tego bledy beda zapisywane do okreslonego pliku. Mozna to zrealizowac zmieniajac konfiguracje w nastepujacy sposb:error_reporting display_errors log_errors error_log = = = = E_ALL ; Pokaz wszystkie bledy Off ; On ; Zapisuj bledy /tmp/php_log ; Zapisuj bledy do pliku /tmp/php_log

Taka konfiguracja powoduje, ze wszystkie komunikaty bledw, w tym informacje, beda zapisywane w pliku /tmp/php_log. Oczywiscie plik ten powinien miec odpowiednio ustawione prawa dostepu, aby serwer WWW mgl zapisac w nim dane. Z powodu duzej ilosci opcji konfiguracji, nie zostana tu przedstawione wszystkie mozliwe opcje. Pelna lista znajduje sie w skorowidzu na koncu ksiazki. Tutaj przedstawione zostana jedynie oglne sposoby wykorzystywania tych opcji. Aby zmienic opcje konfiguracji, nalezy otworzyc w edytorze plik php.ini i odszukac opcje. Zwykle znajduje sie tam sporo komentarzy opisujacych mozliwe wartosci danej opcji.

Inne metody zmiany konfiguracji PHPIstnieja dwie metody zmiany konfiguracji PHP bez koniecznosci modyfikacji pliku php.ini. Pierwszym sposobem jest wstawienie tych opcji do pliku konfiguracyjnego Apache httpd.conf lub do pliku .htaccess. Pierwsza metoda jest uzyteczna, jezeli chcemy miec rzne ustawienia PHP dla rznych serwerw wirtualnych lub rznych katalogw. Druga metoda jest wykorzystywana, gdy nie jest mozliwy dostep do plikw php.ini i httpd.conf. Jest to czesta sytuacja, witryna jest umieszczona na dzierzawionym serwerze zewnetrznej firmy. Jest to jednak najmniej zalecana metoda, poniewaz plik .htaccess jest wczytywany i analizowany za kazdym odwolaniem do stron znajdujacych sie w tym katalogu. Powoduje to znaczne spowolnienie serwera WWW. W obu tych przypadkach sposb zmiany konfiguracji PHP jest tak sam. Nalezy uzyc dyrektyw konfiguracji php_value i php_flag do ustawienia potrzebnych opcji. Na przyklad, aby ustawic poprzednio opisane opcje konfigurujace sposb raportowania bledw, nalezy uzyc nastepujacych 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 ustawien w pliku httpd.conf spowoduje, ze zostanie ustawiony sposb raportowania bledw dla serwera wirtualnego o nazwie www.testserver.com. Jezeli na tej samej maszynie istnieja inne serwery wirtualne, uzywaja one konfiguracji okreslonej przez plik php.ini. Pozwala to na posiadanie rznych konfiguracji PHP dla rznych serwerw wirtualnych lub katalogw. Jezeli musisz zmienic konfiguracje PHP a nie masz dostepu do pliku php.ini ani do httpd.conf, mozesz wykorzystac pliki Apache .htaccess. Jest to rwniez uzyteczne, jezeli okreslony katalog musi miec inne ustawienia konfiguracji niz reszta witryny. Na przyklad, mozna zmienic sposb raportowania bledw dla jednego katalogu na czas uruchamiania skryptw w nim sie znajdujacych. W tym celu nalezy stworzyc plik .htaccess z nastepujaca zawartoscia:php_value error_reporting 2039 php_flag log_errors off php_flag display_errors on

Nalezy zauwazyc, ze w obu przykladowych plikach konfiguracyjnych Apache wartosc zmiennej konfiguracji error_reporting jest ustawiana za pomoca wartosci numerycznej a nie stalej. Jest o jedyny sposb poprawnego ustawienia wartosci. Nalezy pamietac, ze konfigurujac PHP poprzez dyrektywy Apache nie mozna uzywac jako wartosci zadnych stalych PHP. W przeciwnym wypadku efekty moga byc niespodziewane. Aby zilustrowac potege dostepnego mechanizmu konfiguracji na rysunku 1.8. przedstawiony zostal schemat mozliwosci konfiguracji srodowiska PHP. 21 PHP Kompendium wiedzy

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

PodsumowanieW tym rozdziale przedstawiono kilka informacji niezbednych do rozpoczecia pracy z PHP. Z powodu elastycznosci i duzej ilosci obslugiwanych platform niemozliwe jest szczeglowe opisanie wszystkich dostepnych konfiguracji. Korzystajac jednak z informacji umieszczonych w tej ksiazce, oraz na witrynie www.php.net powinienes byc w stanie zainstalowac i skonfigurowac PHP na twojej platformie. Trzeba zauwazyc, ze PHP posiada wiele wlasnych funkcji zmieniajacych ustawienia konfiguracji. Przykladami takich funkcji sa error_reporting() oraz set_time_limit(). Wiecej informacji na temat tych funkcji mozna znalezc w skorowidzu na koncu ksiazki.

Rozdzial 1 Kompilacja i instalowanie PHP

22

Rozdzial 2. JezykWstepW rozdziale tym znajduje sie zwiezly opis jezyka programowania PHP. Jak wspomnialem we wstepie do ksiazki nie jest moja intencja poswiecac zbyt wiele czasu na omawianiu oglnych koncepcji programowania. W tym rozdziale znajduje sie opis skladni podstawowych konstrukcji programowania, na przyklad zmiennych, stalych i funkcji. Przyklady przytoczone w tym rozdziale nie pokazuja najlepszych technik programowania a jedynie ilustruja skladnie i uzycie omawianych elementw. Pelny opis jezyka znajduje sie w dokumentacji jezyka dostepnej na witrynie http://www.php.net.

Oglne informacje na temat skladniPoniewaz PHP jest zwykle wbudowywany w kod HTML istnieja specjalne znaczniki ograniczajace bloki PHP. Uzycie tych znacznikw jest nazywane czasem wyjsciem z trybu HTML. Wydruk 2.1. Sposoby oznaczania bloku kodu PHP w HTML echo "niektre edytory HTML nie obsluguja instrukcji przetwarzania
";

Pierwsza metoda oznaczania blokw PHP jest dostepna jedynie wtedy, gdy uaktywnione sa krtkie znaczniki. Aby to zrobic nalezy uzyc funkcji short_tags(), wlaczyc w pliku konfiguracyjnym opcje short_tag_open lub skompilowac PHP z opcja -enable-short-tags. Znaczniki w stylu ASP sa dostepne jedynie wtedy, gdy uaktywniona jest opcja konfiguracji asp_tags. Wiecej informacji na temat kompilowania i konfiguracji PHP znajduje sie w rozdzialach Kompilacja i instalowanie PHP oraz dodatku D - Opcje konfiguracji. PHP jest syntaktycznie bardzo podobny do C. Na przyklad, instrukcje sa oddzielone srednikiem. Znacznik ?> jest niejawnym koncem instrukcji, wiec ponizsze przyklady sa poprawne skladniowo: Wydruk 2.2. Koniec instrukcji

Komentarze w PHP mozna oznaczac symbolami komentarzy pochodzacymi z C, C++ lub stosowanych w skryptach Uniksa. Komentarze jednoliniowe komentuja tekst do konca linii lub do konca biezacego bloku PHP w zaleznosci od tego, co bedzie pierwsze. Nie mozna zaglebiac wielowierszowych komentarzy w stylu C. Wydruk 2.3. Komentarze To wyswietli nic.

TypyPHP posiada nastepujace typy: liczby zmiennoprzecinkowe, liczby calkowite, ciagi, tablice i obiekty. Typ zmiennej jest ustalany w oparciu o kontekst w jakim jest uzyta zmienna i nie jest on jawnie ustalany przez programiste. Jest to wazna cecha o ktrej nalezy pamietac podczas programowania aplikacji PHP, poniewaz niejawna konwersja typw moze spowodowac trudne do odnalezienia bledy. Na przyklad ponizsza instrukcja jest prawidlowa i spowoduje wyswietlenie liczby 9:print( 3* "3 male swinki");

Aby mozna bylo zapanowac nad typami, PHP posiada funkcje gettype() i settype() oraz kilka funkcji przeznaczonych dla okreslonych typw, na przyklad is_integer() lub is_array(). W skorowidzu funkcji na koncu ksiazki znajduje sie pelne omwienie tych funkcji. Teraz zostanie opisany kazdy z typw zmiennych (oprcz obiektw). Obiekty PHP zostana opisane w dalszej czesci rozdzialu.

Liczby calkowite i zmiennoprzecinkoweLiczby calkowite mozna podawac uzywajac notacji dziesietnej, semkowej i szesnastkowej. Liczby zmiennoprzecinkowe mozna podawac uzywajac notacji zwyklej lub zapisu naukowego. Na ponizszym wydruku pokazana jest skladnia PHP dla wszystkich tych notacji. Wydruk 2.4. Reprezentacja liczb

CiagiCiagi w PHP sa ograniczane apostrofami (') lub cudzyslowami ("). Zapisy te rznia sie sposobem interpretacji ciagu. Jezeli ciag jest otoczony cudzyslowami, zmienne zapisane w ciagu zostaja zamienione na ich wartosci. Aby zapisac znaki specjalne w ciagach otoczonych cudzyslowami, nalezy uzyc znaku lewego ukosnika (\), tak jak zostalo to pokazane w tabeli 2.1. Tabela 2.1. Znaki specjalne w ciagach otoczonych cudzyslowami Sekwencja znakw Znaczenie \n nowa linia \r powrt karetki (CR) \t tabulacja \\ lewy ukosnik \" cudzyslw \$ znak dolara W ciagach otoczonych apostrofami zmienne nie sa zastepowane. Jedynymi dopuszczalnymi sekwencjami sterujacymi sa te oznaczajace lewy ukosnik (\\) i apostrof (\'). Sekwencje te pozwalaja na wpisanie do ciagu znaku apostrofu i lewego ukosnika. Ciagi moga byc laczone przy uzyciu operatora kropki (.). Dokladniej jest to opisane w czesci rozdzialu na temat operatorw. Podobnie jak w jezyku C, mamy dostep do poszczeglnych znakw ciagu, traktujac go jak tablice znakw. Wydruk 2.5. Przyklad operacji na ciagach

break i continuePHP posiada rwniez znane z C instrukcje break i continue, ktre pozwalaja na dodatkowe sterowanie petlami. Obie te instrukcje pozwalaja na podanie im parametru numerycznego, ktry okresla ilosc zaglebionych petli, ktre nalezy przerwac lub rozpoczac od poczatku. Wyrazenie break konczy wykonanie biezacej konstrukcji sterujacej (petli lub wyrazenia switch). Wyrazenie continue jest uzywane jedynie w petlach. Powoduje ono opuszczenie pozostalych instrukcji ciala petli i rozpoczecie nowej iteracji. Najczesciej instrukcje break i continue sa stosowane w zagniezdzonych petlach. W przypadku petli prostych, wyrazenia warunkowe sa wystarczajace do realizacji tych zadan. Wydruk 2.18. Przyklady uzycia break i continue

PHP osiada alternatywna skladnie dla konstrukcji sterujacych if, while, for i switch. W kazdej z tych konstrukcji otwierajaca klamra jest zamieniona na dwukropek (:) a zamykajaca klamra na odpowiednio endif, endwhile, endfor i endswitch. Gdy tworzysz duze skrypty wbudowane w HTML, skladnia alternatywna moze byc uzyteczna, poniewaz zapewnia wyrazna identyfikacje konca struktur sterujacych. Wydruk 2.19. Przyklad uzycia alternatywnej skladni PHP na stronie HTML Przyklad 19

35

PHP Kompendium wiedzy

Wybierz swj rok urudzenia: Prosze wpisac dane nowego pracownika:

Na wydruku 9.4 pokazujemy w jaki sposb mozna sprawdzic obsluge ActiveX i tak samo latwo mozna sprawdzic kazda z wlasciwosci BrowserHawk. W tabeli 9.1. zamieszczone sa metody odczytujace informacje na temat mozliwosci przegladarki dostepne w BrowserHawk. Typ Metoda Zastosowanie Boolean getActiveXControls() Sprawdza, czy przegladarka obsluguje kontrolki ActiveX. Boolean getAOL() Sprawdza, czy uzytkownik witryny korzysta z przegladarki firmowanej przez America Online (AOL) (na sieci AOL). double getAOLVersion() Zwraca numer wersji przegladarki AOL. int getAuthenticodeUpdate() Zwraca numer wersji Authenticode obslugiwanego przez przegladarke. Boolean getBackgroundSounds() Sprawdza, czy przegladarka potrafi odgrywac dzwiek w tle. Boolean getBeta() Sprawdza, czy przegladarka jest w wersji beta. java.lang.String getBrowser() Zwraca oglna nazwe przegladarki, na przyklad Netscape lub IE (Internet Explorer). Boolean getCDF() Sprawdza, czy przegladarka obsluguje Channel Definition Format (CDF) uzywany do prenumerowania zawartosci WWW z mozliwoscia automatycznej aktualizacji. Boolean getCompressGZip() Sprawdza, czy przegladarka przyjmuje dane w skompresowanym formacie GZip. Boolean getCookies() Sprawdza, czy przegladarka obsluguje cookie. Boolean getCrawler() Sprawdza, czy przegladarka jest szperaczem sieciowym lub innym programem wykorzystywanym do indeksowania zawartosci witryny. Boolean getDHML() Sprawdza, czy przegladarka obsluguje skrypty DHTML(). java.lang.String getFileUpload() Sprawdza, czy przegladarka obsluguje Rozdzial 9 Niezaleznosc od przegladarki 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() getSS