You are on page 1of 16

IDZ DO

PRZYKADOWY ROZDZIA
SPIS TRECI

KATALOG KSIEK
KATALOG ONLINE
ZAMW DRUKOWANY KATALOG

TWJ KOSZYK
DODAJ DO KOSZYKA

CENNIK I INFORMACJE
ZAMW INFORMACJE
O NOWOCIACH
ZAMW CENNIK

CZYTELNIA
FRAGMENTY KSIEK ONLINE

Wydawnictwo Helion
ul. Kociuszki 1c
44-100 Gliwice
tel. 032 230 98 63
e-mail: helion@helion.pl

PHP i MySQL.
Wprowadzenie
Autorzy: Michele Davis, Jon Phillips
Tumaczenie: Radosaw Meryk
ISBN: 83-246-0679-3
Tytu oryginau: Learning PHP and MySQL
Format: B5, stron: 352

Twrz dynamiczne witryny WWW


Poznaj jzyk PHP
Zaprojektuj w MySQL bazy i tabele
Napisz komponenty witryn WWW
Wprowad mechanizmy zabezpiecze
Statyczne witryny WWW, ktre jeszcze cakiem niedawno krloway w internecie, dzi
odchodz do lamusa. Spord milionw stron internetowych w pami internautw zapadaj
te, ktre yj, s czsto aktualizowane, generowane dynamicznie i posiadaj elementy
interaktywne. Niestety, moliwoci jzyka HTML nie pozwalaj na tworzenie dynamicznych
witryn WWW. W tym celu naley sign po inne technologie. Dzi najczciej stosowanym
rozwizaniem jest poczenie strony internetowej z baz danych oraz wykorzystywanie
jzyka skryptowego, interpretowanego po stronie serwera, do pobierania treci z bazy
i wywietlania jej na stronie. Do takich zada w wikszoci witryn WWW uywany jest
jzyk PHP i baza danych MySQL. Narzdzia te, poza ogromnymi moliwociami
i niewielkimi wymaganiami sprztowymi, maj ogromn zalet s dostpne nieodpatnie.
Dziki ksice PHP i MySQL. Wprowadzenie zdobdziesz podstawow wiedz na temat
tworzenia dynamicznych witryn WWW za pomoc jzyka PHP i bazy danych MySQL.
Dowiesz si, w jaki sposb zainstalowa PHP i MySQL, jak przygotowa pliki konfiguracyjne
i dostroi dziaanie tych rodowisk. Poznasz sposoby czenia kodu PHP ze znacznikami
HTML, elementy jzyka PHP i techniki programowania w nim. Nauczysz si projektowa
i tworzy bazy danych oraz tabele, formuowa zapytania w jzyku SQL i administrowa
serwerem baz danych. Poczysz skrypty PHP z baz danych za pomoc biblioteki PEAR
oraz napiszesz moduy obsugi formularzy, sesji i plikw cookie. Przeczytasz take
o zabezpieczaniu witryn WWW przed nieautoryzowanym dostpem.
Zasady projektowania dynamicznych witryn WWW
Instalacja PHP i MySQL
czenie kodu PHP z HTML
Struktury, obiekty i operatory jzyka PHP
Projektowanie baz danych
Podstawy tworzenia zapyta SQL
Konfiguracja baz danych MySQL i zarzdzanie tabelami
Poczenie PHP i MySQL za porednictwem funkcji PHP i repozytorium PEAR
Obsuga formularzy HTML w PHP
Zarzdzanie sesjami, plikami cookie
Bezpieczestwo PHP i MySQL
Poznaj technologi tworzenia ywych witryn WWW

Przedmowa ................................................................................................................................7
1. Dynamiczna tre na stronach WWW ..........................................................................11
Miejsce technologii PHP i MySQL w procesie tworzenia aplikacji internetowych
Komponenty aplikacji PHP
Integracja wielu rde informacji
danie danych ze strony WWW
Pytania do rozdziau 1.

11
13
16
20
22

2. Instalacja .......................................................................................................................23
Tworzenie aplikacji w trybie lokalnym
Praca zdalna
Pytania do rozdziau 2.

23
34
37

3. Poznajemy PHP ..............................................................................................................39


Obsuga tekstu w PHP
Cegieki kodowania
Pytania do rozdziau 3.

39
42
57

4. Podejmowanie decyzji w PHP ......................................................................................59


Wyraenia
Operatory
Instrukcje warunkowe
Ptle
Pytania do rozdziau 4.

59
61
67
73
78

5. Funkcje ...........................................................................................................................79
Wywoywanie funkcji
Definiowanie funkcji
Programowanie obiektowe
Pytania do rozdziau 5.

80
82
88
97

6. Tablice ............................................................................................................................99
Podstawowe informacje o tablicach
Pytania do rozdziau 6.

99
110

7. Podstawowe wiadomoci o bazach danych .............................................................. 111


Projekt bazy danych
Strukturalny jzyk zapyta
Pytania do rozdziau 7.

112
121
129

8. Korzystanie z MySQL ...................................................................................................131


Baza danych MySQL
Zarzdzanie baz danych
Tworzenie kopii zapasowych danych i ich odtwarzanie
Zaawansowane instrukcje SQL
Pytania do rozdziau 8.

131
134
138
143
156

9. Komunikacja PHP z MySQL ......................................................................................... 159


