You are on page 1of 42

IDZ DO

PRZYKADOWY ROZDZIA
SPIS TRECI

KATALOG KSIEK
KATALOG ONLINE
ZAMW DRUKOWANY KATALOG

PHP4. Od podstaw
Autorzy: Wankyu Choi, Allan Kent, Chris Lea, Ganesh
Prasad, Chris Ullman
Tumaczenie: Pawe Gonera, Piotr Rajca
ISBN: 83-7197-494-9
Tytu oryginau: Beginning PHP4
Format: B5, stron: okoo 780

TWJ KOSZYK
DODAJ DO KOSZYKA

CENNIK I INFORMACJE
ZAMW INFORMACJE
O NOWOCIACH
ZAMW CENNIK

CZYTELNIA
FRAGMENTY KSIEK ONLINE

Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl

PHP4 jest najnowszym wcieleniem PHP -- PHP Hypertext Preprocesor. Jest to jzyk
programowania przeznaczony do tworzenia dynamicznych, interaktywnych witryn
WWW, ktry zosta wymylony przez Rasmusa Lerdorfa przed rokiem 1994. Od tego
czasu zmieni si niezmiernie i jest teraz uywany przez programistw WWW na caym
wiecie. Czym wic tak naprawd jest? Mona go okreli technicznie jako przenony,
wbudowywany w HTML jzyk programowania skryptw serwera WWW. PHP4 moe
by wykorzystany w bardzo rnych rodzajach aplikacji, od uytkowych, jak edytor, do
wydajnych witryn typu sklep lub wyszukiwarka. W tek ksice sprbujemy przekaza
czytelnikowi wiedz na temat tworzenia witryn przy uyciu PHP4. Przedstawione
zostan uyteczne techniki kodowania i pomysy w jaki sposb mona ich uy we
wasnych aplikacjach. PHP moe by uyty do stworzenia witryn, ktre zna kady
uytkownik Sieci. Od witryn handlu elektronicznego do wyszukiwarek czy portali
informacyjnych. Wiele duych witryn WWW posiada niektre lub wszystkie te
mechanizmy. W tej ksice stworzymy midzy innymi:
edytor oparty na przegldarce pozwalajcy na tworzenie i edycj plikw na
serwerze przy uyciu przegldarki,
witryn dla sklepw pozwalajc na odszukanie towaru i wywietlenie graficznej
mapy odpowiedniego stoiska,
sieciow gr,
wyszukiwark WWW pozwalajc na wyszukanie witryny w katalogu lub
nawigacj przez struktur hierarchiczn,
usug list pocztowych pozwalajc uytkownikom na prenumerat listy
i pozwalajc administratorom na wysyanie poczty do subskrybentw.

"
"
"
"
"

O Autorach .......................................................................................................................................11
Wstp ..............................................................................................................................................13
Dlaczego PHP4? ...................................................................................................... 14
Znak zachty...................................................................................................... 15
Czego potrzebujesz, aby korzysta z ksiki? ............................................................. 15
Zasoby w sieci dotyczce PHP4................................................................................. 16
Konwencje .............................................................................................................. 16

Rozdzia 1. Instalacja ......................................................................................................................19


Co powinienem zrobi?............................................................................................. 20
Instalowanie PHP4 na Windows ................................................................................ 21
Instalowanie PHP do Apache Web Server.............................................................. 23
Instalowanie PHP4 na Linuksie i innych systemach uniksowych ................................... 24
Wybr metody instalacji ...................................................................................... 25
Skd otrzyma pliki RPM? ................................................................................... 25
Jakich pakietw potrzebujemy?............................................................................ 26
Konfigurowanie i uruchamianie Apache i PHP4...................................................... 27
Testowanie instalacji................................................................................................ 30

Rozdzia 2. Pisanie programw w PHP........................................................................................ 35


Przykadowy program PHP ......................................................................................... 36
Przegldanie strony WWW......................................................................................... 40
Klient-serwer ...................................................................................................... 40
Na scen wchodzi PHP ............................................................................................. 46
Skrypty serwera.................................................................................................. 47
Pami podrczna.................................................................................................... 48
Zmienne ................................................................................................................. 49
Typy danych ....................................................................................................... 52
Stae ................................................................................................................. 60
Inicjalizacja ........................................................................................................ 61
Konwersje.......................................................................................................... 62
Zmienne rodowiska........................................................................................... 65
Podsumowanie ........................................................................................................ 66

Rozdzia 3. Pobieranie danych od u'ytkownika .......................................................................... 67


Formularze HTML ..................................................................................................... 68
Znacznik FORM .................................................................................................. 68
Atrybuty FORM.................................................................................................... 69
Kontrolki formularzy HTML a PHP ......................................................................... 73
Uycie wartoci z formularza w skryptach PHP....................................................... 96
Podsumowanie ...................................................................................................... 102

C:\Andrzej\PDF\PHP4. Od podstaw\spis tresci.doc

PHP 4. Od podstaw
Rozdzia 4. Podejmowanie decyzji ..............................................................................................103
Wyraenia warunkowe lub rozgazianie ................................................................... 104
Przykad rozgaziania z ycia wzity ................................................................... 104
Instrukcja if...................................................................................................... 105
Wielokrotne warunki else i elseif ................................................................... 121
Instrukcja switch .............................................................................................. 130
Kontrola poprawnoci formularza ............................................................................ 134
Podsumowanie ...................................................................................................... 139

Rozdzia 5. Ptle i tablice ............................................................................................................. 141


Ptle..................................................................................................................... 142
Ptle while ....................................................................................................... 142
Ptle do while .................................................................................................. 149
Ptle for........................................................................................................... 153
Tablice.................................................................................................................. 158
Inicjalizacja tablic ............................................................................................. 159
Przegldanie tablic ........................................................................................... 161
Sortowanie tablic.............................................................................................. 170
Rne funkcje operujce na tablicach................................................................. 173
Tablice wielowymiarowe .................................................................................... 176
Praktyczne zastosowanie tablic.......................................................................... 177
Nowe wasnoci ptli i tabel i PHP4......................................................................... 181
Wielokrotne sortowanie tablic ............................................................................ 181
Ptle foreach.................................................................................................... 182
Podsumowanie ...................................................................................................... 184

Rozdzia 6. Organizacja kodu ......................................................................................................187


Dlaczego ponowne uycie kodu jest tak przydatne?................................................... 188
Modularyzacja .................................................................................................. 188
Funkcje............................................................................................................ 189
Definiowanie i wywoywanie funkcji..................................................................... 189
Wybr funkcji.................................................................................................... 196
Przekazywanie wartoci ..................................................................................... 197
Zasig zmiennych .................................................................................................. 201
Zmienne globalne i lokalne................................................................................ 202
Zagbianie ........................................................................................................... 208
Rekurencja....................................................................................................... 210
Pliki doczane ...................................................................................................... 212
Typowe zastosowania plikw doczanych........................................................... 216
Podsumowanie ...................................................................................................... 218

Rozdzia 7. Obsuga i unikanie bdw ........................................................................................219


Obsuga bdw w PHP........................................................................................... 220
Niebezpieczne komunikaty ................................................................................ 220
Nieczytelne strony WWW ................................................................................... 220
Niewidoczne komunikaty bdw ........................................................................ 221
Typy bdw........................................................................................................... 221
Bdy skadni ................................................................................................... 221
Bdy logiczne .................................................................................................. 224

C:\Andrzej\PDF\PHP4. Od podstaw\spis tresci.doc

Spis tre/ci

Zasady dobrego kodowania..................................................................................... 229


Wcinanie kodu ................................................................................................. 229
Komentowanie kodu ......................................................................................... 230
Uycie funkcji ................................................................................................... 231
Uycie doczanych plikw ................................................................................. 232
Uycie znaczcych nazw zmiennych .................................................................... 232
Prby zaamania kodu ....................................................................................... 233
Dokadne sprawdzanie formularza...................................................................... 234
Pobieranie danych od uytkownika........................................................................... 236
Wyraenia regularne.......................................................................................... 236
Wzorce ............................................................................................................ 237
Znaki specjalne ................................................................................................ 238
Uruchamianie skryptw PHP ................................................................................... 249
Uycie echo().................................................................................................... 249
Sprawdzanie rda HTML ................................................................................. 250
Ukrywanie komunikatw bdw......................................................................... 251
Sprawdzanie dziennika bdw........................................................................... 251
Rczne wykonywanie cikiej pracy .................................................................... 252
Podsumowanie ...................................................................................................... 252

Rozdzia 8. Praca z klientem ......................................................................................................255


Ulepszanie protokou bezstanowego ........................................................................ 256
Rozmowa z uytkownikiem HTTP, HTML, PHP i interakcyjno .......................... 257
Sesje w PHP4 .................................................................................................. 258
Sposoby typu Zrb to sam ................................................................................... 259
Uycie ukrytych pl ........................................................................................... 259
Bardziej uniwersalna metoda ............................................................................. 263
Cigi zapyta.................................................................................................... 267
Cookie............................................................................................................. 275
Sesje .................................................................................................................... 283
Sesje PHP4...................................................................................................... 283
Podsumowanie ...................................................................................................... 287

Rozdzia 9. Obiekty ......................................................................................................................289


Terminologia obiektowa.......................................................................................... 290
Uycie predefiniowanych klas.................................................................................. 292
Tworzenie kalkulatora z pamici....................................................................... 298
Dalsze poznawanie naszej prostej klasy ............................................................. 301
Tworzenie wasnych klas......................................................................................... 304
Tworzenie klasy od podstaw .............................................................................. 304
Rozszerzanie istniejcej klasy............................................................................ 307
Uyteczny obiekt .................................................................................................... 310
Podsumowanie ...................................................................................................... 314

Rozdzia 10. Obsuga plikw i katalogw ....................................................................................315


Dziaania na plikach ............................................................................................... 316
Otwieranie i zamykanie plikw ........................................................................... 316
Czytanie i zapis do pliku.................................................................................... 319
Pobieranie informacji o plikach .......................................................................... 331
Rozdzielanie nazwy pliku i cieki....................................................................... 339

C:\Andrzej\PDF\PHP4. Od podstaw\spis tresci.doc

PHP 4. Od podstaw
Kopiowanie, zmiana nazwy i usuwanie plikw...................................................... 339
Tworzenie edytora tekstu................................................................................... 342
Praca z katalogami................................................................................................. 350
Inne funkcje operujce na katalogach................................................................. 351
Przegldanie drzewa katalogw.......................................................................... 353
Tworzenie przegldarki katalogw ...................................................................... 354
Przesyanie plikw ............................................................................................ 359
czymy wszystko razem sieciowy edytor tekstu................................................... 362
Zasoby.................................................................................................................. 368
Podsumowanie ...................................................................................................... 368

Rozdzia 11. Korzystanie z baz danych w PHP ...........................................................................369


Bazy danych .......................................................................................................... 369
Modele danych................................................................................................. 370
Architektura baz danych .................................................................................... 373
Dlaczego MySQL? .................................................................................................. 375
Instalacja MySQL-a ........................................................................................... 376
Prezentacja SQL ............................................................................................... 380
Wykorzystanie MySQL-a .......................................................................................... 387
Uruchamianie programu klienta ......................................................................... 387
Wybr uywanej bazy danych ............................................................................. 388
Poznawanie danych w bazie............................................................................... 388
Operowanie na danych przechowywanych w bazie................................................ 390
Uycie polece GRANT i REVOKE ....................................................................... 392
Podsumowanie................................................................................................. 394
Obsuga MySQL w PHP ........................................................................................... 394
Podstawowe funkcje ......................................................................................... 394
Tworzenie baz danych i tabel w MySQL .................................................................... 402
Tworzenie przykadowej bazy danych oraz tabel w PHP ......................................... 407
Modyfikacja tabel................................................................................................... 410
Wstawianie danych do tabel .............................................................................. 412
Zasoby.................................................................................................................. 416
Podsumowanie ...................................................................................................... 416

Rozdzia 12. Pobieranie danych z baz MySQL w skryptach PHP...............................................419