Procedura
Wykonywanie zapyta do bazy danych za pomoc funkcji PHP
Korzystanie z PEAR
Pytania do rozdziau 9.

159
160
169
174

10. Obsuga formularzy .....................................................................................................177


Tworzenie formularzy
Szablony
Pytania do rozdziau 10.

177
193
197

11. PHP w praktyce ........................................................................................................... 199


Funkcje tekstowe
Funkcje przetwarzania dat i godzin
Operacje na plikach
Korzystanie z wywoa systemowych
Pytania do rozdziau 11.

199
208
212
221
222

12. Modyfikowanie obiektw MySQL i danych PHP .......................................................223


Modyfikowanie obiektw bazy danych z poziomu PHP
Wykonywanie operacji na danych tabeli
Wywietlanie wynikw z wykorzystaniem osadzonych czy
Formularz do wprowadzania danych i jego obsuga w jednym pliku
Aktualizacja danych
Usuwanie danych
Wykonywanie podzapyta
Pytania do rozdziau 12.

Spis treci

223
226
226
229
234
235
239
240

13. Pliki cookie, sesje i kontrola dostpu ......................................................................... 241


Pliki cookie
PHP i uwierzytelnianie HTTP
Sesje
Wykorzystanie moduu Auth_HTTP do uwierzytelniania
Pytania do rozdziau 13.

241
244
248
255
258

14. Bezpieczestwo ..........................................................................................................259


Ograniczanie dostpu do stron administracyjnych
Bezpieczestwo sesji
Pytania do rozdziau 14.

259
267
273

15. Sprawdzanie poprawnoci danych i obsuga bdw ..............................................275


Sprawdzanie poprawnoci danych wprowadzanych przez uytkownikw
za pomoc JavaScript
Dopasowywanie wzorcw
Ponowne wywietlenie formularza w przypadku niepomylnego testu
poprawnoci danych
Pytania do rozdziau 15.

275
279
282
285

16. Przykadowe aplikacje ................................................................................................287


Tworzenie blogu
Pytania do rozdziau 16.

287
308

17. Koczymy nasz podr ..............................................................................................311


Szukanie pomocy w internecie
Serwisy WWW
Zend
Lampshade
Pytania do rozdziau 17.

311
316
316
317
318

Dodatek Odpowiedzi na pytania do rozdziaw ................................................................. 319


Skorowidz .............................................................................................................................. 331

Spis treci

ROZDZIA 1.

Mona wyrni dwa rodzaje stron WWW: statyczne i dynamiczne. W statycznych witrynach
jest tekst zawierajcy hipercza, a czasami take ekran logowania, ale poza logowaniem uytkownik nie musi wykonywa adnych dodatkowych dziaa. Przykadem statycznej witryny
moe by serwis http://www.startribune.com, w ktrym jedyn interakcj z uytkownikiem jest
konieczno rejestracji w celu przegldania artykuw. Z kolei witryna http://www.amazon.com
jest przykadem dynamicznej witryny WWW. Dane o zamwieniach s rejestrowane, a kiedy
uytkownik odwiedza stron, witryna Amazon poleca okrelone pozycje na podstawie historii jego zakupw. Mwic inaczej, sowo dynamiczne oznacza, e komunikacja uytkownika
z witryn nie ogranicza si do czytania stron witryna zwraca informacje w odpowiedzi na
dziaania uytkownika.
Jeszcze kilka lat temu tworzenie dynamicznych stron WWW wymagao pisania kodu o duej
objtoci w jzykach C lub Perlu, a nastpnie wywoywania i wykonywania tych programw
z poziomu procesu okrelanego jako Common Gateway Interface (CGI). Konieczno tworzenia
plikw wykonywalnych nie brzmi zachcajco, podobnie jak nauka nowego, skomplikowanego
jzyka. Na szczcie dziki jzykowi PHP i bazie danych MySQL tworzenie dynamicznych
witryn WWW jest dzi prostsze, atwiejsze i szybsze.

Miejsce technologii PHP i MySQL w procesie tworzenia


aplikacji internetowych
PHP jest jzykiem programowania przeznaczonym do interaktywnego generowania stron WWW
na komputerze serwujcym strony, zwanym serwerem WWW. W odrnieniu od jzyka HTML,
w ktrym przegldarka WWW generuje strony na podstawie znacznikw, kod PHP dziaa pomidzy daniem strony a serwerem WWW, co pozwala na uzupenianie i modyfikowanie
kodu HTML. Na przykad kod PHP mona wykorzysta do wywietlania licznika odwiedzin
na stronie.
Wystarczy mniej ni 20 wierszy kodu PHP, by zapisa adres IP, z ktrego pochodzi danie
strony, w osobnym pliku, a nastpnie wywietli liczb rnych adresw IP, z ktrych dano
okrelonej witryny. Osoba dajca strony WWW nie musi by wiadoma, e stron wygenerowa interpreter PHP, poniewa tekst licznika odwiedzin jest czci standardowego kodu HTML
wygenerowanego na podstawie kodu PHP.
Dziki zastosowaniu jzyka PHP tworzenie stron WWW jest atwe, poniewa platforma PHP
dostarcza caego potrzebnego kodu. Oznacza to, e za kadym razem, kiedy przystpujemy do
11

pisania programu w jzyku PHP, nie musimy na nowo odkrywa koa, tak jak w przypadku
korzystania z jzykw kompilowanych, na przykad C.
Chocia PHP doskonale nadaje si do generowania stron WWW, nie jest baz danych. Programici PHP zazwyczaj korzystaj z bazy danych MySQL, ktrej rol mona porwna do kancelisty rejestrujcego informacje wprowadzane przez uytkownikw. MySQL automatyzuje wikszo popularnych czynnoci zwizanych z zapamitywaniem i odczytywaniem specyficznych
informacji uytkownikw na podstawie podanych kryteriw.
Na przykad w witrynie Amazon, w bazie danych MySQL mog by zapisane rekomendacje serwisu wraz z informacjami o poprzednich zamwieniach.

Do bazy danych MySQL jest atwy dostp z poziomu kodu PHP. Technologie te czsto wykorzystywane s razem ze wzgldu na ich bezproblemowe dziaanie. Dodatkow korzyci jest fakt
dziaania PHP i MySQL w komputerach rnych typw oraz pod kontrol rnych systemw
operacyjnych, midzy innymi Mac OS X, Windows i Linux.

Zalety wykorzystywania PHP z MySQL


Jest kilka powodw, dla ktrych korzystanie z PHP wraz z MySQL jest naturalnym wyborem:
PHP i MySQL dobrze ze sob wsppracuj
PHP i MySQL opracowano z zamiarem ich wsplnego wykorzystywania, dlatego uywanie
obu tych technologii razem nie sprawia kopotw. Interfejsy programistyczne pomidzy
obydwoma produktami zostay logicznie dobrane. Wsplne wykorzystywanie obu technologii nie byo pomysem, ktry pojawi si ju po utworzeniu interfejsw PHP i MySQL.
PHP i MySQL pozwalaj na korzystanie z zalet oprogramowania typu open source
Poniewa zarwno PHP, jak i MySQL s projektami typu open source, mona z nich korzysta za darmo. Biblioteki klienckie obsugi MySQL nie s ju doczane do jzyka PHP. Zaawansowani uytkownicy mog wprowadza zmiany w kodzie rdowym i w ten sposb
modyfikowa sposb dziaania jzyka i tworzonych za jego pomoc programw.
PHP i MySQL maj aktywne spoecznoci uytkownikw
W internecie s aktywne spoecznoci uytkownikw PHP i MySQL. Mona sta si ich
czonkiem i uzyska odpowiedzi na wiele pyta. Mona rwnie zakupi usug profesjonalnej pomocy technicznej dla bazy danych MySQL, jeli taka pomoc jest potrzebna.
PHP i MySQL pozwalaj na tworzenie wydajnych aplikacji
Dziki prostocie i dobremu projektowi aplikacje stworzone za pomoc PHP i MySQL
dziaaj szybko.
Uytkownicy PHP i MySQL nie musz zna niepotrzebnych szczegw
Dziki standardowemu interfejsowi pozwalajcemu na wywoywanie procedur obsugi
bazy danych MySQL z poziomu jzyka PHP uytkownicy nie musz zna niskopoziomowych szczegw wsppracy jzyka PHP z baz danych MySQL. W witrynie http://www.
php.net mona znale obszerny opis interfejsu API.

12

Rozdzia 1. Dynamiczna tre na stronach WWW

Zalety technologii open source


Jak wspominalimy wczeniej, zarwno PHP, jak i MySQL s projektami open source. Oznacza
to, e aby z nich korzysta, nie trzeba kupowa licencji dla kadego komputera w biurze czy te
w domu. W projektach typu open source programici maj dostp do kodu rdowego. Dziki
temu indywidualni programici bd ich grupy mog analizowa kod w celu wykrywania potencjalnych problemw, a take testowa go, debugowa oraz wprowadza modyfikacje i ulepszenia. Na przykad system Unix prekursor technologii open source by udostpniany za
darmo akademickiej spoecznoci specjalistw z dziedziny programowania. Linux darmowa
alternatywa systemu Unix to bezporedni efekt prac tych specjalistw i paradygmat licencji
typu open source.
Jak powiedzia Tim OReilly: Pocztek licencji typu open source day prby zachowania kultury
udostpniania kodu, a dopiero pniej zdano sobie spraw z wartoci tego udostpniania.
Obecnie programici systemw typu open source udostpniaj sobie kod w internecie za porednictwem witryny php.net, serwerw list dyskusyjnych oraz innych witryn WWW. Jeli kogo
dopadnie koszmar kodowania i nie moe si z niego otrzsn, wymienione powyej zasoby
pomog mu w przebudzeniu si i rozwizaniu problemw.
W dalszej czci ksiki wymienimy fora uytkownikw technologii open source i zachcimy Czytelnikw, by samodzielnie sprawdzili ich zalety. Wymienimy rwnie serwery list dyskusyjnych i witryny WWW, z ktrych warto skorzysta w przypadku
problemw.

Komponenty aplikacji PHP