Pobieranie danych przy uyciu PHP .......................................................................... 419
Polecenia SQL suce do pobierania danych ........................................................... 423
Funkcje serwera ............................................................................................... 423
Pobieranie wartoci wybranych pl ..................................................................... 424
Tworzenie podsumowa .................................................................................... 429
Bardziej zoone zapytania................................................................................. 430
Zastosowanie wszystkich poznanych informacji ........................................................ 434
Uycie przegldarki rekordw ............................................................................. 443
Zasoby.................................................................................................................. 444
Podsumowanie ...................................................................................................... 444

Rozdzia 13. Operowanie na danych w bazach MySQL w skryptach PHP ...............................445


Wstawianie rekordw w skryptach PHP .................................................................... 445
Aktualizacja i usuwanie rekordw z tabel ................................................................. 448
Operowanie na polach dat i czasu ........................................................................... 451
Uzyskiwanie informacji o tabelach bazy danych ........................................................ 455

C:\Andrzej\PDF\PHP4. Od podstaw\spis tresci.doc

Spis tre/ci

Tworzenie skryptu rejestrujcego uytkownikw ........................................................ 464


Tworzenie skryptu rejestrujcego wizyty ................................................................... 471
Tworzenie skryptu zarzdzajcego uytkownikami ..................................................... 480
Zasoby.................................................................................................................. 489
Podsumowanie ...................................................................................................... 490

Rozdzia 14. XML ...........................................................................................................................491


Czym jest XML? ..................................................................................................... 491
Struktura dokumentu XML ...................................................................................... 493
Poprawnie sformuowane dokumenty XML................................................................ 494
DTD ...................................................................................................................... 498
Przetwarzanie sterowane zdarzeniami ...................................................................... 500
Analiza przykadowego pliku XML ....................................................................... 501
Przetwarzanie pliku zewntrznego............................................................................ 508
Podsumowanie ...................................................................................................... 513

Rozdzia 15. Obsuga poczty elektronicznej ...............................................................................515


Wysyanie wiadomoci poczty elektronicznej w PHP................................................... 515
Anatomia wiadomoci poczty elektronicznej ............................................................. 518
Obsuga zacznikw .............................................................................................. 526
Anatomia wiadomoci poczty elektronicznej raz jeszcze ....................................... 527
Doczanie plikw do wiadomoci poczty elektronicznej ....................................... 531
Skrypt obsugujcy biuletyn informacyjny.................................................................. 539
Zasoby.................................................................................................................. 556
Podsumowanie ...................................................................................................... 556

Rozdzia 16. Generacja grafiki....................................................................................................559


Wiadomoci podstawowe ....................................................................................... 559
Tworzenie obrazu.............................................................................................. 561
Rysowanie ....................................................................................................... 563
Wykorzystanie wszystkich poznanych moliwoci ................................................. 567
Zastosowanie praktyczne ....................................................................................... 570
Interaktywne mapy............................................................................................ 571
Rozpoczynamy prac......................................................................................... 571
Tworzenie szkieletu aplikacji.............................................................................. 578
Dalsze moliwoci funkcjonalne ......................................................................... 584
Wywietlanie szczegowych informacji o sklepie................................................. 586
Zaawansowane techniki obsugi obrazw ................................................................. 590
Stylizowane mapy ............................................................................................. 590
Ograniczenia palet ............................................................................................ 594
Podsumowanie ...................................................................................................... 596

Rozdzia 17. Studium zagadnienia: katalog adresw URL.........................................................597


Narzdzie do zarzdzania katalogiem adresw URL................................................... 598
Projekt katalogu adresw URL................................................................................. 598
Wymagania uytkownikw.................................................................................. 599
Interfejs uytkownika ........................................................................................ 601
Przechowywanie informacji ................................................................................ 602
Inne ograniczenia majce wpyw na projekt ......................................................... 607
Struktura kodu ................................................................................................. 607

C:\Andrzej\PDF\PHP4. Od podstaw\spis tresci.doc

PHP 4. Od podstaw
Implementacja kodu............................................................................................... 611
Kod wsplny php_directory.inc....................................................................... 611
Skrypt uytkownika php_directory.php ............................................................ 656
Skrypt administracyjny dir_manager.php......................................................... 657
Informacje od uytkownikw.................................................................................... 680
Podsumowanie ...................................................................................................... 680

Dodatek A ODBC............................................................................................................................681
Czym jest ODBC?................................................................................................... 681
Czym ODBC nie jest? ............................................................................................. 683
PHP i ODBC........................................................................................................... 686
Nawizywanie poczenia ze rdem danych............................................................ 687
Wykonywanie polece SQL ..................................................................................... 687
Obsuga wynikw ................................................................................................... 688

Dodatek B Funkcje PHP...............................................................................................................695


Funkcje analizatora skadni XML ............................................................................. 695
Funkcje Aspell ....................................................................................................... 697
Funkcje CURL (Client URL Library) ........................................................................... 697
Funkcje FDF (Forms Data Format)............................................................................ 697
Funkcje graficzne ................................................................................................... 699
Funkcje HTTP......................................................................................................... 702
Funkcje kontroli generacji wynikw .......................................................................... 702
Funkcje matematyczne ........................................................................................... 703
Funkcje obsugi baz danych .................................................................................... 705
Funkcje obsugi baz danych dBase ..................................................................... 705
Funkcje obsugi baz danych DBM ....................................................................... 706
Funkcje obsugi baz danych Informix................................................................... 707
Funkcje obsugi baz danych InterBase ................................................................ 709
Funkcje obsugi baz danych Microsoft SQL Server ............................................... 710
Funkcje obsugi baz danych mSQL ..................................................................... 711
Funkcje obsugi baz danych MySQL .................................................................... 713
Funkcje obsugi baz danych Oracle 8 .................................................................. 716
Funkcje obsugi baz danych Oracle ..................................................................... 717
Funkcje obsugi baz danych PostgreSQL ............................................................. 718
Funkcje obsugi baz danych Sybase.................................................................... 721
Funkcje warstwy abstrakcji bazy danych.............................................................. 722
Funkcje Zunifikowanego ODBC........................................................................... 723
Funkcje obsugi bdw i rejestracji ......................................................................... 725
Funkcje obsugi dat i czasu..................................................................................... 726
Funkcje obsugi DOM XML ...................................................................................... 727
Funkcje obsugi funkcji ........................................................................................... 727
Funkcje obsugi kalendarzy ..................................................................................... 727
Funkcje obsugi katalogw ...................................................................................... 729
Funkcje obsugi klas i obiektw ............................................................................... 729
Funkcje obsugi acuchw znakw.......................................................................... 730
Funkcje obsugi opcji PHP oraz informacyjne............................................................. 734
Funkcje obsugi poczty elektronicznej....................................................................... 736
Funkcje obsugi sesji.............................................................................................. 736
Funkcje obsugi systemu plikw .............................................................................. 737
Funkcje obsugi tablic............................................................................................. 740

C:\Andrzej\PDF\PHP4. Od podstaw\spis tresci.doc

Spis tre/ci

Funkcje obsugi wyrae regularnych (rozszerzony standard POSIX) ............................ 744


Funkcje obsugi wyrae regularnych Perla ............................................................... 745
Funkcje obsugi zmiennych ..................................................................................... 745
Funkcje POSIX ....................................................................................................... 747
Funkcje Pspell ....................................................................................................... 748
Funkcje serwera Apache ......................................................................................... 749
Funkcje sieciowe ................................................................................................... 750
Funkcje sterowania wykonywaniem programw......................................................... 751
Funkcje URL .......................................................................................................... 752
Funkcje WDDX ....................................................................................................... 752
Funkcje Zlib........................................................................................................... 753
Inne funkcje .......................................................................................................... 754

C:\Andrzej\PDF\PHP4. Od podstaw\spis tresci.doc

W pierwszym rozdziale przedstawilimy PHP, opisalimy proces instalacji i konfiguracji


serwera WWW oraz PHP. Do tej pory nie pokazalimy szczegowo adnego przykadu
kodu PHP poza tym, ktry posuy do przetestowania poprawnoci instalacji. Pierwszym
zagadnieniem, jakim zajmiemy si w tym rozdziale, bdzie napisanie bardzo prostej strony
PHP i uruchomienie jej na serwerze WWW. W procesie tworzenia tej strony opowiemy,
w jaki sposb dziaa i co robi przykadowy kod. Zapoznamy si rwnie z zadaniami
serwera WWW oraz dokadnie opiszemy dziaanie PHP.
Po poznaniu operacji, jakie s wykonywane przez PHP, zajmiemy si podstawowymi
elementami jzyka oraz sposobami przechowywania informacji uywanych na stronach
WWW. Kady jzyk programowania posiada mechanizm zapamitywania danych i
kojarzenia ich z identyfikatorem, uywanym do odwoania si do danych w dalszej
czci programu. W jaki sposb przechowujesz informacje o datach, na przykad o
urodzinach Twoich znajomych? Jak korzystasz z tej listy i w skd wiesz, ktra data jest
zwizana z czyimi urodzinami? PHP, tak samo jak wikszo jzykw programowania,
uywa do tego celu mechanizmu zmiennych. Ostatnia cz tego rozdziau jest
powicona korzystaniu ze zmiennych, operacjom matematycznym oraz prostym
manipulacjom na tekstach.
W rozdziale tym bdziemy zajmowa si nastpujcymi zagadnieniami:
n

napisaniem i przeanalizowaniem bardzo krtkiego programu w PHP,

przedyskutowaniem niektrych protokow internetowych,

przedstawieniem rl maszyny PHP i serwera WWW,

zdefiniowaniem znaczenia interpretacji i wykonania,

opisaniem zmiennych czym s?

typami danych omwieniem typw danych, jakie mog przyjmowa zmienne,

operacjami moliwymi na zmiennych,

staymi,

konwersj zmiennych z jednego typu danych na inny,

C:\Andrzej\PDF\PHP4. Od podstaw\r02.doc

35

36

PHP 4. Od podstaw
n

zmiennymi rodowiska.

Rozdzia rozpoczniemy nieomal najprostszym moliwym jednolinijkowym przykadem,


w ktrym chcemy pokaza, e strony PHP skadaj si z trzech skadnikw: tekstu, kodu
HTML i skryptw PHP. Strony zawierajce skrypty PHP s inne ni te, ktre zawieraj
jedynie HTML i w celu poinformowania o tym analizatora PHP s zapisane na serwerze
WWW w plikach z rozszerzeniem .php (lub podobnym), na tej podstawie s
rozpoznawane i wykonywane przez PHP zainstalowany na serwerze.
Rozszerzenie .php jest zalene od okrelonej konfiguracji PHP. Jeeli chcesz, moesz
tak skonfigurowa PHP, aby korzysta z nieomal dowolnego rozszerzenia, na przykad
.dlugierozszerzenie. W tej ksice korzystamy jedynie z rozszerzenia .php pisanego
maymi literami.

Wyniki dziaania skryptu s przesyane do przegldarki w postaci HTML. Pniej


zajmiemy si tym nieco dokadniej, teraz przedstawimy przykad.

Pierwszy przykadowy program


1. Uruchom Twj ulubiony edytor stron WWW i wpisz nastpujcy tekst:











2. Zapisz tekst w pliku przykl1.php w katalogu gwnym dokumentw serwera WWW.


3. Otwrz Twoj ulubion przegldark i wpisz peny adres URL serwera i strony

WWW, dla tego przykadu jest to http://localhost/przykl1.php. Powiniene


uzyska wynik podobny do poniszego w programie Internet Explorer.

36

C:\Andrzej\PDF\PHP4. Od podstaw\r02.doc

Rozdzia 2. n Pisanie programw w PHP

37

Rysunek 2.1.

Rne rodzaje kodu


Tak jak zapowiedzielimy wczeniej, najpierw skupimy si na przedstawieniu trzech
rnych typw kodu uytego na stronie. Spjrzmy na wpisany wanie kod i
sklasyfikujmy kady z tych trzech typw:











Kod bez adnego wyrnienia waciwie nie jest kodem. Jest to po prostu tekst. Nic
wicej na jego temat nie mona powiedzie.
Linie w ramce s znacznikami HTML. Znaczniki dowolnego typu s atwe do
rozpoznania, poniewa s oznaczane przez otwierajce i zamykajce nawiasy
trjktne. Nie jest to prawdziwy kod programu w tradycyjnym rozumieniu tego
okrelenia, dlatego do opisania kodu HTML uywamy sowa znacznik. Zakadamy, e
znasz HTML, wic nie bdziemy wicej mwi na ten temat.
Dodamy jeszcze, e wszystkie znaczniki HTML w tej ksice bdziemy pisa wielkimi
literami, mimo e jest to niezgodne ze standardem (standard HTML 4.0 okrela, e
wszystkie znaczniki powinny by pisane maymi literami). Robimy tak, poniewa nie
chcemy uywa cigle niewygodnego zaznaczania w caej ksice, a wszystkie
przegldarki i tak nie rozrniaj wielkoci liter w znacznikach.
Wszyscy, ktrzy znaj ju XHTML powinni wiedzie, e j*zyk ten, zgodny ze
standardem HTML 4.01 (najnowszy standard w XML), jest nietolerancyjny w wielu
aspektach, ktre przegldarki HTML najcz*ciej ignoroway. Oznacza to, e XHTML
nie pozwoli na uywanie znacznikw, ktre wyszy z uycia lub na nieprawidowe
zamykanie znacznikw. Wymaga rwnie pisania kodu HTML maymi literami. Do tej
pory nie ma popularnych przegldarek akceptujcych jedynie XHTML, wi*c nie
powinnimy obawia si* negatywnych skutkw zastosowania wielkich liter.

C:\Andrzej\PDF\PHP4. Od podstaw\r02.doc

37

38

PHP 4. Od podstaw
Kod zaznaczony ciemnym tem jest skryptem PHP. Skrypt PHP jest rwnie
zaznaczony nawiasem trjktnym i znakiem zapytania. Za kadym razem, gdy
zobaczysz fragment tekstu ograniczony znacznikami  i , powiniene wiedzie, e
cay tekst w rodku musi by skryptem PHP.
Jak wida na wynikowej stronie HTML, te trzy typy tekstu harmonijnie ze sob
wsppracuj, pomimo to skrypt PHP musi by przetworzony przez serwer WWW (ktry
moe by na innym komputerze ni twoja przegldarka).

Jak dziaa ten kod?


Rozpoznajc natur rnych typw kodu na stronach WWW, nie wyjanilimy, co robi
kada z linii kodu PHP. Naprawimy to teraz, na naszej stronie zawarta bya jedna linia
skryptu PHP:



W linii tej wykonywane s trzy czynnoci. Na pocztku mamy sowo 


, ktre jest
instrukcj PHP, pobierajc cokolwiek do niej zostanie przekazane i drukujc to na
stronie WWW. Jeeli do skryptu wpiszemy lini:
 ! "  

na stronie bdcej wynikiem dziaania tego skryptu powiniene zobaczy napis 
   . Moesz zauway, e w naszym przykadzie na ekranie pojawia si data, a do
funkcji 
przekazalimy jedynie funkcj    
jest to druga
wykonywana czynno, ktr opiszemy za chwil.
PHP posiada ogromn bibliotek* zarezerwowanych sw zwanych funkcjami, ktre
su do realizacji wielu cz*stych zada2, takich jak zwracanie daty i czasu, wysyanie
poczty, wykonywanie wielu skomplikowanych operacji matematycznych lub
wstrzymywanie wykonania skryptu na kilka sekund. W dodatku B przedstawilimy
ca list* funkcji. Nie musisz zna ich wszystkich na pami*, ale wielu z nich
uyjemy w przykadach w tej ksice, a p5niej b*dziesz z nich stale korzysta.

Ostatnim elementem jest rednik. PHP wymaga, aby kada linia kodu (jak si
przekonamy, istniej nieliczne wyjtki od tej reguy) bya zakoczona rednikiem w
celu oznaczenia jej koca.
Zauwa, e sowo 
nie byo otoczone cudzysowami. W naszym przykadzie
   , otaczajc tekst do wywietlenia cudzysowami, wskazalimy PHP, e
chcemy wywietli go dokadnie w taki sposb, jak zosta napisany. W naszym
przypadku, niepodajc cudzysoww, nakazujemy PHP uycie funkcji 
i
zwrcenie jej wyniku. Funkcja zwraca biecy czas w postaci czasu Greenwich.
Przedyskutujemy teraz dokadniej, jak dziaa funkcja 
.
Pewnie zauwaye, e w naszym przykadzie wywietlamy dat w postaci:

38

C:\Andrzej\PDF\PHP4. Od podstaw\r02.doc

Rozdzia 2. n Pisanie programw w PHP

39

#$$%&$$'

Jest jednak wiele innych formatw wywietlania daty. Moge, na przykad otrzyma
wynik w postaci:
#$%$$$()#$*

lub
+,#$*- .

S to prawidowe formaty dat, jednak PHP nie odrnia, ktrego formatu chcesz uywa
lub czy przypadkiem nie chcesz zastosowa cakowicie innej wersji. Musisz wic
wskaza, co ma zrobi i jest to realizowane przez sekcj zapisan w nawiasach i
cudzysowach po poleceniu . W naszym przykadzie podalimy, e na pocztku
daty ma by dzie, nastpnie miesic i rok. Wielko liter D, M i Y uytych w funkcji
jest rwnie znaczca. PHP interpretuje litery przedstawione w tabeli 2.1. w rny
sposb.
Tabela 2.1.
Znak

Wynik

Wywietla  lub .

Wywietla * lub /.

Dwucyfrowy dzie miesica z poprzedzajcym zerem, tj. $' do #'.

Tekstowo dzie tygodnia w postaci # liter, na przykad: 0- .

Miesic tekstowo, w penej postaci, na przykad: 1+2-.

Godzina w formacie 12-godzinnym tj. od $' do '&.

Godzina w formacie 24-godzinnym tj. od $$ do &#.

Godzina w formacie 12-godzinnym bez pocztkowych zer tj. od ' do '&.

Godzina w formacie 24-godzinnym bez pocztkowych zer tj. od $ do &#.

Wywietla minuty od $$ do 4(.

Dzie miesica bez pocztkowych zer od  do #'.

Dzie tygodnia w penej postaci, na przykad 0- .

Wskazuje, czy jest to rok przestpny jako $ lub '.

Wywietla miesic $' do '&.

Wywietla miesic bez pocztkowych zer, tj.: od ' do '&.

Miesic w skrconej, trzyliterowej postaci, na przykad 1+.

Wywietla sekundy, od $$ do 4(.

Przyrostek dla liczebnikw w jzyku angielskim jako dwa znaki, na przykad , +.

Ilo dni w podanym miesicu, tj. od &7 do #'.

Ustawienie strefy czasowej na serwerze, na przykad  .

C:\Andrzej\PDF\PHP4. Od podstaw\r02.doc

39

40

PHP 4. Od podstaw

Ilo sekund od pocztku epoki.

"

Pokazuje dzie tygodnia w postaci numerycznej, od $ (niedziela) do 9 (sobota).

Podaje rok w postaci czterocyfrowej, na przykad: '(((.

Podaje rok w postaci dwucyfrowej, na przykad: ((.

Zwraca dzie w roku, od $ do #94.

Podaje przesunicie strefy czasowej w sekundach (od %#&$$ do %#&$$) .

Jest to dosy obszerna lista. Nie bdziemy umieszcza takiej tabeli w tekcie za kadym
razem, gdy przedstawiamy now funkcj. Czasami bdziesz musia odszuka potrzebne
Ci informacje w dodatkach. Moemy rwnie zmieni nasz poprzedni przykad na:
  

Zostanie wtedy wywietlone:


2

Jako zadanie domowe pozostawiamy sprawdzenie, jakie dane moemy wywietli,


modyfikujc ten przykad. Teraz, gdy lepiej rozumiemy, jak dziaa przedstawiony kod,
moemy zaj si nastpnymi zagadnieniami.

Popatrzmy, co dzieje si z nasz stron pomidzy jej napisaniem i wywietleniem. Gdy


w rozdziale 1. instalowalimy PHP, proces ten zosta podzielony na czci, poniewa
instalowalimy rne elementy oprogramowania.
Jednym z tych elementw jest serwer WWW, ktry udostpnia nasze strony wszystkim.
Innym zadaniem serwera jest zarzdzanie obszarem (zwykle katalogiem lub struktur
katalogw), w ktrym umieszczamy nasze pojedyncze strony lub ca witryn WWW.
Istnieje wiele bezpatnych i komercyjnych serwerw, ale dominuj serwery dwch firm,
zajmujce ponad 70% rynku. Te dwa produkty to serwer Apache oraz Microsoft Internet
Information Server. Zakadamy, e do udostpnienia swoich stron uywasz jednego z nich.
Gdy korzystasz z sieci, ogldajc strony WWW, automatycznie czysz si z serwerem.
Proces wysyania adresu URL jest okrelany daniem. Serwer interpretuje adres URL,
odszukuje odpowiedni stron i odsya j do przegldarki. Jest to nazywane odpowiedzi.
Przegldarka zapamituje otrzymany kod i tworzy z niego obraz strony. Przegldarka jest
w tym dialogu klientem, natomiast cay proces jest zgodny z modelem klient-serwer.

40

C:\Andrzej\PDF\PHP4. Od podstaw\r02.doc

Rozdzia 2. n Pisanie programw w PHP

41

Klient-serwer
Termin ten dobrze opisuje sposb dziaania, okrelajc zadania dystrybucji. Serwer
(serwer WWW) przechowuje, interpretuje i rozsya dane, natomiast klient (przegldarka)
czy si z serwerem w celu uzyskania danych. Od tej pory, jeeli uyjemy okrelenia
klient, bdziemy mieli na myli przegldark. Jak si okae w pniejszych rozdziaach,
termin klient-serwer jest uproszczeniem procesu to nieco abstrakcyjny opis
rzeczywistoci. Aby zrozumie szczegy, musimy krtko opisa sposb dziaania samego
Internetu.

Protokoy internetowe
Nie chcemy opisywa tu caej historii Internetu, najwaniejsze, e jest to sie poczonych
ze sob komputerw. Internet zosta zaprojektowany do przenoszenia danych z jednego
miejsca do drugiego. Do tego celu uywa zestawu protokow sieciowych (znanych jako
TCP/IP).
Protok sieciowy jest metod opisu pakietw danych przesyanych pomi*dzy
w*zami przez sie telefoniczn, kablow bd5 lini* T1.

Jedn z zalet protokou TCP/IP jest to, e mona szybko zmieni tras przesyania
danych w przypadku awarii lub spowolnienia jednego z segmentw sieci. Gdy
uytkownik zamierza pobra za pomoc przegldarki stron WWW, przegldarka
realizuje to polecenie przy uyciu protokou o nazwie Transmission Control Protocol
(TCP). TCP jest protokoem transportowym, zapewniajcym niezawodny format
transmisji dla tego typu da. Zapewnia, e cay komunikat zostanie poprawnie
przeksztacony na posta odpowiedni do transmisji ( oczywicie prawidowo
rozpakowany i poczony po dotarciu do miejsca przeznaczenia). Protok sieciowy
TCP/IP jest metod opisu pakietw danych, ktre s przesyane midzy wzami za
pomoc linii telefonicznej, kablowej lub linii T1.
Zanim dane zostan podzielone w celu wysania w sie, musz otrzyma odpowiedni
adres. Drugi z protokow sieciowych, HyperText Transfer Protocol (HTTP), nakleja
na pakiety etykietki adresowe, aby TCP/IP odpowiednio kierowa dane. HTTP jest
protokoem uywanym przez sie WWW do przesyania danych midzy komputerami.
Jeeli zobaczysz adres URL rozpoczynajcy si od http://, powiniene wiedzie, e
korzysta on z protokou HTTP. Mona rwnie porwna TCP/IP do poczty, ktra
zajmuje si przesyaniem przesyek, natomiast HTTP do znaczka i adresu na kopercie,
ktre zapewniaj, e dotrze ona do miejsca przeznaczenia.
Komunikat przesany z przegldarki do serwera WWW jest nazywany daniem HTTP.
Gdy serwer odbierze takie danie, sprawdza, czy posiada odpowiedni stron. Jeeli
znajdzie j, dzieli na fragmenty zawarty w niej kod HTML (uywajc TCP), kieruje te
fragmenty poprzez sie na adres przegldarki (za pomoc HTTP). Jeeli serwer WWW
nie znajdzie odpowiedniej strony, pobiera stron zawierajc komunikat bdu (w tym
przypadku zowrogi Error 404: Strona nie zostaa odnaleziona), dzieli j i odsya do
przegldarki. Komunikat przesany z serwera WWW do przegldarki nazywamy
odpowiedzi HTTP. Poniej mamy schemat opisanego przed chwil procesu.

C:\Andrzej\PDF\PHP4. Od podstaw\r02.doc

41

42

PHP 4. Od podstaw

Rysunek 2.2.

Protok HTTP
Opucilimy sporo szczegw technicznych, wic teraz dokadniej opiszemy, jak dziaa
protok HTTP. Gdy do serwera zostanie wysane danie przesania strony WWW,
zawiera ono co wicej ni tylko interesujcy nas URL. Wraz z daniem przesyamy
sporo dodatkowych danych. Dzieje si tak rwnie w przypadku odpowiedzi serwer
wysya dodatkowe dane do przegldarki. W nastpnej czci rozdziau zajmiemy si
rnymi rodzajami dodatkowych danych przekazywanych wraz z waciwymi.
Wiele danych przesyanych w komunikacie HTTP generuje si automatycznie i
uytkownik nie ma na to bezporedniego wpywu, wic nie musisz si przejmowa ich
wysyaniem. Mimo e nie musisz ich tworzy, s one dla nas wane, poniewa skrypt
PHP moe korzysta z tych danych i dziki temu mamy bezporedni wpyw na ich
posta.
Kady komunikat HTTP ma ten sam format (niezalenie, czy jest on daniem klienta czy
odpowiedzi serwera). Moemy wyrni w nim trzy czci: linia dania/odpowiedzi,
nagwek HTTP i tre HTTP. Zawarto tych czci zaley od tego, czy komunikat
jest daniem czy odpowiedz HTTP oba te przypadki omwimy osobno.
Narysujmy teraz schemat tego procesu.

42

C:\Andrzej\PDF\PHP4. Od podstaw\r02.doc

Rozdzia 2. n Pisanie programw w PHP

43

Rysunek 2.3.

Moemy zobaczy, e danie i odpowied HTTP maj bardzo podobn struktur i wiele
danych jest identycznych dla obu czci nagwka HTTP. Fragmenty informacji, ktre
przeznaczone s tylko dla serwera lub tylko dla przegldarki s wysyane jedynie jako
cz dania bd odpowiedzi, wic sensowne bdzie dokadne przeanalizowanie ich
czci skadowych.

danie HTTP
Przegldarka wysya do serwera WWW danie HTTP, ktre zawiera nastpujce
elementy.

Linia dania
Pierwsza linia kadego dania HTTP jest lini dania, ktra zawiera nastpujce dane:
n

komend HTTP zwan te metod,

ciek na serwerze do zasobw danych przez klienta,

numer wersji HTTP.

Przykadowa linia dania moe wyglda nastpujco:


3;5</'<'

Uywana metoda wskazuje serwerowi, w jaki sposb ma obsuy danie. Istniej trzy
podstawowe metody uywane w tym polu.
Tabela 2.2.
Metoda

Opis

3;

Jest to danie przesania danych z okrelonego URL. Wikszo da HTTP


w Internecie to wanie dania 3;. Informacja zamawiana przez nie moe by

C:\Andrzej\PDF\PHP4. Od podstaw\r02.doc

43

44

PHP 4. Od podstaw
czymkolwiek, od strony HTTP lub PHP do wyniku dziaania programu JavaScript
lub PerlScript czy dowolnego innego programu. Moesz wysa do serwera ograniczon
ilo danych w postaci rozszerzenia adresu URL.

;*

Jest to taka sama metoda jak 3;, poza tym, e wskazuje na danie tylko nagwek
HTTP bez doczonych danych.

/6

danie to wskazuje, e dane zostan wysane do serwera jako cz treci HTTP.


Dane te s nastpnie przesyane do programu obsugi na serwerze WWW.

Istnieje wiele innych metod obsugiwanych przez HTTP , ,  !", "#$$"
i #%#$&. S one jednak duo rzadziej stosowane i dlatego wykraczaj poza ramy tej
ksiki. Jeeli chcesz dowiedzie si wicej na temat tych metod, przeczytaj RFC 2068
dostpne na serwerze http://www.rfc.net.

Nagwek HTTP
Nastpn czci danych jest nagwek HTTP. Zawiera on dane na temat typw
dokumentw, jakie klient akceptuje w odpowiedzi na danie, typ przegldarki
wysyajcej danie, dat i inne dane konfiguracyjne. Nagwek dania HTTP zawiera
dane, ktre mog by zakwalifikowane do jednej z trzech kategorii.
n

Oglne: zawieraj informacje na temat zarwno klienta, jak i serwera, ale nie s
specyficzne dla adnego z nich.

Jednostka: informacje na temat danych przesyanych pomidzy klientem


a serwerem.

danie: dane na temat konfiguracji klienta i rnych typw akceptowanych


dokumentw.

Przykadowy nagwek HTTP wyglda nastpujco:


*=>>
*)+2=+)25
?++ +=@)*. A
5="""<"-B<
CD--=="EA<"-B<<2FEF56. 5<EFG#H#$
85-)*+= ..I''J +2B&<$<#& 479

Jak mona zauway, nagwek HTTP skada si z kilku wierszy. Kady z wierszy zawiera
opis fragmentu danych nagwka HTTP oraz jego warto.
Istnieje wiele rnych rodzajw linii, z ktrych moe skada si nagwek HTTP,
wikszo z nich jest opcjonalna, wic HTTP musi wskazywa, kiedy koczy przesyanie
danych nagwka. Do tego celu uywana jest pusta linia. W HTTP 1.1 danie musi
zawiera lini dania i nagwek '#&.

Tre HTTP
Jeeli w linii dania HTTP zostaa uyta metoda POST, tre dania HTTP zawiera
wszystkie dane wysane do serwera, na przykad dane, ktre uytkownik wpisa do

44

C:\Andrzej\PDF\PHP4. Od podstaw\r02.doc

Rozdzia 2. n Pisanie programw w PHP

45

formularza HTML (w dalszej czci tej ksiki znajduj si takie przykady). W


przeciwnym przypadku tre dania HTTP jest pusta.

Odpowied HTTP
Odpowied HTTP jest odsyana z serwera do klienta i zawiera nastpujce skadniki.

Linia odpowiedzi
Linia odpowiedzi zawiera tylko dwie dane:
n

numer wersji HTTP,

kod dania HTTP, ktry wskazuje na udane lub nieudane wykonanie dania.

Przykadowa linia odpowiedzi to:


/'<'&$$@

W tym przykadzie zwracany jest kod status HTTP 200, ktry jest odpowiednikiem
komunikatu #(. Oznacza on, e danie zostao prawidowo przetworzone i odpowied
zawiera odpowiedni stron lub dane z serwera. Przypomnij sobie, e kilka stron wstecz
wspominalimy o kodzie statusu 404 linia odpowiedzi zawiera kod 404, jeeli serwer
nie znajdzie danego zasobu. Istnieje pi klas odpowiedzi, wymienionych w tabeli 2.3.

Nagwek HTTP
Nagwek odpowiedzi HTTP jest podobny do opisanego przed chwil nagwka dania.
W przypadku odpowiedzi HTTP dane zawarte w nagwku s trzech rodzajw.
Tabela 2.3.
Klasa kodw

Opis

100 199

S to kody informacyjne wskazuj, e biece danie jest przetwarzane.

200 299

Kody oznaczajce sukces serwer WWW prawidowo otrzyma danie i odesa


wynik.

300 399

Kody oznaczajce, e danie nie moe by spenione jest niekompletne,


nieprawidowe lub niemoliwe do wykonania.

400 499

Kody oznaczajce bd klienta danie byo niekompletne, nieprawidowe


lub niemoliwe do wykonania.

500 599

Kody oznaczajce bd serwera danie wyglda na prawidowe, ale serwer


nie potrafi go zrealizowa.

Oglne: zawieraj informacje na temat zarwno klienta, jak i serwera, ale nie s
specyficzne dla adnego z nich.

Jednostka: informacje na temat danych przesyanych pomidzy klientem


a serwerem.

C:\Andrzej\PDF\PHP4. Od podstaw\r02.doc

45

46

PHP 4. Od podstaw
n

Odpowied: dane na temat serwera wysyajcego odpowied i sposobu obsugi


odpowiedzi.

Tak jak poprzednio nagwek skada si z kilku linii i korzysta z pustej linii oznaczajcej
koniec danych nagwka. Poniej zamieszczamy przykad nagwka, a po prawej stronie
kadej linii znajduje si jej nazwa:
/'<'&$$@
=+,'5KA'(((,'9='&=&#3

linia statusu
nagwek oglny

6-A-=*'<#<'&8+ B686; +2B//%<$<&

nagwek odpowiedzi

5) D =0- ,&('(((,'&=$7=$#3

nagwek jednostki

Na temat pierwszej linii ju pisalimy, na temat drugiej nie mamy nic do powiedzenia.
W linii trzeciej, &)*), okrelamy typ uruchomionego serwera WWW. Czwarta zawiera
dat ostatniej modyfikacji strony, ktr wanie cigamy.
Nagwek moe zawiera wiele wi*cej danych ni przytoczone tutaj, w zalenoci od
rodzaju danych danych. Jeeli chcesz dowiedzie si* wi*cej na temat wszystkich
typw informacji, jakie mog znajdowa si* w trzech cz*ciach nagwka,
znajdziesz je w dokumencie RFC 2068 (Cz*ci 4.5, 7.1 i 7.2).

Tre HTTP
Jeeli udaa si realizacja dania, tre odpowiedzi HTTP zawiera kod HTML (wraz
z wszystkimi skryptami, jakie bdzie moga wykona przegldarka), ktry bdzie
interpretowany przez przegldark.

Teraz wiemy ju, w jaki sposb przegldarka wysya dania i jak serwer WWW odsya
strony do przegldarki. Podsumujmy 6-stopniowy proces dostarczenia strony WWW.

46

C:\Andrzej\PDF\PHP4. Od podstaw\r02.doc

Rozdzia 2. n Pisanie programw w PHP

47

Rysunek 2.4.

Serwer WWW odszukuje dan stron WWW (krok 3.) i, jeeli jest to strona PHP, musi
przetworzy kod PHP w celu wygenerowania HTML, ktry nastpnie jest przesyany do
przegldarki (krok 4.). Jeeli nazwa strony jest zakoczona .php, serwer przesya j
w celu przetworzenia do maszyny skryptowej PHP (podczonej do serwera).
Do tej pory przestudiowalimy wiele niezbdnych aspektw otaczajcych PHP, ale nasza
wiedza na temat samego dziaania PHP jest raczej oglnikowa. Dla uproszczenia
traktowalimy PHP jak maszyn do produkcji parwek serwer WWW napycha j z
jednej strony surowym kodem PHP, a z drugiej strony wychodzia adnie zapakowana
strona HTML czas odtajni ten proces.
Jak ju wspominalimy, strony PHP skadaj si z tekstu, znacznikw HTML i skryptw
PHP. Programy, ktre wpisujesz na strony HTML, nazywane s skryptami. Sam HTML
nie moe by nazwany jzykiem programowania poniewa, oprcz wywietlania
statycznego tekstu i obrazkw, posiada bardzo ograniczone moliwoci, dlatego
niezbdne stao si pisanie kodu w innych jzykach, pozwalajcych zrealizowa
dodatkowe funkcje, nazywanych jzykami skryptowymi. Istnieje wiele jzykw
skryptowych i by moe znasz ju kilka, na przykad JavaScript. Jednak tym, co
odrnia PHP od JavaScript czy prostego kodu HTML jest to, e jest wykonywany na
serwerze, a nie w przegldarce.
HTML pozwala na doczanie skryptw w (prawie) dowolnym miejscu kodu HTML
robi to, dostarczajc standardowych sposobw doczania skryptw, o czym za chwil.
Gdy serwer otrzyma danie wysania strony i generowany bdzie kod HTML, kady
skrypt na stronie jest przesyany do maszyny skryptowej w celu interpretacji i
wygenerowania odpowiedniego kodu HTML.
Skrypty s podstaw PHP! Uywamy ich do napisania instrukcji pozwalajcych na
dynamiczne tworzenie stron. Istnieje wiele zalet dynamicznego tworzenia stron, mona
prezentowa informacje wygenerowane w oparciu o dane przekazane w formularzu,
mona zmienia posta stron dla rnych przegldarek, mona personalizowa strony i

C:\Andrzej\PDF\PHP4. Od podstaw\r02.doc

47

48

PHP 4. Od podstaw
korzysta z ustawie uytkownika oraz wiele, wiele innych. Wszystko jest oparte na tym,
e skrypt musi zosta zinterpretowany w czasie, gdy zostanie wywoany.

Koncepcja analizy i wykonania (krtka dygresja)


Interpretacja skryptw PHP jest podzielona na dwa podprocesy. Najpierw sprawdzana
jest poprawno skryptu PHP w procesie zwanym analiz. Jest to odpowiednik
sprawdzania gramatyki zda i odszukiwania pomyek przy pisaniu. Nie zapewnia to, e
skrypt PHP jest poprawny, sprawdzana jest tylko jego zgodno ze zbiorem
predefiniowanych zasad. Drugim w kolejnoci jest proces wykonywania skryptu. Tutaj
okazuje si, czy napisany kod ma sens. W czasie wykonania pobierana jest pojedyncza
linia PHP i zamieniana na odpowiadajcy jej kod HTML. Jest przeprowadzane liniowo,
chyba e zostanie to zmienione w skrypcie PHP.
W PHP istniej dwa miejsca, w ktrych mog by zwracane bdy: w czasie analizy
i w czasie wykonania. Jeeli zdarzy si taka sytuacja, komunikat bdu zostanie
wywietlony w przegldarce. Jeeli wszystko pjdzie dobrze, do przegldarki trafi
dynamicznie utworzona strona HTML.

Skrypty serwera
W jaki sposb zmienia si sposb przetwarzania strony na serwerze po wprowadzeniu
skryptw? W wikszej czci naszego modelu wedug ktrego przegldarka czy si do
serwera WWW, wysyania dania, uzyskuje odpowied i interpretuje otrzymany HTML
tak, aby uzyska wynikow stron, nie zachodz adne zmiany.
Jedyna zmiana zachodzi w czasie przygotowania strony wysyanej do przegldarki, gdy
serwer napotka na skrypt. Pierwszym zadaniem serwera jest identyfikacja maszyny
odpowiedzialnej za interpretacj tego skryptu. Jest to wany punkt, poniewa w czasie
pisania skryptu wybieramy, czy zostanie on wykonany na serwerze lub w przegldarce.
Sprecyzujmy te rnice.
n

Skrypt interpretowany przez serwer WWW jest nazywany skryptem serwera.


Jest to zbir instrukcji przetwarzanych przez serwer i generujcych HTML.
Wynikowy HTML jest wysyany jako cz odpowiedzi HTTP do przegldarki.
Przegldarka analizuje HTML i odpowiednio go wywietla.

Strona HTML jest interpretowana przez przegldark. HTML nie jest przetwarzany
przez serwer WWW. Jest wysyany do przegldarki (jako cz odpowiedzi HTTP)
i tam interpretowany. Wyniki interpretacji widzimy w oknie przegldarki.

Identyfikacja skryptw PHP


Do tej pory powiedzielimy, e serwer WWW musi zdecydowa, na ktrym komputerze
bdzie przetwarzany skrypt. Jednak w jaki sposb mamy zidentyfikowa skrypt
wbudowany w kod HTML? Tak naprawd w tym rozdziale odpowiedzielimy ju na to

48

C:\Andrzej\PDF\PHP4. Od podstaw\r02.doc

Rozdzia 2. n Pisanie programw w PHP

49

pytanie PHP (ktry ma by przetwarzany na serwerze WWW) jest zawarty pomidzy


specjalnymi znacznikami +++, jak w nastpujcym przykadzie:
 LF2-F2 +MN
  +

Wszystko, co jest zawarte pomidzy  a , jest traktowane jako kod PHP i wysyane
do maszyny skryptowej PHP w celu przetworzenia. Po interpretacji do przegldarki
zwracany jest HTML i, jeeli skorzystasz z opcji przegldarki rdo, powiniene
zobaczy, e nasz program zwrci czysty kod HTML:



 LF2-F2 +MN
&9#+




W ten sposb uniknito tradycyjnego problemu moliwoci przegldarki. Szczeglnie


opcje, takie jak komponenty wbudowywane za pomoc znacznikw #,-", dziaaj
jedynie w programie Internet Explorer. Poza tym, dziaanie nowych funkcji, takich jak
arkusze stylw, zaleao od moliwoci poszczeglnych przegldarek, na przykad IE3
bardzo sabo obsugiwa arkusze stylw, IE4 robi to ju w szerokim zakresie, a IE5 posiada
wreszcie kompletn obsug.
PHP nie stwarza tej kategorii problemw nie polegasz na tym, e przegldarka potrafi
obsugiwa PHP, przegldarka musi jedynie przetwarza HTML. Jedynym problemem
jest sposb interpretacji rnych funkcji HTML w przypadku uywania starszych wersji
programw Netscape Navigator, Internet Explorer lub Opera. W przypadku najnowszych
wersji problem nie wystpuje.

Zanim przejdziemy do programowania w PHP, powinnimy wspomnie o pamici


podrcznej przegldarki. Prawdopodobnie znasz t opcj, przegldane strony s
zapisywane na dysku. Aby przyspieszy przegldanie stron, przegldarka korzysta z
tych stron w przypadku, gdy na serwerze nie ma nowszej wersji strony. Miejsce ich zapisu
na komputerze zaley zarwno od typu uywanej przegldarki, jak i platformy, na ktrej
korzystasz z przegldarki.
W Windows (98, NT i 2000) pami podrczna Netscape Navigatora jest umieszczona
zwykle w katalogu C:\Program Files\Netscape\Users\Cache. W przypadku Internet
Explorera jest to katalog Temporary Internet Files w katalogu Windows lub WinNt, w
zalenoci od tego, czy korzystasz z Windows 98 lub NT 4.0. W Windows 2000 katalog
ten znajduje si w Documents and Settings w osobnym podkatalogu dla kadego
uytkownika korzystajcego z systemu.
W systemie Linux pami podrczna znajduje si w katalogu ~/.netscape/cache (znak ~
reprezentuje katalog domowy uytkownika).

C:\Andrzej\PDF\PHP4. Od podstaw\r02.doc

49

50

PHP 4. Od podstaw
W przypadku uywania PHP na serwerze do przetwarzania stron, istnienie pamici
podrcznej staje si znaczce. Jeeli wykorzystasz zapamitan stron z poprzedniego
wykonania, nie skorzystasz z dynamicznego kodu HTML i zwracane dane mog by
nieprawidowe. Moesz to zauway, jeeli uyjesz przycisku przegldarki Wstecz,
przechodzc przez kilka stron PHP. Czasami nie pomaga nawet naciskanie przycisku
Odwie, bufor nie jest odwieany i strona wywietla si nieprawidowo, poniewa
przegldarka nie ma informacji o zmianach. W takim przypadku naley wymusi
odwieenie strony. W Internet Explorer 5 naley nacisn klawisze Ctrl+F5, natomiast
w Netscape Navigator nacisn Shift i klikn przycisk Reload.
Jest to wane, poniewa w przypadku uruchamiania przykadw moesz otrzymywa te
same wyniki, pochodzce z poprzedniego uruchomienia skryptu, ktre przegldarka moe
pobra z bufora. Jeeli dostajesz niezrozumiae wyniki upewnij si, e przegldarka pobiera
now stron. Mona to zrobi, wymuszajc odwieenie lub zmieniajc ustawienia
przegldarki.
Istniej nagwki HTTP uywane do zabezpieczania strony przed przechowywaniem
w pami*ci podr*cznej. Ponisze 3 linie kodu PHP (jeeli uyjesz ich na pocztku
skryptu) zabezpieczaj przed zapami*taniem strony przez Internet Explorer lub
Netscape Navigator. Mona posuy si* tym sposobem, aby zabezpieczy si* przed
nieprzewidzianymi wynikami lub w przypadku, gdy jeste zm*czony wielokrotnym
odwieaniem dokumentu.

-?)?+-.=+),25)-A. 
-/-=+)
-;B -5=+,&912.'((H$4=$$=$$3


Po zapoznaniu si ze sposobem umieszczania skryptw PHP w stronach WWW oraz


tym, w jaki sposb serwer WWW je obsuguje, naley si zaj poznawaniem rnych
elementw jzyka PHP. Chyba najbardziej podstawow jednostk w programowaniu
jest zmienna, zwykle okrelana jako obszar pamici sucy do przechowywania danych,
ktry posiada identyfikator nadany mu przez programist.
W PHP zmienne rozpoczynaj si znakiem .. W celu przypisania wartoci zmiennej
uywamy operatora przypisania, czyli znaku /. Aby utworzy zmienn w PHP i
przypisa jej warto, uyjemy nastpujcej linii:
O2-G .. 6F5-

Identyfikatorem zmiennej jest .0), natomiast przypisan wartoci jest tekst 11 


&23) . Mona rwnie do zmiennych przypisywa liczby.
O .5PD-P"P!+!P.+ G4

50

C:\Andrzej\PDF\PHP4. Od podstaw\r02.doc

Rozdzia 2. n Pisanie programw w PHP

51

Mamy tutaj zoon nazw zmiennej . 13456)447417 , ale oprcz tego nie
rni si ona zbytnio od poprzedniego przypisania. Jedyn rnic jest to, e zmienne
numeryczne nie s objte cudzysowami. Wskazuje to PHP, e maj by traktowane jako
warto numeryczna. Nie ma adnych innych wymaga, aby PHP traktowao warto
jako liczb.
Po utworzeniu zmiennej moesz jej dowolnie uywa w programie. W celu wywietlenia
wartoci na ekranie moesz uy naszej znajomej funkcji 
w nastpujcy sposb:
O2-

Ograniczenia w nazwach zmiennych


Istnieje niewiele ogranicze w nazywaniu zmiennych. We wielu jzykach programowania
istnieje limit dugoci nazwy zmiennej, zwykle do 255 lub 1000 znakw, jednak w PHP
nie ma takiego ograniczenia. Prawdopodobnie nigdy nie bdziesz uywa powyej 50
znakw, a 20 do 30 jest wystarczajce dla wikszoci ludzi.
Pierwszym ograniczeniem jest to, e zmienna musi zaczyna si od litery lub
podkrelenia (ignorujc znak dolara, ktry nie jest waciwie czci nazwy zmiennej).
Drugim jest to, e nazwa moe skada si z liter, cyfr i znakw podkrelenia. Inne
znaki, takie jak 8, 9, :, i ; nie s dopuszczalne i powoduj wypisanie bdu na stronie.
Oprcz tego moesz tworzy dowolne nazwy wedug wasnego uznania i fantazji. Jednak
w dalszej czci tego rozdziau zajmiemy si rozsdnym nazywaniem zmiennych.

Wielko liter w nazwach zmiennych


Zmienne nie s tak proste, jak si to wydaje na pierwszy rzut oka. Jednym z problemw,
z ktrym pocztkujcy spotykaj si najczciej, jest rozpoznawanie wielkich i maych
liter w nazwach zmiennych. Najatwiejszym sposobem rozwizania jest uycie
przykadowego kodu:
O2-G .. 6F5-
O*2-G151

Powysze dwie linie tworz dwie rne zmienne, jedn o nazwie .0) i drug o nazwie
.!0). Te dwie zmienne maj dwie rne wartoci i s tak samo rne jak te, ktrych
uyjemy w poniszym kodzie:
O5."+P2-P+ .5F G .. 6F5-
O5."+P2-P -.+ F G151

Dosy czsto zdarza si, e przy wypisywaniu wartoci zmiennej na stronie przypadkowo
uyjemy pierwszej wielkiej litery tam, gdzie jej nie powinno by. Jeeli masz zamiar
skorzysta z jednej tylko zmiennej, powiniene uy nastpujcego kodu:
O2-G .. 6F5-
O2-G151

C:\Andrzej\PDF\PHP4. Od podstaw\r02.doc

51

52

PHP 4. Od podstaw
Pierwsza linia ustawia warto zmiennej .0) na 11  &23) , natomiast
druga zmienia cakowicie zawarto .0) na -3-5 . W tym przykadzie kodu
utworzona i uywana jest tylko jedna zmienna.
Teraz zajmiemy si maym przykadem, w ktrym tworzymy zmienn i wywietlamy jej
warto na stronie WWW.

Przypisywanie warto(ci do zmiennej i jej wy(wietlanie


1. Otwrz ulubiony edytor tekstu i wpisz nastpujce linie:




O-G-.+-+
O-





2. Zapisz ten kod jako variable.php.


3. Otwrz t stron w przegldarce.
Rysunek 2.5.

Jak to dziaa?
Waciwy kod skada si jedynie z dwch linii. W pierwszej
O-G-.+-+

przypisujemy cig <)17 ,)7 do zmiennej .). W drugiej przekazujemy


zawarto zmiennej .) do funkcji 
.
O-

Jak wida, wysyajc zawarto zmiennej .) na stron WWW, nie uywalimy
cudzysoww. Jeeli jednak uyjemy takiej linii:

52

C:\Andrzej\PDF\PHP4. Od podstaw\r02.doc

Rozdzia 2. n Pisanie programw w PHP

53

O-

na ekranie nadal bdziemy widzieli napis <)17 ,)7. Aby PHP nie podstawiao
wartoci zmiennych, musisz zamiast cudzysoww skorzysta ze znakw apostrofu.
Majc dowiadczenie tylko z Windows, poczujesz si* nieco zagubiony. Moesz
spodziewa si*, e powysza linia wywietli tekst .). Autorzy, piszc PHP,
zapoyczyli niektre elementy Perla i skryptw powoki Unix, a w tych skryptach
uycie znaku dolara nadpisuje znaki cudzysoww. Aby wywietli znak dolara z
nast*pujc po nim liter (lub literami), musisz stosowa inne metody, ktrymi
zajmiemy si* w kolejnych rozdziaach.

Typy danych
Jak wspominalimy wczeniej, skupimy si na dwch typach zmiennych, zawierajcych
wartoci numeryczne i cigi znakw. Istnieje jeszcze kilka innych typw zmiennych
uywanych przez PHP, nazywanych typami danych, takich jak tablice, obiekty, jednak
ich szczegowy opis znajdzie si w pniejszych rozdziaach. Pena lista typw danych
w PHP jest nastpujca:
n 3) 7

(tekst),

n 7)
n 0=1
n ))5

(liczby),

(liczby),

(tablice),

n =,
n

typ nieokrelony.

Typy danych nie s ustawiane przez programist, to PHP decyduje za ciebie, w trakcie
interpretacji strony, jaki powinien by typ zmiennej i odpowiednio go ustawia. Te typy
danych, uywane przez PHP, oznaczaj rne rodzaje przechowywanych danych i
definiuj rne zestawy operacji, jakie mona na tych danych wykona.

Znakowy typ danych


Typ danych 3) 7 jest jedynym, ktry przechowuje dane tekstowe, sowa lub cae zdania.
Wszystko, tre zapisana w cudzysowach, jest traktowana jako tekst, nawet dane
numeryczne, na przykad w poniszym kodzie obie zmienne przechowuj cigi:
O?-G? ..
O;+ +6 G&<9

Nie ma znaczenia, e druga z wartoci jest czysto numeryczna, jeeli zostaa podana
w cudzysowach, automatycznie staje si cigiem. Jeeli jaka warto zostanie zapisana
w postaci cigu, a nastpnie wykonasz na niej operacje matematyczne, PHP dokona
konwersji typu zmiennej na typ numeryczny. W wyniku tego dodawanie cigw, ktre

C:\Andrzej\PDF\PHP4. Od podstaw\r02.doc

53

54

PHP 4. Od podstaw
maj warto numeryczn, moe doprowadzi do nieoczekiwanych wynikw. Cigi maj
wasn operacj dodawania, jest nazywana czeniem (konkatenacj).

czenie cigw
czenie cigw to proces dodawania jednego cigu do drugiego, to znaczy doczania
jednego cigu na kocu drugiego. Do tego celu uywa si operatora zczenia + (kropka).
Wynikiem dziaania poniszej linii jest cig " 11>+?, zakadajc wartoci
zmiennych, takie jak w poprzednim przykadzie.
O?-GO?-<O;+ +6 

W naszym przykadzie nie ma odstpu pomidzy czonymi cigami, co moe nie podoba
si projektantom. Utwrzmy wic zmienn, ktra bdzie przechowywaa znak spacji.
O6G

Powiniene zauway, e rni si ona nieco od pustego cigu. Pusty cig nie zawiera nic,
natomiast cig ze spacj zawiera jeden znak. Spacje mog by oczywicie czone z
innymi cigami w taki sam sposb, jak inne teksty.
O?-GO?-<O6<O;+ +6 

Wykonanie tej linii da w wyniku porzdnie wygldajcy tekst " 11>+?.


Nie ma powodu, dla ktrego nie mgby czy zmiennych z tekstem.
O?-G2 F<O6<&<$

W tym przykadzie dodalimy do tekstu zmienn i jeszcze jeden fragment tekstu, co w


wyniku daje ,0 2>+@. Mona rwnie zastosowa nastpujc kombinacj:
O?-G2 F<<&<$

Da to efekt identyczny z poprzednim. Naley jedynie pamita o zasadzie stosowania


odstpw w HTML. Jeeli w tekcie bdzie uyta wicej ni jedna spacja pod rzd,
przegldarka wywietli na stronie WWW tylko jedn.
W PHP mamy jeszcze inn metod czenia cigw za pomoc funkcji 
.
Pamitasz, jak prbowalimy wypisa nazw zmiennej na stronie WWW i zamiast tego
otrzymalimy warto zmiennej, na przykad:
O?-G? ..
O?-

Na ekranie otrzymamy " 11. Daje to moliwo uywania nazw zmiennych razem
z tekstem, aby w wyniku otrzyma poczenie tych tekstw.
O?-*+- !

Linia ta spowoduje wypisanie cigu " 11 !7)A. Istniej jednak puapki, o
ktrych naley pamita. Po pierwsze, znakw sterujcych mona uywa pomidzy

54

C:\Andrzej\PDF\PHP4. Od podstaw\r02.doc

Rozdzia 2. n Pisanie programw w PHP

55

cudzysowami, a nie wolno midzy apostrofami. Naley pomyle co si stanie, jeeli


bdziesz mia dwie zmienne, na przykad .") i .")3.
Co bdzie wynikiem dziaania poniszej linii?
@. F+ !2E- ! QO?-5.

To moe by dla ciebie oczywiste chcesz uy zmiennej ."), a nie .")3, jednak
w jaki sposb zasygnalizowa to PHP? Tak naprawd PHP bdzie szukao zmiennej
.")31. Aby uzyska interesujce nas dziaanie, naley uj nazw zmiennej w nawiasy
klamrowe.
@. F+ !2E- ! QOR?-S5.

Po drugie, trzeba rwnie pamita o oddzielaniu spacj kropki od zmiennej. Musimy to


robi nie tylko dla lepszej czytelnoci, moe to mie rwnie wpyw na wynik. Dwie linie
poniej mog wyglda na identyczne, ale daj zupenie inne wyniki.
&<&
&<&

Wynik to odpowiednio 22 i 2.2! Troch oszukiwalimy, poniewa adna z cyfr nie bya
umieszczona w apostrofach, wic nie s to tak naprawd cigi. Jednak problem nadal
wystpuje, poniewa liczba 2 zostaa potraktowana przez operator zczenia jak cig
znakw. Aby PHP potraktowao liczb jak cig, wystarczy doda odstp pomidzy t
liczb a operatorem zczenia. Naley zapamita, e w niektrych przypadkach sposb
umieszczania odstpw w kodzie moe wpyn na wygld tworzonej strony.
Czas zobaczy w dziaaniu niektre z omwionych moliwoci PHP. Utwrzmy kilka
cigw wraz z ich wartociami i przy uyciu funkcji 
wywietlmy je na stronie
WWW.

Uycie cigw znakw


1. Otwrz edytor stron WWW i wpisz nastpujcy kod:




O?-G/+ 
O;+ +6 G#<$
O6G
O?-GO?-<O6<O;+ +6 
O?-<O?-





2. Zapisz go jako string.php.


3. Po otwarciu w przegldarce powiniene otrzyma nastpujcy wynik.

C:\Andrzej\PDF\PHP4. Od podstaw\r02.doc

55

56

PHP 4. Od podstaw

Rysunek 2.6.

Jak to dziaa?
Zajmowalimy si ju podobnym fragmentem kodu. Pierwsze trzy linie tworz trzy
zmienne .")5, .7 7& A oraz .& i przypisywane s im rne wartoci.
O?-G/+ 
O;+ +6 G#<$
O6G

W nastpnej linii czymy te trzy wartoci, a wynik umieszczamy w nowo utworzonej


zmiennej o nazwie .").
O?-GO?-<O6<O;+ +6 

Na koniec moemy doczy ten wynik do samego siebie w funkcji 


.
O?-<O?-

Skutkiem tego wynik jest dwukrotnie powtrzony, ale nie ma odstpu pomidzy dwoma
zmiennymi ."). Wyglda to niezbyt adnie, ale chcielimy w ten sposb pokaza, e jest
moliwe czenie zmiennej z sam sob.

To nie dziaa!
Jeeli zobaczysz tekst podobny do Parse error in C:\Program Files\Apache Group\
Apache\htdocs\string.php on line n, prawdopodobnie zapomniae umieci rednik na
kocu linii. Jeeli widzisz jedynie cz wyniku pokazanego na rysunku, prawdopodobnie
pomylie si w nazwie zmiennej lub zmienie wielko jednej z liter nazwy zmiennej.
Upewnij si, e nazwy i wielkoci liter s poprawne dla wszystkich zmiennych uytych
w tym przykadzie. Jeeli tak si stao, przypadkowo utworzye now pust zmienn.

56

C:\Andrzej\PDF\PHP4. Od podstaw\r02.doc

Rozdzia 2. n Pisanie programw w PHP

57

Numeryczne typy danych


Istniej dwa numeryczne typy danych, 7) i 0=1. Typ 7) to liczby cakowite,
natomiast 0=1 to liczby zmiennoprzecinkowe. Poniej mamy kilka przykadw ich
uycia.
O.  EP +-G##
O ++P +-G)4H(H
O.  EP2E.G%<49H
O ++P2E.G)&#<&

Powiniene wydedukowa z powyszych linii, e kada liczba cakowita staje si automatycznie liczb 7), natomiast liczby z uamkami s zapamitywane jako typ 0=1.
Te dwa typy danych maj rwnie rne zakresy wartoci, ktre zale jednak od
systemu operacyjnego i platformy, na ktrej dziaa PHP, na przykad PHP na Windows
98 moe przechowywa liczby 7) od 32768 do 32767. Typ 0=1 na tej samej
maszynie ma zakres od 1.79769313486232E308 do 4.940656458412E-324 (dla
liczb ujemnych) i 4.940656458412E-324 do 1.79769313486232E308 (dla liczb
dodatnich) oraz warto zero.
Notacja E (wykadnicza) przytoczona tutaj jest metod, ktrej PHP i praktycznie
kady inny j*zyk programowania uywa do zapisu bardzo maych i bardzo duych
liczb. Liczba jest zapisywana jako liczba bazowa pomnoona przez dziesi*
podniesione do pot*gi okrelonej drug liczb. Na przykad 2.5E3 to zapis 2.5*103
lub 2500.

To, co rni PHP od innych jzykw programowania, to o wiele mniejsza ilo typw
danych. Istniej tylko dwa typy numeryczne. Upraszcza to tworzenie programw i zwykle
atwo jest okreli, kiedy potrzebujemy liczb cakowitych, a kiedy liczb z przecinkiem.

Proste operacje matematyczne


PHP posiada zestaw operatorw sucych do wykonywania operacji matematycznych.
S to bardzo popularne operatory, z ktrymi powiniene si zapozna ju na matematyce
w szkole.
Operator

Dziaanie

Operator dodawania.

Operator mnoenia.

Operator odejmowania, a take operator jednoargumentowy wskazujcy liczby ujemne,


na przykad 6.

Operator dzielenia.

Operator modulo (reszta z dzielenia cakowitego), na przykad, 8 % 5 = 3.

C:\Andrzej\PDF\PHP4. Od podstaw\r02.doc

57

58

PHP 4. Od podstaw
Ich uycie jest cakowicie intuicyjne. Dla przykadu uyjemy operatora dodawania do
podliczenia wartoci paragonu w sklepie.
O?.EG'<4
O.FG$<7
O62GO?.ETO.F

Warto zakupw jest sum wartoci zmiennej ."1= i .<12. Po wykonaniu operacji
zmienna .&0 ma warto >+E. Inne operatory dziaaj w ten sam sposb. Jeeli
chciaby kupi dwa bochenki chleba, kod obliczajcy warto zakupw jest
nastpujcy:
O?.EG'<4
O62GO?.E>&

Mona czy operatory matematyczne w wyraenia w sposb pokazany w kolejnym


przykadzie.
O?.EG'<4
O.FG$<7
O@2+CE"G$<4
O62GO?.ETO.F)O@2+CE"

Dodawanie zmiennej do siebie samej


Jedn z operacji dozwolon w PHP, ktra moe wprawi w zakopotanie matematykw,
jest:
O62GO62TO?.E

Nie oznacza to, e .&0 jest rwna .&0 8 ."1=, z czego wynika, e ."1= jest
rwny @. Znak rwnoci w tym przypadku jest operatorem przypisania, a wyraenie to
oznacza, e do zmiennej .&0 jest przypisywana STARA warto .&0 powikszona
o warto zmiennej ."1=. Ponisza linia
O62GO62T'

powoduje powikszenie o jeden wartoci zmiennej .&0. Istnieje rwnie skrcony zapis
operacji zwikszenia o jeden.
O62TT

Efekt dziaania tej linii jest identyczny jak poprzedniej. Innym skrconym operatorem
jest:
O62TG&

Mona nawet wykona nastpujc operacj:


O62TGO62

Wyprbuj j i sprawd, jaki jest wynik tego wyraenia.

58

C:\Andrzej\PDF\PHP4. Od podstaw\r02.doc

Rozdzia 2. n Pisanie programw w PHP

59

W PHP istnieje wicej operatorw matematycznych oprcz tych, ktre opisalimy, na


przykad istnieje zestaw funkcji do wykonywania oblicze trygonometrycznych lub
logarytmicznych. Nie bdziemy zajmowa si nimi szczegowo. Pen list funkcji
matematycznych znajdziesz w dodatku B. W kolejnych rozdziaach bdziemy zajmowa
si operatorami porwnania, logicznymi i bitowymi ich stosowanie wymaga
znajomoci funkcji, ktre musimy jeszcze pozna. Na razie znamy wystarczajc ilo
operatorw.

Priorytety
Proste operacje matematyczne rzdz si tymi samymi zasadami kolejnoci wykonywania
dziaa, jakich uywamy w matematyce. Ponisze wyraenie moe da rne wyniki
w zalenoci od kolejnoci wykonywania operacji.
O62G4T#>9

Jeeli obliczymy je w takiej kolejnoci, w jakiej jest zapisane, otrzymamy wynik 48.
Jednak, stosujc matematyczn kolejno wykonywania operacji, w ktrej mnoenie
wykonywane jest przed dodawaniem, otrzymasz 23. Jasne jest, e musisz mie dostp do
metody pozwalajcej okreli kolejno wykonywania operacji.
Tak jak w matematyce, PHP uywa nawiasw do wymuszenia kolejnoci wykonywania
operacji. Jeeli chcesz si upewni, e w ostatnim przykadzie dodawanie bdzie
wykonane przed mnoeniem, musisz doda nawiasy:
O62G4T#>9

Zajmiemy si teraz przykadem, w ktrym uyjemy kilku operatorw i po wykonaniu


oblicze wywietlimy wynik na stronie WWW. W tym przykadzie na wejciu mamy
wynagrodzenie brutto i liczymy kwot po odjciu 20% podatku. Po odjciu podatku,
odejmujemy 3% na fundusz emerytalny i wywietlamy na tej samej stronie kocow
pac netto oraz kwot przed potrceniem funduszu emerytalnego.

Typy numeryczne
1. Otwrz edytor i wpisz nastpujcy kod strony:




O6.-G'4$$$
OBCG&$
O/+5 +G#
OD-/+5 +J+GO6.-)O6.-'$$>OBC
O*D-/+5 +J+GOD-/+5 +J+)
OD-/+5 +J+'$$>O/+5 +
/- -L+ +D2+25 -.+=OD-/+5 +J+C
/-L+ 2+D2+25 -.+=O*D-/+5 +J+




C:\Andrzej\PDF\PHP4. Od podstaw\r02.doc

59

60

PHP 4. Od podstaw


2. Zapisz jako calculation.php.


3. Otwrz stron w przegldarce. Powiniene otrzyma nastpujcy wynik.
Rysunek 2.7.

Jak to dziaa?
Kod jest dosy prosty. W pierwszej linii tworzymy zmienn z pensj i ustawiamy j na
F@@@:
O6.-G'4$$$

W drugiej linii tworzymy zmienn .G  i nadajemy jej warto >@:
OBCG&$

W trzeciej linii tworzymy zmienn .73 7 i ustawiamy j na E:


O/+5 +G#

Teraz jestemy gotowi do przeprowadzenia oblicze. Aby obliczy ilo otrzymywanych


pienidzy, musimy wyliczy, ile wynosi 20% podatku. Realizujemy to przez podzielenie
zmiennej .&1)5 przez 100 i pomnoenie wyniku przez 20. Daje to w wyniku nasze 20%,
ktre musimy odj od wartoci pocztkowej.
Aby upewni si, e 20% bdzie obliczone wczeniej, otoczymy te obliczenia nawiasami.
Teraz moemy odj je od bazowej kwoty i przypisa wynik do zmiennej .,6)73 7
%7.
OD-/+5 +J+GO6.-)O6.-'$$>OBC

Kolejnym krokiem jest obliczenie 3% z wartoci po odjciu podatku, przechowywanej


w zmiennej .,6)73 7%7. Wykorzystamy do tego dokadnie te same operacje, co
przed chwil, ale skorzystamy z innych zmiennych. Tym razem, aby uzyska 3%
podzielimy kwot bez podatku przez 100 i pomnoymy przez 3. Teraz odejmiemy wynik od

60

C:\Andrzej\PDF\PHP4. Od podstaw\r02.doc

Rozdzia 2. n Pisanie programw w PHP

61

wartoci po odjciu podatku (.,6)73 7%7) i zapiszemy w zmiennej


.!6)73 7%7.
O*D-/+5 +J+GOD-/+5 +J+)
OD-/+5 +J+'$$>O/+5 +

Po obliczeniu obu kwot moemy wywietli je na ekranie. Ponisze dwie linie


wywietlaj tekst )A )H7  7 60703A )5175 , po ktrym nastpuje
warto zmiennej .,6)73 7%7. Zauwa, e w funkcji 
umiecilimy
znacznik HTML. Bardzo atwo jest zapomnie, e PHP generuje HTML, wic
pamitajmy, aby w tekcie zamieszcza znaczniki HTML wymuszajce now lini,
zamiast jedynie znakw koca linii " lub " I jest to bardzo czsto stosowana
sztuczka. Znacznik przejcia do nowej linii ,  jest interpretowany tak samo, jak w
zwykej stronie HTML i przenosi wywietlanie drugiego wyniku do nastpnej linii.
/- -L+ +D2+25 -.+=OD-/+5 +J+C
/-L+ 2+D2+25 -.+=O*D-/+5 +J+

Naley rwnie pamita o umieszczaniu rednikw na kocu kadej linii. Bez nich
program spowoduje wygenerowanie komunikatu bdu.

Stae
Do tej pory zajmowalimy si obiektami, ktre moglimy zmieni po przypisaniu wartoci.
W poprzednich przykadach utworzylimy zmienn .!0) zainicjowan wartoci
11 &23) , ktra moga by zmieniana w dowolnym momencie, na przykad
na ')7<1* 11 .
O*2-G .. 6F5-
O*2-
O*2-G-+.A ..
O*2-

Jeeli umiecisz powysze linie na stronie WWW, to zobaczysz, e funkcje 


dadz
w wyniku dwa rne napisy, jeden za drugim, w kolejnoci zmiany wartoci zmiennej.
11 &23)
')7<1* 11

Co zrobi, jeeli nie chcemy, aby moliwa bya zmiana wartoci? Niektre wartoci nie
wymagaj modyfikacji.
O-2-:- + G$
O +K ..5 G%. 
O/ -"5 /- +G3- 5 ++

Moesz chcie rwnie zdefiniowa wartoci, ktre nie s bezwzgldnie niezmienne, ale
nie chcemy ich zmienia.
O8.2E + -2 +K0G;.5

C:\Andrzej\PDF\PHP4. Od podstaw\r02.doc

61

62

PHP 4. Od podstaw
W tym przypadku nie chcesz, aby kto inny zmienia wartoci w kodzie, powodujc
powstawanie bdw. PHP posiada specjalne udogodnienie, ktre pozwala na tworzenie
identyfikatorw, ktrych wartoci nie mog by zmieniane. Identyfikatory te nazywaj
si staymi. Pozwalaj tworzy zmienne i przypisywa do nich wartoci, ktrych nie
mona zmieni. Sposb tworzenia staych jest nieco inny od normalnego tworzenia
zmiennych.

Sowo kluczowe define


Do definicji staych potrzebne jest specjalne sowo kluczowe 6 7. Nie s one
rwnie poprzedzane znakiem dolara. W celu utworzenia staej dla zmiennej
)0)J)A7 , musimy uy 6 7 w sposb pokazany poniej.
D +;/;C*8C*:**C:*KJ*,$

Przyjte jest, aby nazwy staych zapisywane byy wielkimi literami. Pierwsza warto
jest nazw staej, natomiast druga, wartoci staej. Aby utworzy stae zawierajce
wartoci tekstowe, naley umieci warto staej w cudzysowach.
D + :J;KKJ;/ ;36?J,%. 
D +/J;C 6:
/C;:
;K,3- 5 ++

Stae mog by uywane w identyczny sposb jak zmienne. Moemy wic wywietli
jej warto na stronie WWW za pomoc funkcji 
.
 U+ .N  !5< :J;KKJ;/ ;36?J

Moemy dodawa stae do tekstu, uywajc operatora zczenia. Jednak istnieje jedna
rnica wynikajca z tego, e stae nie s poprzedzone znakiem dolara. PHP nie moe
odrni ich od zwykego tekstu w procesie zamiany nazw zmiennych na ich wartoci.
 U+ .N  !5 :J;KKJ;/ ;36?J

Powysza linia spowoduje wywietlenie napisu A K 7 1L  3 J%$


$%#M#&"% . Aby zapewni prawidowe wywietlanie wartoci zmiennych, musisz
upewni si, e nazwa staej zawsze wystpuje poza cudzysowami.
PHP posiada rwnie kilka wbudowanych staych uywanych do odczytania niektrych
danych, na przykad systemu operacyjnego, na jakim dziaa PHP lub wersji PHP i tak:
//P6

zwrci nazw systemu operacyjnego, na jakim dziaa serwer.

Inicjalizacja
Kady, kto zna inne jzyki programowania poza PHP, powinien w tym miejscu poczu
si nieco zdezorientowany. Omwilimy ju przecie zmienne, a w wikszoci jzykw
programowania, w przypadku zmiennych, na pocztku przeprowadza si proces zwany

62

C:\Andrzej\PDF\PHP4. Od podstaw\r02.doc

Rozdzia 2. n Pisanie programw w PHP

63

deklaracj lub inicjalizacj. Proces jest podobny w wielu jzykach programowania,


takich jak Java lub Visual Basic. Musisz w nich zadeklarowa (zainicjowa) zmienn
przed jej uyciem. Deklaracja lub inicjalizacja polega na tym, e zanim odwoasz si do
zmiennej, musisz zadeklarowa ch jej uycia, na przykad w jzyku Visual Basic robi
si to przy pomocy sowa  :
+": ++
+": ++G?  Q

Powyszy kod nie jest kodem PHP i b*dzie dziaa jedynie w Visual Basic.

W PHP nie musimy tego robi. Nie jest to wymagane, bo w rzeczywistoci pierwsze
uycie zmiennej powoduje jej automatyczne utworzenie.
O+": ++G?  Q

Istnieje jednak zaleta inicjalizacji, ktrej w PHP czasami brakuje. Wspominalimy


wczeniej, e kada zmienna ma typ danych nadany automatycznie przez PHP w czasie
przypisywania. W innych jzykach programowania, w trakcie deklaracji zmiennej,
podajemy zwykle, jakiego typu dane przechowywane bd w tej zmiennej, na przykad
w Visual Basic.
+": ++56- +
+": ++G?  Q

Powyszy kod nie jest kodem PHP i b*dzie dziaa jedynie w Visual Basic.

W PHP nie mona wykona takiej operacji. Moe to prowadzi czasami do problemw
co bdzie, jeeli PHP nada zmiennej typ danych, ktrego nie chcesz? Co stanie si,
jeeli bdziesz chcia zmieni typ danych w trakcie oblicze? Na przykad moesz
pobiera od uytkownika jakie dane w rodzaju marki i wielkoci silnika jego
samochodu, zamy, e jest to Volkswagen Golf 2.0CL. Powinny by one traktowane
jak tekst. Nastpnie chcemy wyci z tego napisu wielko silnika i uy jej jako liczby
w obliczeniach matematycznych. Moesz wymyli wiele takich przypadkw.
W podobnych sytuacjach musisz umie konwertowa typy danych zmiennej.

Konwersje
PHP posiada spory zestaw wbudowanych funkcji pozwalajcych na konwersje typw
danych oraz funkcji, ktre pozwalaj zorientowa si, jaki typ zosta nadany zmiennej.
Tak naprawd PHP oszczdza wiele pracy, poniewa wikszo niezbdnych konwersji
przeprowadza za Ciebie. Jest to kolejne miejsce, gdzie PHP rni si cakowicie od
wikszoci jzykw programowania, ktre zwykle pozwalaj na przeprowadzanie operacji
jedynie na zmiennych o tych samych typach. W PHP moesz wykona nastpujc
operacj:
O;+ +G&<$

C:\Andrzej\PDF\PHP4. Od podstaw\r02.doc

63

64

PHP 4. Od podstaw
OBCG#
OB/ GO;+ +>OBC

Nie zmienia to zawartoci adnej ze zmiennych. Aby przekona si, e wszystko jest
w porzdku, uruchom ten przykad.

Niejawne konwersje
1. Otwrz edytor i wpisz nastpujcy kod:




O;+ +G&<$
OBCG#
OB/ GO;+ +>OBC
5 .+ F=O;+ +C
6F2=OBCC
 - QF2=OB/ 





2. Zapisz go jako convert.php.


3. Otwrz stron w przegldarce.
Rysunek 2.8.

Jak to dziaa?
Jest to przykad bardzo podobny do poprzedniego pokazujcego operacje matematyczne.
W pierwszych trzech liniach tworzone s trzy zmienne. Pierwsza z nich, .7 75 jest
cigiem:
O;+ +G&<$

Druga zmienna, .G  jest liczb:

64

C:\Andrzej\PDF\PHP4. Od podstaw\r02.doc

Rozdzia 2. n Pisanie programw w PHP

65

OBCG#

W trzeciej linii przeprowadzamy nasze obliczenia, mnoc zmienn .7 75 i .G
, a wynik zapisujc do zmiennej .G :
OB/ GO;+ +>OBC

W tym miejscu PHP przekazao informacj: Nie przejmuj si, e w cigu


przechowywanym w .7 75 jest litera L, widz liczb i tej liczby uyj w operacji
mnoenia. Ostatnie trzy linie wywietlaj zawarto zmiennych, aby udowodni, e
zmienne nie ulegy zmianie.
5 .+ F=O;+ +C
6F2=OBCC
 - QF2=OB/ 

Rzutowanie typw
Do tej pory PHP sam przeprowadza konwersje typw, ale gdy chcesz okreli typ
zmiennej w czasie jej tworzenia, rwnie moesz to zrobi. Zrealizujesz to przez
przypisanie do zmiennej wasnej wartoci i okrelenie danego typu poprzez podanie
jego nazwy w nawiasach przed drugim wystpieniem nazwy zmiennej. Operacja taka
nazywana jest rzutowaniem.
OK": ++G'#
OK": ++G5- +OK": ++

W naszym kodzie przypisujemy do zmiennej warto numeryczn. Nastpnie w drugiej


linii zamieniamy warto numeryczn na cig. Jeeli chcesz, moesz rwnie
skonwertowa zmienn z powrotem na liczb.
OK": ++G'#
OK": ++G5- +OK": ++
OK": ++G +-OK": ++

gettype i settype
Wspominalimy o funkcjach PHP pozwalajcych sprawdzi biecy typ danych zmiennej.
Funkcja taka nazywa si 5
.
Jako argument funkcji podajemy nazw zmiennej do sprawdzenia.
O+2-

Aby wywietli typ zmiennej, przekaemy wynik dziaania tej funkcji do funkcji 
.
O+2-G4
O+2-

Spowoduje to wywietlenie na stronie WWW napisu %7). Istnieje rwnie


analogiczna funkcja PHP o nazwie 35
, ktra podobnie do rzutowania typw

C:\Andrzej\PDF\PHP4. Od podstaw\r02.doc

65

66

PHP 4. Od podstaw
pozwala na okrelenie typu zmiennej. Wymaga ona dwch argumentw: zmiennej,
ktrej typ ustawiamy i nazwy typu, na ktry zmieniamy zmienn. Dziaa ona
nastpujco:
O+2-G'$
5O+2-,5- +

Aby pokaza, e typ zmiennej uleg zmianie, moesz wywietli na ekranie warto
zwracan przez 5
.
O+2-

Wczeniej linia ta wywietlaa %7), teraz wywietla &) 7.

isset, unset i empty


PHP posiada wicej funkcji uywanych do obsugi zmiennych. Jedn z nich jest funkcja
33
, ktra pozwala sprawdzi, czy zmienna o podanej nazwie zostaa utworzona.
Jako argument przekazujemy nazw sprawdzanej zmiennej. Jeeli uyjesz tej funkcji jako
argumentu funkcji 
, to w przypadku gdy zmienna istnieje, wywietlona zostanie
liczba 1. W przeciwnym razie nie zostanie zwrcona adna warto, nawet zero.
 55O+2-

Drug jest funkcja 073


, ktra usuwa zmienn i zwalnia pami przez ni uywan.
Posiada rwnie jeden argument, nazw zmiennej:
2+5O+2-

Przed jej uyciem upewnij si, czy wiesz co robisz, poniewa funkcja ta usuwa zarwno
nazw zmiennej, jak i jej warto.
Ostatni z trzech przedstawianych funkcji jest 5
, logiczna odwrotno funkcji
33
. Uywa si jej identycznie jak 33
. Zwraca 1, jeeli zmienna nie istnieje lub
ma warto 0 albo "" (pusty cig). Funkcja nie zwraca adnej wartoci, jeeli zmienna
istnieje.
O+2-

Doszlimy prawie do koca naszego wprowadzenia do zmiennych. Istnieje jeszcze jeden


rodzaj zmiennych, o ktrym nie mielimy okazji opowiedzie.

Zmienne rodowiska
Zmienne rodowiska (nazywane rwnie zmiennymi PHP) to takie, ktrych warto
ustawiana jest poza skryptem PHP, ale s w nim dostpne. Dostarczaj zwykle danych
na temat komunikacji klient-serwer, ktr opisywalimy we wczeniejszej czci tego
rozdziau.

66

C:\Andrzej\PDF\PHP4. Od podstaw\r02.doc

Rozdzia 2. n Pisanie programw w PHP

67

Mog to by dane na temat dania lub odpowiedzi HTTP. Maj taki sam format, jak
zmienne tworzone przez Ciebie, zawieraj na pocztku znak dolara. Jedyn rnic jest
to, e s utworzone przed rozpoczciem wykonywania skryptu bez adnej interwencji ze
strony uytkownika. Moesz obejrze te zmienne w wyniku dziaania funkcji  76
,
uytej w pierwszym rozdziale.
Moesz rwnie odwoywa si do nich za pomoc, na przykad funkcji 
:
O/P?@J;P **

Linia ta wywietli dane wszystkich uywanych cookie. Inn uyteczn zmienn


rodowiska jest .'4& 4!M$, ktra zawiera typ przegldarki uytkownika.
O/P86;CP*3;K

Moesz uy jej w swoich programach w celu dostosowania wynikowych stron do


specyficznej przegldarki lub grupy przegldarek. Kolejnymi uytecznymi zmiennymi
s: .'4I #<, ktra podaje adres e-mail uytkownika wysyajcego danie i
.'4!"", ktra zawiera list rnych typw mediw, przyjmowanych przez
przegldark uytkownika.
Rnic pomidzy zmiennymi rodowiska a staymi zdefiniowanymi przez PHP jest to,
e uytkownik moe zmienia warto zmiennych. Jednak istniej one raczej dla celw
informacyjnych i nie powinno si ich zmienia. W tej ksice bdziemy je tak wanie
traktowa.

W tym rozdziale omwilimy sporo tematw podstawowych, wic aby umoliwi


wszystkim zrozumienie materiau, staralimy si tumaczy poruszane zagadnienia moliwie
jasno i zwile. Rozpoczlimy rozdzia od wprowadzajcego przykadu PHP
pokazujcego, e strony PHP s poczeniem tekstu, znacznikw HTML i skryptw PHP.
Skrypty PHP s wysyane do serwera w celu przetworzenia.
W skrcie opisalimy proces interpretacji skryptw. Maszyna skryptowa PHP zwraca
stron skadajc si z czystego HTML, wic przegldarka nie ma kopotw z jej
zrozumieniem. Zapoznalimy si rwnie z interakcj pomidzy serwerem WWW a
przegldark i sposobem przesyania komunikatw HTTP.
Pokazalimy, w jaki sposb oznacza si skrypty PHP na stronie i krtko opisalimy proces
buforowania stron. Rozpoczlimy programowanie wprowadzeniem zmiennych metody,
ktrej PHP uywa do przechowywaniu danych (tak jak wikszo jzykw programowania).
Wymienilimy rne typy danych stosowanych do przechowywania danych i opisalimy
dokadniej przechowywanie danych numerycznych i znakowych.
Zajlimy si procesem konwersji zmiennych pomidzy typami oraz przeprowadzilimy
wprowadzenie do staych, ktre s zmiennymi z niezmienn wartoci. Zapoznalimy

C:\Andrzej\PDF\PHP4. Od podstaw\r02.doc

67

68

PHP 4. Od podstaw
si z niektrymi narzdziami PHP pozwalajcymi wykona podstawowe manipulacje
tymi informacjami. Na koniec krtko opisalimy zmienne rodowiska.

68

C:\Andrzej\PDF\PHP4. Od podstaw\r02.doc

You might also like