Aby mona byo tworzy i rozwija dynamiczne strony WWW, trzeba zapozna si z kilkoma
technologiami. Dynamiczne strony WWW wymagaj zastosowania trzech gwnych komponentw: serwera WWW, jzyka programowania po stronie serwera i bazy danych. Przed
przystpieniem do tworzenia aplikacji internetowych w PHP warto zapozna si z tymi trzema
podstawowymi komponentami projektowania aplikacji internetowych. Rozpoczniemy od podstawowych wiadomoci na temat historii i przeznaczenia serwera Apache (serwera WWW),
interpretera PHP (jzyka programowania po stronie serwera) i MySQL (bazy danych). Dziki
temu bdziemy mogli atwiej zrozumie ich miejsce w procesie tworzenia aplikacji internetowych.
Naley pamita, e dynamiczne strony WWW pobieraj informacje z kilku rde naraz, w tym
z serwera Apache, interpretera PHP, bazy danych MySQL oraz kaskadowych arkuszy stylw
(ang. Cascading Style Sheets CSS). Wszystkie te technologie opiszemy w dalszej czci ksiki.

Narodziny PHP
Inspiracj do powstania jzyka PHP bya potrzeba tworzenia i utrzymywania witryn WWW
zawierajcych dynamiczn tre i dziaajcych w architekturze klient-serwer. W 1994 roku Rasmus Lerdorf dla wasnego uytku stworzy zbir skryptw open source w Perlu. Ostatecznie
skrypty te przepisano na jzyk C, co dao pocztek jzykowi PHP. Do 1998 roku wydano
PHP w wersji 3.x. System przeksztaci si w narzdzie do tworzenia aplikacji internetowych,
zdolne do konkurencji z takimi produktami, jak ASP (ang. Active Server Pages) firmy Microsoft
czy te JSP (ang. Java Server Pages) firmy Sun.
Komponenty aplikacji PHP

13

Prawdziwa sia jzyka PHP polega na jego prostocie w poczeniu z duymi moliwociami.
Wielk zalet jest rwnie fakt, i jest to jzyk interpretowany, a nie kompilator.
Jzyki kompilowane tworz binarne pliki wykonywalne (.exe), natomiast jzyki interpretowane bezporednio przetwarzaj kod rdowy i nie tworz oddzielnych plikw.

Jzyk PHP jest dostpny dla wszystkich najpopularniejszych systemw operacyjnych. Jest atwy
do nauki, co czyni z niego idealne narzdzie dla osb stawiajcych pierwsze kroki w programowaniu aplikacji internetowych. Mona rwnie skorzysta z pracy innych programistw
wchodzcych w skad spoecznoci PHP, dziki czemu tworzenie aplikacji internetowych staje
si atwiejsze dla kadego. Twrcy jzyka PHP opracowali infrastruktur, ktra umoliwia
dowiadczonym programistom jzyka C rozszerzanie moliwoci jzyka PHP. Dziki temu jzyk
PHP integruje si z wieloma zaawansowanymi technologiami, takimi jak XML, XSL oraz COM
firmy Microsoft. Do integracji tych technologii wykorzystuje si PHP w wersji 5.0.

Narodziny Apache
Apache jest serwerem WWW, ktry przeksztaca dania serwera na wynikowe strony WWW
oraz potrafi przetwarza kod PHP. PHP jest jedynie jzykiem programowania, zatem bez dziaajcego na zapleczu serwera WWW uytkownicy nie mieliby moliwoci dotarcia do stron zawierajcych kod w jzyku PHP.
Apache nie jest jedynym dostpnym serwerem WWW. Innym popularnym serwerem WWW jest
IIS (ang. Internet Information Services), dostarczany wraz z systemem Windows 2000 i wszystkimi
nowszymi wersjami systemu Windows. Rnica pomidzy systemem Apache a IIS w wikszoci sprowadza si do osobistych preferencji, cho system Apache ma niewtpliw przewag
pod tym wzgldem, e jest darmowy, daje dostp do penego kodu rdowego i nie ma ogranicze w licencji. Obecnie najnowsza wersja serwera Apache ma numer 2.0. Serwer IIS atwiej
integruje si z Active Directory najnowszym systemem uwierzytelniania firmy Microsoft,
ale w wikszoci dotyczy to wewntrznych witryn WWW dziaajcych w firmach.
Wedug ankiety w serwisie Netcraft serwer Apache od kwietnia 1996 roku jest najpopularniejszym serwerem WWW w internecie.

Poniewa serwery WWW takie jak Apache i IIS zaprojektowano tak, by serwoway strony na
podstawie plikw HTML, musz one zapewnia sposb przetwarzania kodu w jzyku PHP.
W serwerze Apache wykorzystuje si mechanizm moduw, ktry umoliwia adowanie rozszerze do funkcji podstawowych. W serwerze IIS wykorzystano podobny mechanizm okrelany
jako ISAPI. Obie te technologie pozwalaj na szybsze przetwarzanie kodu PHP w porwnaniu
ze starszym sposobem polegajcym na wywoywaniu procesu PHP jako osobnego pliku wykonywalnego za kadym razem, kiedy serwer WWW zada strony zawierajcej kod PHP. Sposb konfiguracji moduw Apache omwimy w rozdziale 2.

14

Rozdzia 1. Dynamiczna tre na stronach WWW

Wersje serwera Apache


Obecnie wykorzystywane s tylko dwie gwne wersje serwera Apache. S to wersje 1.3 i 2.0.
Apache 2 to unowoczeniona wersja, ktra obsuguje wielowtkowo. Wtki to mechanizm,
ktry umoliwia pojedynczemu procesowi zarzdzanie w okrelonym momencie wicej ni jedn
operacj. Korzy z zastosowania wtkw polega na zwikszonej szybkoci dziaania i mniejszej iloci potrzebnych zasobw. Niestety, do tej pory jzyk PHP nie w peni obsuguje wtki.
Wersj Apache 2 opublikowano na tyle dawno, e mona j uzna za stabiln zarwno do
celw projektowania, jak rwnie do wykorzystania w rzeczywistych aplikacjach. W systemie
Apache w wersji 2 poprawiono rwnie obsug moduw. Dodatkowe moduy mona znale pod adresem http://www.cri.ensmp.fr/~coelho/mod_macro/. Biblioteki DLL wspdzielonych
moduw, ktre nie s dostarczane z oficjalnymi plikami rdowymi serwera Apache, takie jak
mod_php4, mod_ssl, mod_auth_mysql oraz mod_auth_ntsec, rwnie mona znale w internecie.

Narodziny MySQL
Baz danych MySQL opracowano w latach dziewidziesitych jako odpowied na rosnce potrzeby powstania narzdzia do inteligentnego zarzdzania informacjami. Pierwsi twrcy bazy
danych MySQL starali si speni swoje potrzeby w zakresie baz danych za pomoc niewielkiej i prostej bazy danych mSQL. Kiedy stao si jasne, e baza danych mSQL nie jest w stanie
rozwiza wszystkich problemw, ktre napotkali, opracowali bardziej rozbudowan baz
danych, ktra przeksztacia si w MySQL.
Baza danych MySQL obsuguje kilka rnych mechanizmw obsugi baz danych (ang. database engine). Mechanizm obsugi baz danych determinuje sposb, w jaki MySQL obsuguje zapisywanie danych oraz wykonywanie zapyta o dane. Z tego wzgldu kady mechanizm obsugi
baz danych charakteryzuje si innym zestawem wasnoci oraz silnych i sabych stron. Z czasem
dostpne mechanizmy baz danych staj si coraz bardziej zaawansowane i dziaaj szybciej.
W tabeli 1.1 wyszczeglniono numery wersji bazy danych MySQL wraz z ulepszeniami, ktre
w nich wprowadzono.
Tabela 1.1. Gwne wersje bazy danych MySQL
Wersja

Wasnoci

3.23

Dodano mechanizm obsugi bazy danych MyISAM, ktry sta si mechanizmem domylnym.
Mechanizm ten pozwala na wydajn obsug danych o duej objtoci. Wprowadzono mechanizm obsugi bazy danych
InnoDB zapewniajcy bezpieczne przetwarzanie bazy danych oraz obsug obcych kluczy. Obce klucze zapewniaj
jawne okrelenie zwizkw pomidzy tabelami na poziomie bazy danych.

4.0

Wprowadzono obsug unii w zapytaniach. Unie umoliwiaj scalanie wynikw dwch zapyta w jeden. Wprowadzono
moliwo dokonywania zmian w konfiguracji bez koniecznoci ponownego uruchamiania bazy danych.

4.01

Dodano polecenie help do klienta pomocy. Wprowadzono obsug widokw bez nazwy, okrelanych take jako
podzapytania. Widoki bez nazwy pozwalaj na traktowanie zapytania tak, jak osobnej tabeli.

5.0

Wprowadzono wyzwalacze, procedury skadowane (ang. stored procedures) oraz kursory. Wyzwalacze umoliwiaj
wykonywanie kodu przez serwer bazy danych w momencie zajcia zdarzenia wyzwalajcego, takiego jak wprowadzanie
danych do tabeli. Procedury skadowane umoliwiaj definiowanie i wykonywanie programw w obrbie bazy danych.
Kursory umoliwiaj uruchamianie w bazie danych kodu dla kadego wiersza speniajcego warunki zapytania.

5.1

Wprowadzono obsug ogranicze i partycjonowania. Ograniczenia wykorzystuje si w celu zdefiniowania regu, zgodnie
z ktrymi mona dodawa bd modyfikowa wiersze w bazie danych. Partycjonowanie wykorzystuje si w celu
podzielenia fizycznej lokalizacji duych tabel na podstawie okrelonej reguy. Partycjonowanie powszechnie stosuje
si w celu zwikszenia wydajnoci duych tabel, takich jak dane historyczne.

Komponenty aplikacji PHP

15

Bieca wersja produkcyjna bazy danych MySQL to najnowsze dostpne wydanie o numerze
5.0x. Wydajno serwera bazy danych MySQL 5.0 mona porwna do znacznie droszych
korporacyjnych systemw baz danych, takich jak Oracle, Informix, DB2 (IBM) czy te SQL
Server (Microsoft). Twrcy bazy danych MySQL osignli wydajno na tym poziomie dziki
wykorzystaniu talentw wielu programistw oprogramowania typu open source, a take testowaniu systemu przez spoeczno uytkownikw. W przypadku zada obsugi baz danych
oglnego przeznaczenia domylny mechanizm obsugi bazy danych MyISAM doskonale
spenia swoj rol.
Najnowsze zaawansowane wasnoci wprowadzone w MySQL 5.1 nie s rwnie stabilne, jak wasnoci wprowadzone we wczeniejszych wersjach. Biec stabiln wersj
oglnego przeznaczenia jest MySQL 5.0. Dla wybranej wersji gwnej zawsze naley
pobiera najnowsze wydanie (oznaczone najwyszym trzecim czonem numeru wersji).
Takie wydanie zawiera najwicej poprawionych bdw okrelonej wersji.

Wielk zalet serwera Apache jest jego zdolno do dziaania w systemach operacyjnych innych
ni Windows. Dziaanie w rnych systemach operacyjnych wie si z problemem zgodnoci,
ktry omwimy w kolejnym punkcie.

Zgodno
Przegldarki WWW takie jak Firefox, Netscape i Internet Explorer przetwarzaj kod HTML,
zatem nie ma dla nich znaczenia, w jakim systemie operacyjnym pracuje serwer WWW. Systemy Apache, PHP i MySQL obsuguj wiele systemw operacyjnych. Dziki temu ich uytkownicy nie s skazani na korzystanie z okrelonego systemu operacyjnego ani po stronie serwera, ani po stronie klienta. Chocia nie trzeba zbytnio si martwi problemami zgodnoci
oprogramowania, naley si przyzwyczai do wystpowania rnych formatw plikw i wielu
wersji jzykowych.

Integracja wielu rde informacji


W pocztkowych dniach internetu ycie byo proste. Byy pliki zawierajce kod HTML oraz
pliki binarne, na przykad zawierajce grafik. Od tego czasu opracowano wiele technologii
umoliwiajcych organizowanie wygldu stron WWW. Na przykad kaskadowe arkusze stylw
(ang. Cascading Style Sheets CSS) pozwoliy na oddzielenie informacji opisujcych prezentacj
od kodu HTML i umieszczenie ich w jednym miejscu. Dziki temu raz wprowadzone zmiany
obowizuj dla caego zbioru stron, co pozwala na uniknicie koniecznoci rcznej modyfikacji
znacznikw HTML w kadej ze stron z osobna.
W plikach HTML mog jednoczenie wystpowa odwoania do arkuszy CSS, szablonw PHP
oraz bazy danych MySQL. Szablony PHP uatwiaj wprowadzanie zmian w kodzie HTML
strony, jeli zawieraj pola wypeniane za pomoc zapyta do bazy danych. W kolejnych punktach omwimy kade z wymienionych wczeniej rde informacji.

Baza danych MySQL


MySQL jest systemem zarzdzania relacyjnymi bazami danych. Dane nie s w nim zapisywane w jednej przestrzeni, ale w osobnych tabelach. Taka architektura zwiksza moliwoci bazy
danych oraz szybko jej dziaania. Skrt SQL w nazwie MySQL pochodzi od Structured Query
16

Rozdzia 1. Dynamiczna tre na stronach WWW

Language (strukturalny jzyk zapyta). Jest to najpopularniejszy wykorzystywany obecnie jzyk


obsugi baz danych stosowany w wielu systemach baz danych. W celu zaprezentowania postaci
kodu obsugi bazy danych MySQL z poziomu jzyka PHP spjrzmy na listing 1.1, na ktrym
z poziomu skryptu PHP wywoano kod usuwajcy dane uytkownika z bazy danych MySQL.
Listing 1.1. Funkcja PHP usuwajca dane uytkownika z tabeli bazy danych user_name
<?php
// Funkcja usuwajca uytkownika z tabeli site_user na podstawie
// parametru $user_name.
// Zaoono, e wczeniej otwarto poczenie z baz danych.
function remove_user($user_name){
// Usunicie uytkownika
// To jest instrukcja SQL
$sql_delete = "DELETE FROM `site_user` WHERE `User`='$user'";
$success = mysql_query($sql_delete) or die(mysql_error());
// wywietlenie nagwka strony
print('
<html>
<head>
<title>Usuwanie uytkownika</title>
<link rel="stylesheet" type="text/css" href="user_admin.css" />
</head>
<body>
<div class="user_admin">');
// Sprawdzenie, czy operacja usunicia powioda si
if ($success){
// Poinformowanie uytkownika o sukcesie operacji
print("Konto uytkownika $user_name pomylnie usunito.");
}
else {
// Poinformowanie uytkownika o niepowodzeniu operacji
print("Nie mona usun konta uytkownika $user. Prosz sprbowa pniej.");
}
// Wywietlenie stopki strony
print('</div></body></html>');
}
?>

Nie przejmujmy si, jeli niektre fragmenty kodu na listingu 1.1 s niezrozumiae. Wane,
jeli zwrcimy uwag, e w kodzie wystpuj instrukcje PHP, kod dostpu do bazy danych oraz
cze do arkusza stylw.

Szablony PHP
W celu uproszczenia obsugi witryn skadajcych si z wielu rnych stron o podobnym
wygldzie nagwek i stopk kadej ze stron mona zdefiniowa w osobnym pliku i wczy
do kodu kadej ze stron. Dziki temu zmiany w nagwku bd stopce mog by wykonywane w jednym miejscu i powoduj automatyczn zmian wygldu stopki (nagwka) na
wszystkich stronach. W ten sposb programici nie musz modyfikowa z osobna kadej ze
stron witryny WWW.
Programici PHP nauczyli si, e oddzielenie kodu PHP od kodu HTML uatwia prac zarwno
im samym, jak i uytkownikom, ktrzy potrafi modyfikowa kod HTML, ale niezbyt dobrze

Integracja wielu rde informacji

17

rozumiej kod PHP. Dziki utworzeniu osobnych plikw szablonw zawierajcych zmienne-wypeniacze dla dynamicznych danych mona oddzieli znaczniki HTML od kodu PHP.
Przykad pliku szablonu zamieszczono na listingu 1.2.
Listing 1.2. Szablon PHP
<html>
<head>
<title>Moje ksiki</title>
</head>
<body>
<p>Ulubione ksiki:</p>
<p>
Tytu: {$title}<br />
Autor: {$author}
</p>
</body>
</html>

Kiedy interpreter PHP przetworzy stron, zmienne-wypeniacze zostan zastpione ich wartociami, tak jak pokazano na listingu 1.3.
Listing 1.3. Wynikowy kod HTML po podstawieniu wartoci za zmienne szablonu i przetworzeniu kodu
przez interpreter PHP
<html>
<head>
<title>Moje ksiki</title>
</head>
<body>
<p>Ulubione ksiki:</p>
<p>
Tytu: Java. Almanach<br />
Autor: Flanagan
</p>
</body>
</html>

Chocia dodalimy kolejny plik, wynikowy kod HTML sta si czytelniejszy, a kod PHP mniej
zamiecony nadmiarowym kodem HTML. Projektant witryny, ktry nie zna jzyka PHP, moe
zmodyfikowa wygld strony, nie obawiajc si o to, e uszkodzi kod PHP.
Ostatni z rodzajw informacji, jakie omwimy, rwnie powsta w efekcie denia do oddzielenia stylw prezentacji, takich jak kolory i odstpy, od zasadniczej treci.

Kaskadowe arkusze stylw


Kaskadowe arkusze stylw (ang. Cascading Style Sheets CSS) wprowadzono do jzyka HTML
po to, by projektanci aplikacji internetowych i ich uytkownicy mieli wiksz kontrol nad
sposobem wywietlania stron WWW. Projektanci i uytkownicy mog tworzy arkusze stylw,
ktre definiuj sposb wywietlania rnych elementw witryny, takich jak nagwki i cza.
Pojcie kaskadowe oznacza moliwo zastosowania wielu arkuszy stylw do tej samej strony
WWW. W celu zastosowania kodu CSS w nagwku pliku HTML naley wprowadzi kod
o nastpujcej postaci:
<html>
<head>
<title>Przykad zastosowania arkusza CSS</title>
<style type="text/css">

18

Rozdzia 1. Dynamiczna tre na stronach WWW

h4, b {color: #80D92F; font-family: arial; }


p { text-indent: 2cm; background: yellow; font-family: courier;}
</style>
</head>
<body>
<h3>Naucz si korzystania z arkuszy stylw CSS w swoich witrynach WWW!</h3>
<h4>To doskonaa technika, ktra pozwala na zaoszczdzenie czasu!</h4>
<p>Czy to nie jest <b>fajne</b>?</p>
</body>
</html>

Kod rozpoczynajcy si od znacznika style to kod CSS. Efekt wywietlenia powyszego dokumentu w przegldarce pokazano na rysunku 1.1.

Rysunek 1.1. Efekt wywietlenia strony skadajcej si z kodu CSS i HTML w przegldarce

Chocia w pokazanym przykadzie kod CSS umiecilimy wewntrz pliku HTML, rwnie dobrze
mona by go byo zapisa w osobnym pliku. Ten sposb wykorzystano na listingu 1.1, gdzie
kod CSS pochodzi z pliku user_admin.css.
Oczywicie do rde informacji wywietlanych na stronach WWW trzeba zaliczy take pliki
zawierajce standardowy kod HTML.
Wicej informacji na temat CSS mona znale w ksice Erica Meyera CSS. Kaskadowe
arkusze stylw. Przewodnik encyklopedyczny (Helion 2001).

Jzyk znacznikw HTML


Jzyk znacznikw HTML stosuje znaczniki do treci w celu zidentyfikowania informacji okrelonego typu bd takich, ktre wymagaj specjalnego formatowania. Znaczniki HTML zawsze
s ujte w nawiasy ostroktne (<>), a wielko liter nie ma w nich znaczenia, zatem nie jest wane,
czy znaczniki zapiszemy maymi, czy wielkimi literami (cho w specyfikacji jzyka XHTML
zaleca si stosowanie maych liter). Znaczniki zazwyczaj skadaj si z par definiujcych pocztek i koniec. Pary te maj nastpujc posta:
<znacznik>Czy to nie jest fajne?</znacznik>

Integracja wielu rde informacji

19

Pierwszy <znacznik> oznacza pocztek pary, natomiast ostatni </znacznik> oznacza jej koniec.
Par znacznikw okrela si jako element. Dowolna tre w obrbie elementu podlega reguom
obowizujcym dla tego elementu. W poprzednim przykadzie tekst Naucz si korzystania z arkuszy stylw CSS w swoich witrynach WWW! by zapisany wewntrz elementu h3.
<h3>Naucz si korzystania z arkuszy stylw CSS w swoich witrynach WWW!</h3>

Dobr praktyk (wymagan w jzyku XHTML) jest dokadne zagniedanie znacznikw, dziki
czemu elementy maj dobrze zdefiniowane granice. Naley pamita o umieszczaniu znacznikw kocowych elementw i unika nakadania si znacznikw na siebie. (Na przykad zamiast kodu w postaci <b>pogrubienie <i>pogrubiona kursywa</b> kursywa</i> naley stosowa kod w postaci <b>pogrubienie <i>pogrubiona kursywa</i></b> <i>kursywa</i>).

danie danych ze strony WWW


Sposb integracji wymienionych powyej czci jest do skomplikowany. Jeli serwer WWW
wykryje kod PHP, sprawdza, czy plik jest skryptem PHP, a jeli tak, przekazuje danie przetwarzania strony do interpretera PHP. Od tego momentu w przetwarzaniu nie uczestniczy
przegldarka WWW. Jeli jednak wczymy do pliku zewntrzny plik CSS, przed wywietleniem strony przegldarka wysya oddzielne danie dla tego pliku.

Interpretacja kodu PHP na serwerze


Interpretacj kodu PHP na serwerze okrela si terminem przetwarzania po stronie serwera. danie strony WWW inicjuje cay szereg zdarze. Na rysunku 1.2 zilustrowano interakcj pomidzy komputerem a serwerem WWW (hostem witryny WWW).

Rysunek 1.2. Kiedy uytkownik wpisze adres URL i wcinie Enter, za kulisami wykonywanych jest szereg
czynnoci w celu obsuenia dania

Oto analiza zdarze zilustrowanych na rysunku 1.2:

1. Uytkownik wprowadza adres strony w pasku adresu przegldarki.


2. Przegldarka analizuje adres i przesya nazw strony do serwera WWW. Na przykad wpisanie adresu URL http://www.phone.com/directory.html powoduje zadanie strony directory.html
z serwera www.phone.com.

20

Rozdzia 1. Dynamiczna tre na stronach WWW

3. Program na serwerze WWW okrelany jako proces serwera WWW pobiera danie strony
directory.html i poszukuje tego pliku.
4. Serwer WWW odczytuje plik directory.html ze swojego twardego dysku.
5. Serwer WWW zwraca zawarto pliku directory.html do przegldarki.
6. Przegldarka wykorzystuje zbir znacznikw HTML odebrany z serwera WWW w celu
wygenerowania strony WWW na ekranie komputera uytkownika.
Plik HTML o nazwie directory.html (ktrego danie zilustrowano na rysunku 1.2) okrela si
jako statyczn stron WWW. Strona jest statyczna, poniewa wszyscy uytkownicy, ktrzy
zadaj strony directory.html, otrzymuj dokadnie tak sam stron.
Dodanie do zestawu programw obsugujcych dania interpretera jzyka PHP i bazy danych
MySQL umoliwia personalizacj zwracanych stron. Na rysunku 1.3 pokazano dodatkowe
operacje w cigu zdarze zachodzcych na serwerze WWW w przypadku zastosowania PHP
i MySQL.

Rysunek 1.3. Wsppraca interpretera PHP, bazy danych MySQL i serwera WWW podczas obsugi
dania strony

Oto operacje wchodzce w skad acucha zdarze:

1. Uytkownik wprowadza adres strony WWW w pasku adresu przegldarki.


2. Przegldarka analizuje adres i przesya nazw strony do hosta. Na przykad wpisanie
adresu URL http://www.phone.com/login.php powoduje danie strony login.php z serwera
www.phone.com.
3. Proces serwera WWW na hocie otrzymuje danie pliku login.php.
4. Serwer WWW odczytuje zawarto pliku login.php ze swojego dysku twardego.
5. Serwer WWW wykrywa, e plik PHP nie zawiera wycznie kodu HTML, zatem da przetworzenia pliku przez inny proces interpreter PHP.
6. Interpreter PHP wykonuje kod PHP w kodzie otrzymanym od procesu serwera WWW.
W kodzie PHP wystpuj odwoania do bazy danych MySQL.
7. PHP da od procesu bazy danych MySQL przetworzenia odwoa do bazy danych.
8. Proces bazy danych MySQL zwraca wyniki zapytania do bazy danych.

danie danych ze strony WWW

21

9. Interpreter PHP uzupenia wynik przetwarzania kodu PHP o dane z bazy danych i zwraca
wyniki do procesu serwera WWW.
10. Serwer WWW zwraca wyniki do przegldarki uytkownika w postaci kodu HTML.
11. Przegldarka WWW uytkownika interpretuje odebrany kod HTML w celu wygenerowania
strony na ekranie komputera uytkownika.
Moe si wydawa, e wymienionych czynnoci jest duo, wszystkie one s jednak wykonywane automatycznie za kadym razem, kiedy uytkownik zada strony WWW zawierajcej
kod PHP.
Podczas tworzenia dynamicznych stron WWW wykorzystuje si rnorodne zmienne i komponenty serwera. Wszystkie one maj istotne znaczenie dla uzyskania atrakcyjnej i atwej w obsudze witryny WWW. Nadszed czas, aby zainstalowa trzy gwne czci potrzebne do praktycznego tworzenia dynamicznych stron. Mowa o Apache, PHP i MySQL.

Pytania do rozdziau 1.
Pytanie 1.1. Jakie trzy komponenty s potrzebne do tworzenia dynamicznych stron WWW?
Pytanie 1.2. Jaki mechanizm wykorzystuje serwer Apache do adowania rozszerze?
Pytanie 1.3. Jaka jest bieca stabilna wersja PHP?
Pytanie 1.4. Co oznacza cig SQL w nazwie MySQL?
Pytanie 1.5. Do czego su ostroktne nawiasy (< >)?
Pytanie 1.6. Jakie zadanie spenia interpreter PHP?
Odpowiedzi na te pytania mona znale w Dodatku.

22

Rozdzia 1. Dynamiczna tre na stronach WWW

You might also like