You are on page 1of 22

IDZ DO

PRZYKADOWY ROZDZIA
SPIS TRECI

KATALOG KSIEK
KATALOG ONLINE
ZAMW DRUKOWANY KATALOG

PHP. Tworzenie stron


WWW. Szybki start
Autor: Larry Ullman
Tumaczenie: Pawe Gonera
ISBN: 83-7361-530-X
Tytu oryginau: PHP for the World Wide Web
Visual QuickStart Guide, 2nd Edition
Format: B5, stron: 456

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

Byskawiczny kurs tworzenia dynamicznych


stron WWW z wykorzystaniem jzyka PHP
Jzyk PHP cieszy si zasuon popularnoci wrd twrcw stron WWW. Z mao
znanego produktu open source szybko sta si cenionym narzdziem stosowanym
do tworzenia dynamicznych witryn sieciowych opartych na bazach danych. PHP jest
wykorzystywany w portalach, sklepach internetowych, forach dyskusyjnych i wielu
innych witrynach z dynamicznie generowan zawartoci. Jeli jzyk HTML i pisane
w nim statyczne strony HTML nie odpowiadaj ju Twoim wymaganiom, zrb nastpny
krok poznaj jzyk PHP.
PHP. Tworzenie stron WWW. Szybki start to idealny podrcznik dla Ciebie. Dowiesz
si z niego wszystkiego, co jest niezbdne do wykorzystywania jzyka PHP w pracy
webmastera. W prostych wiczeniach poznasz podstawy jzyka PHP i nauczysz si
stosowa go do rnych zada zwizanych z tworzeniem stron WWW. Wiadomoci
zawarte w ksice dotycz zarwno wersji 4, jak i wchodzcej wanie na rynek wersji 5.
Podstawy skadni jzyka PHP
Osadzanie kodu PHP w kodzie HTML
Zmienne i ich typy
Obsuga formularzy HTML
Instrukcje sterujce dziaaniem programu
Tablice
Obsuga sesji i plikw cookie
Praca z systemem plikw
Korzystanie z baz danych
Stosowanie wyrae regularnych

Spis treci

Spis treci
Wstp
9
Czym jest PHP?.........................................................................................10
Dlaczego korzystamy z PHP? ...................................................................12
Jak dziaa PHP?.........................................................................................14
Czego bdziesz potrzebowa? ...................................................................16
O ksice ...................................................................................................18
Rozpoczynamy prac z PHP
21
Podstawy skadni XHTML........................................................................22
Podstawy skadni PHP ..............................................................................26
Testowanie skryptu ...................................................................................29
Wysyanie tekstu do przegldarki .............................................................32
Wysyanie kodu HTML do przegldarki...................................................36
Uycie odstpw w PHP oraz HTML.......................................................38
Dodawanie komentarzy do skryptw ........................................................41

Rozdzia 2.

Zmienne
45
Czym s zmienne?.....................................................................................46
Skadnia zmiennych ..................................................................................50
Typy zmiennych ........................................................................................52
Przypisywanie wartoci do zmiennych .....................................................57
Apostrofy i cudzysowy.............................................................................60

Rozdzia 3.

Formularze HTML i PHP


63
Tworzenie prostego formularza.................................................................64
Uycie GET oraz POST ............................................................................70
Odbieranie danych z formularza w PHP ...................................................72
Wywietlanie bdw ................................................................................75
Raportowanie bdw................................................................................78
Problem z register_globals ........................................................................80
Rczne wysyanie danych do strony .........................................................82

Spis treci

Rozdzia 1.

Spis treci

Spis treci

Rozdzia 4.

Uycie liczb
87
Tworzenie formularza ...............................................................................88
Dodawanie, odejmowanie, mnoenie i dzielenie ......................................91
Formatowanie liczb ...................................................................................96
Uycie wielu operatorw...........................................................................98
Inkrementacja i dekrementacja liczb.......................................................100
Tworzenie liczb losowych.......................................................................102

Rozdzia 5.

Uycie cigw
105
Tworzenie formularza HTML .................................................................106
czenie cigw (konkatenacja) .............................................................109
Obsuga parametru magic_quotes ...........................................................113
HTML oraz PHP .....................................................................................116
Kodowanie i dekodowanie cigw..........................................................120
Zamiana fragmentw cigu .....................................................................125
Inne funkcje operujce na cigach ..........................................................128

Rozdzia 6.

Struktury sterujce
133
Tworzenie formularza HTML .................................................................134
Instrukcja if .............................................................................................139
Uycie klauzuli else ................................................................................145
Wicej na temat operatorw....................................................................148
Uycie elseif............................................................................................158
Instrukcja warunkowa switch..................................................................163
Ptla for ...................................................................................................169

Rozdzia 7.

Uycie tablic
175
Czym s tablice?......................................................................................176
Tworzenie tablicy ....................................................................................178
Dodawanie elementw do tablicy ...........................................................182
Odwoywanie si do elementw tablicy..................................................185
Tworzenie tablic wielowymiarowych .....................................................189
Sortowanie tablic.....................................................................................194
Przeksztacenia midzy cigami i tablicami............................................199
Tworzenie tablicy z formularza...............................................................204

Formularze HTML i PHP

Formularze HTML i PHP

Formularze HTML i PHP

W rozdziale tym opiszemy podstawy tworzenia


formularzy HTML oraz sposoby przesyania
danych do skryptu PHP. Jednoczenie rozdzia
wprowadza kilka kluczowych mechanizmw
prawdziwego programowania w PHP w tym
sposoby uruchamiania skryptw oraz obsug
bdw.

63

Formularze HTML i PHP

W poprzednim rozdziale przedstawilimy krtkie


wprowadzenie do zmiennych. Cho bardzo czsto
bdziemy tworzyli wasne zmienne, to jednak
najczciej bdziemy je wykorzystywali
w poczeniu z formularzami HTML. Formularze,
jak na pewno si ju przekonae, s podstawowym
mechanizmem we wspczesnych stronach
WWW, pozwalajcym zrealizowa takie funkcje,
jak: rejestracja, logowanie, przeszukiwanie oraz
obsuga sklepw internetowych. Korzyci pynce
z uywania formularzy wida ju w najprostszych
witrynach WWW. czc je z kodem PHP,
moemy niezwykle atwo odczytywa
i obsugiwa generowane przez nie dane.

Rozdzia 3.

Tworzenie prostego
formularza

Tworzenie prostego formularza

Jako przykad formularza HTML utworzymy


tutaj stron informacji zwrotnej, ktra pobiera
powitanie uytkownika, jego imi, adres e-mail,
odpowied oraz komentarz. Bdziemy musieli
utworzy odrbne pola dla wszystkich
wymienionych tutaj danych. Na pocztek jednak
wrcimy do tematu XHTML.
Jak wspomnielimy w pierwszym rozdziale
(w ktrym poinformowalimy, e w ksice tej
bdziemy korzysta z XHTML), jzyk ten ma
kilka zasad, ktre powoduj, e ma on wyranie
inn skadni ni HTML. Przypominamy, e kod
musi by zapisany maymi literami, a kady
atrybut znacznika naley uj w cudzysowy.
Dodatkowo, kady znacznik musi by zamknity;
te, ktre nie maj formalnego znacznika
zamykajcego, jak na przykad , s
zamykane przez dodanie spacji i ukonika na
jego kocu. Dlatego w HTML mona napisa:

 



Ale w XHTML to samo wyraenie musi przyj


posta:

 
!
"

Powysze wyjanienie pozwoli unikn


pomyek w przypadku naszej strony
wykorzystujcej standard XHTML.
Aby rozpocz tworzenie
podstawowego formularza HTML:
1. Otwrz edytor tekstu i rozpocznij nowy

dokument (listing 3.1):


#$%& ' ()*&+"",-&""$$ . *
/01("" 
'2""33303-014"5"' (/"$$"
' (/+1(0
' ( (
'2""33303-014"/666"' (
'
 '+78
91+
91
"' (:
9'
1+;;<6+="
(>1 (!!1?"(
"'

64

Listing 3.1. Kady formularz HTML rozpoczyna


si i koczy znacznikami <form></form>. Gdy
kodujesz formularze rcznie uwaaj, aby nie
zapomnie adnego z tych znacznikw. Pamitaj
rwnie o przekierowaniu formularza do waciwego
skryptu obsugi za pomoc atrybutu action
/#$%& ' ()*&+"",-&""$$ . *
/01("" 
='2""33303-014"5"' (/"$$"
' (/+1(0
-' ( (
'2""33303-014"/666"' (
'
< '+78
91+
91
"' (:
9'
1+;;<6+="
@(>1 (!!1?"(
A"'
;B1
61!C3DEF1 (!GB
!H!E 31I342B"
/

 

 

/=

/
/<#++*4-0/+10' (++
/@"B1
/A"' (

Formularze HTML i PHP


B1
1!C3DEF1 (!GB
!H!E 31I342B"

2. Dodaj otwierajcy i zamykajcy znacznik



:
F1 91
1B(4JF1 (!0'
"F1 

Znaczniki 
 okrelaj pocztek i koniec
formularza. Kady element tego formularza
musi by zdefiniowany pomidzy tymi
dwoma wierszami. Atrybut   wskazuje
serwerowi stron (lub skrypt), ktra otrzyma
dane wprowadzone do formularza, dlatego
jest on jednym z najwaniejszych elementw.
3. Zakocz stron, dodajc znaczniki
#++*4-0/+10' (++
"B1
"' (

4. Zapisz stron pod nazw   .

Wskazwki
 Zwr uwag, e uylimy tutaj rozszerzenia

dokumentu waciwego dla HTML (.html),


poniewa jest to standardowa strona HTML
(a nie strona PHP). Bez problemu mona
zastosowa rozszerzenie .php, nawet
pomimo to, e nie ma w tym dokumencie
kodu PHP (pamitaj, e na stronie PHP
wszystkie elementy poza znacznikami
 i  s traktowane jako kod HTML).
 Upewnij si, e atrybut   prawidowo

wskazuje na istniejcy na serwerze plik,


poniewa w przeciwnym wypadku formularz
nie zostanie waciwie przetworzony.
W naszym przykadzie okrelilimy,
e formularz ma by przesany do strony
obsluga_formularz.php, ktra jest umieszczona
w tym samym katalogu, co strona opinia.html.

65

Tworzenie prostego formularza

zamykajce dokument.

Rozdzia 3.
Po tym omwieniu podstawowych znacznikw
formularzy dodajmy do niego rne elementy
(pola tekstowe przeznaczone na nazw
uytkownika, adres e-mail itd.).

Rysunek 3.1. Przyciski opcji tytuu

Aby utworzy elementy formularza:


1. Po wierszu z otwierajcym znacznikiem

(wiersz 11.), ale przed zamykajcym
znacznikiem 
nacinij Enter,

aby utworzy nowy wiersz.


2. Dodaj dwa przyciski opcji przeznaczone na

tytu osoby (listing 3.2):

Tworzenie prostego formularza


1 
(
8(
"

1 
(
8(
"
B"

Ten kod HTML powoduje utworzenie dwch


przyciskw opcji (w postaci wybieranych
keczek, rysunek 3.1). Poniewa oba
przyciski posiadaj tak sam warto
atrybutu  , moe by zaznaczony tylko
jeden z nich. Zgodnie z zasadami XHTML,
kod jest zapisywany maymi literami (poza
wartociami), a na kocu kadego znacznika
 dodana jest spacja oraz ukonik
domykajcy znacznik.
Aby uzyska odpowiednie rozmieszczenie
formularza, na kocu dodalimy znacznik

.
3. Dodaj pola tekstowe przeznaczone na nazw

uytkownika oraz adres e-mail:


 C2
 
 
!
="
B"
+ (2

 
 (!
="
B"

Naley stosowa spjn konwencj


nazewnictwa elementw formularza
i nadawa kademu elementowi logiczn
i opisow nazw. Przy nadawaniu nazw polom
formularza mona stosowa litery, cyfry
oraz znaki podkrelenia (). Zamieszczone
tutaj pola  powoduj utworzenie
w przegldarce pl tekstowych (rysunek 3.2).
66

Rysunek 3.2. Znaczniki text powoduj utworzenie


takich pl tekstowych

Formularze HTML i PHP


Listing 3.2. Do formularza mona doda dowoln kombinacj elementw wprowadzania danych naley si
tylko upewni, e znajduj si one wewntrz znacznikw <form>, poniewa inaczej nie poka si na stronie

Tworzenie prostego formularza

/#$%& ' ()*&+"",-&""$$ . */01("" 


='2""33303-014"5"' (/"$$"' (/+1(0
-' ( (
'2""33303-014"/666"' (
'
< '+78
91+91
"' (:9'
1+;;<6+="
@(>1 (!!1?"(
A"'
;B1
61!C3DEF1 (!GB!H!E 31I342B"
/
//F1 91
1B(4JF1 (!0'
/=
  

    

   
!  

    

   
"
#$ %& 

 
'
      ()
*
+,- & 

 
'
     ()
.
()/ &
   
(
   01 
23
01 

 
((
   14523
145
 
(
    23
  
 
(!

("
(#6
&
'
  5
1   )
'

(*
(+ 

 
  1 3  70 3 %
=6
-"F1 
-/
-=#++*4-0=+10' (++
--"B1
-"' (

67

Rozdzia 3.
4. Dodaj list wyboru opinii:
%2(9 
1
118(
K31I
K30"11
118(
31!?H1I
31!?H0"11
118(
1I0
"11
"(9
B"

Tworzenie prostego formularza

Znaczniki te powoduj dodanie rozwijanej


listy wyboru, jednego z najpopularniejszych
typw pl formularza (rysunek 3.3).
Kada z opcji umieszczonych pomidzy
znacznikami   moe zosta wybrana
przez uytkownika.
5. Dodaj wielowierszowe pole tekstowe,

w ktrym mona napisa wasny komentarz:


L1 !2 
H1 !
13
-91(
-"
B"

Wielowierszowe pole tekstowe (rysunek 3.4)


udostpnia uytkownikowi wicej miejsca na
komentarz ni zwyke pole tekstowe. Jednak
pole tekstowe pozwala na ograniczenie liczby
znakw, ktre moe wprowadzi uytkownik,
natomiast nie da si tego zrobi w przypadku
wielowierszowego pola tekstowego
(bez uycia dodatkowego kodu JavaScript).
W czasie tworzenia formularza naley
wybiera typ pola tekstowego najbardziej
odpowiedni dla danych, jakie bdziesz
chcia uzyska od uytkownika.

68

Rysunek 3.3. Znacznik select pozwala utworzy


list rozwijan

Rysunek 3.4. Znacznik textarea pozwala utworzy


due pole tekstowe

Formularze HTML i PHP


6. Dodaj przycisk wysyania danych:
Rysunek 3.5. Kady formularz musi mie przycisk
wysyania danych, ktry moe wyglda inaczej
w rnych przegldarkach


B  
3(I
8(
,K(I1C"

Warto atrybutu   w elemencie typu


  jest wywietlana na przycisku
w przegldarce WWW (rysunek 3.5).
Mona rwnie tutaj zastosowa
na przykad sowo Dalej.
7. Zapisz skrypt i przelij go na serwer

Wskazwka
 W tym przykadzie utworzye formularz

przez rczne kodowanie w HTML, ale jeeli


wolisz, to samo mona zrobi korzystajc
z aplikacji do projektowania stron WWW
(na przykad w programach Macromedia
Dreamweaver lub Adobe GoLive).

69

Tworzenie prostego formularza

Rysunek 3.6. Jeeli prawidowo wprowadzie kod


formularza, powinien on wyglda w przegldarce
w nastpujcy sposb

(lub zapisz w odpowiednim katalogu swojego


komputera z zainstalowanym kodem PHP)
i wywietl go w przegldarce (rysunek 3.6).
Poniewa jest to strona HTML, a nie skrypt
PHP, moesz obejrze go w przegldarce
bezporednio z Twojego komputera.

Rozdzia 3.

Uycie GET oraz POST


Dowiadczeni autorzy stron HTML zauwa,
e w formularzu opinii brakuje jednego elementu:
otwierajcy znacznik 
 nie ma atrybutu
 . Atrybut ten informuje serwer, w jaki
sposb przesa dane do skryptu obsugi.

Uycie GET oraz POST

Atrybut   moe przyjmowa dwie wartoci:


 oraz  . Wielu koderw HTML nie
do koca zna rnice midzy tymi wartociami
i ma wtpliwoci, kiedy ich uywa.
W rzeczywistoci dla wikszoci programistw
nie ma to najmniejszego znaczenia (szczeglnie,
gdy zaczynamy dopiero z nich korzysta),
poniewa obie metody pozwalaj zazwyczaj
na osignicie oczekiwanych wynikw.
Rnica midzy metodami  oraz   polega
na sposobie przesyania danych z formularza do
obsugujcego go skryptu. Metoda  przesya
wszystkie zebrane informacje jako cz adresu
URL. Metoda   przesya dane w sposb
niewidoczny dla uytkownika. Na przykad,
jeeli uyjesz metody  w czasie przesyania
danych formularza, wynikowy adres URL
bdzie mia nastpujc posta:
'2""33303091 "'"1B(4JF1 (!
0'M(
N!3
*O=(( 000

Tymczasem jeli zastosujemy metod  ,


kocowy uytkownik zobaczy adres w postaci
skrconej:
'2""33303091 "'"
1B(4JF1 (!0'

Wybierajc jedn z tych metod, naley pamita


o nastpujcych trzech zasadach:
u W przypadku metody  mona przesa

tylko ograniczon ilo informacji.


u Metoda  wysya dane do skryptu obsugi

w sposb jawny. Przykadowo oznacza to,


e haso wprowadzone w formularzu moe
by przeczytane przez kadego, kto patrzy
na przegldark. Warto zauway, e jest to
duym zagroeniem dla bezpieczestwa.
u Strona wygenerowana przez formularz
korzystajcy z metody  moe zosta

zapisana w zakadkach, natomiast nie jest to


moliwe, gdy dane s przesyane metod  .
70

Listing 3.3. Aby dokoczy nasz formularz,


dodajemy atrybut method z wartoci post
/#$%& ' ()*&+"",-&""$$
 . */01("" 
='2""33303-014"5"' (/"$$"
' (/+1(0
-' ( (
'2""33303-014"/666"' (
'
< '+78
91+
91
"' (:9'

1+;;<6+="
@(>1 (!!1?"(
A"'
;B1
61!C3DEF1 (!GB
!H!E 31I342B"
/

 

 

/=
/-
1 
(
8(
"
/
1 
(
8(
"
/<B"
/@ C2
 
 
!
="
/AB"
/; + (2

 
 (!
="
/6B"
=%2(9 
1
=/118(
K31IK30
"11
==118(
31!?H1I
31!?H0"11
=-118(
1I0
"11
="(9
=<B"
=@L1 !2 
H1 !
13
-91(
-"
=AB"
=;
B  
3(I
8(
,K(I1C"
=6
-"F1 
-/
-=#++*4-0-+10' (++
--"B1
-"' (

Formularze HTML i PHP

Rysunek 3.7. Przejrzyj rdo strony HTML,


aby sprawdzi jej poprawno

W tej ksice do obsugi formularzy niemal


wycznie stosujemy metod  , cho
przedstawimy przydatn technik, gdzie metoda
 pozwala zyska dodatkowe moliwoci
dla stron WWW (patrz podrozdzia Rczne
wysyanie danych do strony pod koniec
biecego rozdziau). Dziki kadej z tych
metod mona przesya dane z formularza,
a ostateczny wybr metody powinien zalee
od potrzebnego Ci poziomu zabezpiecze
oraz od tego, czy wynikowa strona powinna by
zapisywana w zakadkach. Nabyte dowiadczenie
pozwoli szybko rozrnia obydwie sytuacje,
a na razie bezpiecznie moesz w wikszoci
przypadkw korzysta z metody  .
Aby doda znacznik method do skryptu:
1. Otwrz plik opinia.html w edytorze tekstu

(listing 3.2).

przegldarce, w jaki sposb ma ona wysa


dane do skryptu odbierajcego.
3. Zapisz skrypt i obejrzyj go ponownie

w twojej przegldarce WWW.


4. Obejrzyj rdo strony, aby upewni si,

e wszystkie potrzebne elementy znajduj


si na swoim miejscu. (rysunek 3.7).
Wskazwka
 W opisie metod  oraz  przy ich

zapisywaniu korzystalimy z wielkich liter.


Jednak w formularzu dla zachowania
zgodnoci z XHTML korzystamy z maych
liter ( ). Nie naley przejmowa si
niespjnoci metoda bdzie
funkcjonowaa prawidowo niezalenie
od wielkoci liter.

71

Uycie GET oraz POST

2. Wewntrz otwierajcego znacznika 



dodaj  !" " (listing 3.3, wiersz 11.).
Atrybut formularza   wskazuje

Rozdzia 3.

Odbieranie danych
z formularza w PHP

Odbieranie danych z formularza w PHP

Po utworzeniu prostego formularza HTML


musimy napisa skrypt pod nazw obsluga_
formularz.php, ktry otrzymuje i przetwarza
dane wygenerowane przez stron opinia.html.
W tym konkretnym przykadzie skrypt PHP
tylko powtarza wartoci wprowadzone przez
uytkownika do formularza. W kolejnych
rozdziaach pokaemy, w jaki sposb mona
zapisa dane w bazie danych lub wysa je
korzystajc z poczty elektronicznej.
Dla wielu Czytelnikw przykad ten bdzie
zaskakujco prosty i utworzony skrypt bdzie
dziaa bez zarzutu. Niektrzy mog jednak
napotka niewielkie problemy spowodowane
znacznymi zmianami w domylnej konfiguracji
PHP. W wielu instalacjach PHP mona
odwoywa si do wartoci z formularza poprzez
zmienn o nazwie takiej samej, jak nazwa
elementu formularza. W omawianym przykadzie
zmiennymi tymi s: #$, # , #  ,
#% 
& oraz #'$(.
Napisalimy powyszy skrypt korzystajc ze
standardowej metody, ktra powinna dziaa
u wikszoci Czytelnikw. Jeeli tak nie bdzie,
to w nastpnym podrozdziale odnajdziesz opisy
alternatywnych technik uruchamiania programw.
Jeeli wic w przypadku tego przykadu
nie bdziesz mg osign oczekiwanych
wynikw, nie musisz si martwi. Nastpne trzy
podrozdziay wszystko wyjani i przy okazji
naucz kilku wartociowych metod.
Aby utworzy skrypt PHP:
1. Otwrz edytor tekstu i utwrz w nim nowy

dokument (listing 3.4):


#$%& ' ()*&+"",-&""$$ . *
/01("" 
'2""33303-014"5"' (/"$$"
' (/+1(0
' ( (
'2""33303-014"/666"' (
'
 '+78
91+
91
"' (:
9'
1+;;<6+="

72

Listing 3.4. Biorc nazw elementu z formularza


HTML oraz dodajc znak dolara ($), tworzymy
zmienne zawierajce wartoci wprowadzone przez
uytkownika w odpowiednim polu
/#$%& ' ()*&+"",-&""$$ . *
/01("" 
=
'2""33303-014"5"' (/"$$"' (/+
1(0
-' ( (
'2""33303-014"/666"' (
'
< '+78
91+
91
"' (:
9'
1+;;<6+="
@(31I1"(
A"'
;B1
.89 
!
/
:
 

3  

(/
3&

;< 1%<- <
 %5

/!
=

=  < %53
5
>
"
5;
 
;  
=    &=5
>
#8
/A"B1
/;"' (

Formularze HTML i PHP


(31I1"(
"'
B1

2. Wstaw otwierajcy znacznik PHP i wpisz

komentarz:
M'""*4-01B(4JF1 (!0'
""11! I!10' (0
""%! I2DG!3CG+ (G1C
1!H1 !0

3. Wywietl informacje o uytkowniku:


P(P G!CHI !
H1 !0B":
!HD!1D!!
P1112PH1 !:

Aby skorzysta z danych, ktre uytkownik


wpisa do pola  &' , odwoujemy si
do zmiennej # &' . To samo dotyczy
wszystkich elementw formularza,
niezalenie od ich typu.
4. Zamknij sekcj PHP i zakocz stron HTML.
M
"B1
"' (

5. Zapisz skrypt pod nazw ) 




&.
6. Przelij skrypt na serwer (lub zapisz

w odpowiednim katalogu swojego


komputera z zainstalowanym PHP),
pamitajc, e trzeba go umieci w tym
samym katalogu, co opinia.html.

73

Odbieranie danych z formularza w PHP

Komentarze do skryptu dodajemy,


aby pomagay zapamita, jakie jest jego
przeznaczenie. Cho w kodzie strony
opinia.html zapisane jest, gdzie s wysyane
dane (poprzez atrybut  ), ten komentarz
wskazuje zaleno odwrotn, tzn. z ktrego
skryptu otrzymujemy dane.

Rozdzia 3.
7. Sprawd skrypt w przegldarce WWW

otwierajc stron opinia.html, a nastpnie


wysyajc dane formularza (rysunki 3.8
oraz 3.9).
Jeeli wartoci zmiennych nie s wywietlane,
gdy uruchomisz skrypt albo nie s wywietlane
i widzisz wiele komunikatw bdw, jest to
zwizane ze wspomnianymi wczeniej
kopotami. Niektrzy mog nic nie zobaczy
(pokae si pusta strona). Dla kadego z tych
przypadkw Czytelnik znajdzie rozwizanie
Rysunek 3.8. Wszystko, co uytkownik wpisze
w trzech nastpnych podrozdziaach.
do formularza HTML, powinno by wywietlone

Odbieranie danych z formularza w PHP

Wskazwki

w przegldarce WWW przez skrypt obsluga_


formularz.php (rysunek 3.9)

 Jeeli chcesz przekaza do skryptu ustalon

wczeniej warto, to moesz skorzysta


z ukrytego elementu formularza. Na przykad,
jeeli do formularza wstawimy wiersz:

' 
J1
8(
10' ("

spowoduje to utworzenie w skrypcie


przetwarzajcym zmiennej # 

posiadajcej warto opinia.html.
 Zwr uwag, e wartoci przyciskw opcji

oraz wybrane pozycje z listy rozwijanej maj


warto atrybutu   wybranego elementu
(na przykad wietnie w licie wyboru).
Taka sama zasada obowizuje dla pl wyboru.
W przypadku pl tekstowych wartoci
zmiennej jest tekst wpisany przez uytkownika.

Rysunek 3.9. Jest to inne zastosowanie instrukcji


print omwionej w rozdziale 1., ale dziki niemu
powstaa nasza pierwsza wygenerowana
dynamicznie strona WWW

 Nawet przycisk przesyania jest wysyany

do strony obsugi w postaci zmiennej.


 Jeeli skrypt obsluga_formularz.php

w wysanych cigach wywietla dodatkowe


ukoniki, zapoznaj si z podrozdziaem
Panowanie nad mechanizmem ) * 
z rozdziau 5. Uycie cigw.
 Powiniene wiedzie, e przedstawiona tutaj

metoda obsugi danych formularza (odwoywanie Rysunek 3.10. Jeeli strona nie wywietla
przesanych informacji, przeczytaj podrozdzia
si do # &' , #$ itd.) nie jest zalecan
metod i moe powodowa naruszenie systemu Problem z register_globals
bezpieczestwa. Ale pomimo to, oczywicie
dziaa ona skutecznie. Wkrtce przedstawimy
lepsz i bardziej bezpieczn metod, ale na
pocztek chcielimy pokaza moliwie proste
rozwizanie.

74

Formularze HTML i PHP

Wywietlanie bdw
Po zainstalowaniu PHP na serwerze WWW
bdzie on dziaa zgodnie z domylnymi
ustawieniami zabezpiecze, sposobu obsugi
danych, wydajnoci itd. Od czasu pierwszego
wydania tej ksiki do domylnej konfiguracji
zostay wprowadzone trzy znaczce zmiany
i wszyscy programici PHP powinni o tym
wiedzie. Pierwsza zmiana dotyczy tego,
kiedy s wywietlane komunikaty bdw.

Jeeli chcesz, eby PHP wywietla bdy,


to powiniene wykona nastpujce operacje:
u Wcz z powrotem parametr  $

(wicej informacji znajdziesz w podrozdziale


Konfigurowanie PHP w dodatku A
Instalacja i konfiguracja).
u Wcz parametr  $


 w samym

skrypcie.
Chocia pierwsza moliwo jest najlepsza dla
osb uczcych si dopiero PHP, nadaje si tylko
dla tych, ktrzy mog administrowa serwerem.
Druga opcja moe by uyta przez kadego,
wystarczy doda do skryptu wiersz:
JQR(J1RG/S:

Funkcja +, pozwala na tymczasow


zmian w skrypcie ustawie pliku
konfiguracyjnego PHP. W tym przykadzie
ustawiamy parametr  $


 na on,
co reprezentuje liczba 1.

75

Wywietlanie bdw

PHP moe by ustawiony w taki sposb, e


bdzie informowa nas w przypadku napotkania
problemw. To, czy faktycznie to zrobi, zaley
od ustawienia parametru  $


 w pliku
konfiguracyjnym PHP (o nazwie php.ini).
W biecej wersji PHP parametr ten jest
domylnie wyczony, wic bdy generowane
przez skrypt powoduj wywietlenie pustej
strony. Moge zobaczy wynik takiego
dziaania w przypadku poprzedniego skryptu.

Rozdzia 3.
Aby wywietla bdy:
1. Otwrz w edytorze plik obsluga_

formularz.php.

2. W pierwszym wierszu kodu PHP (listing 3.5)

wprowad nastpujcy kod:


JQR(J1RG/S:

Powyszy wiersz pozwoli zobaczy


komunikaty o wystpujcych bdach.
Powiniene wpisa ten wiersz jako pierwsz
instrukcj PHP, dziki czemu pozostaa
cz kodu PHP bdzie wykonywana
z nowymi ustawieniami konfiguracji.
3. Zapisz plik pod nazw ) 


&.
4. Wylij plik na serwer WWW i sprawd go

Wywietlanie bdw

w przegldarce (rysunki 3.11 oraz 3.12).


Jeeli wynikowa strona nie posiada bdw,
skrypt bdzie dziaa tak, jak do tej pory.
Jeeli jednak poprzednio widziae pust
stron, teraz powiniene zobaczy komunikat
bdu, tak jak na rysunku 3.12. Gdy tak si
stanie, rozwizanie problemu znajdziesz
w dalszej czci tego rozdziau.

76

Listing 3.5. Wczenie dyrektywy display_errors


powinno wyeliminowa wywietlanie pustej strony
w przypadku wystpienia bdu
/#$%& ' ()*&+"",-&""$$ . *
/01("" 
='2""33303-014"5"' (/"$$"
' (/+1(0
-' ( (
'2""33303-014"/666"' (
'
< '+78
91+
91
"' (:
9'
1+;;<6+="
@(31I1"(
A"'
;B1
6M'""*4-0<1B(4JF1 (!0'
Q3I4S
/
 
?@ @<A>
1B  C % ;% 
/=
/-""11! I!10' (0
/""%! I2DG!3CG+ (G
1C1!H1 !0
/<
/@P(P G!CHI !
H1 !0B":
/A!HD!1D!!
P1112PH1 !:
/;
/6M
="B1
=/"' (

Formularze HTML i PHP


Wskazwki
 Jeeli masz problemy z uruchamianiem

skryptu, pamitaj o wczeniu opcji


 $


. Jeeli zainstalowae PHP
na swoim komputerze, gorco zalecamy
wczenie tej opcji na czas nauki
(patrz dodatek A).
 Jeeli w trakcie uruchamiania skryptu PHP
Rysunek 3.11. Jeszcze raz wypeniamy formularz

zobaczysz pust stron, sprawd rwnie,


czy nie ma bdw w kodzie HTML.
 Funkcja +, moe by wykorzystana

do zmiany tylko niektrych ustawie. Wicej


informacji znajdziesz w podrczniku PHP.
 Pamitaj, e dyrektywa  $

steruje tylko tym, czy komunikaty bdw


bd wysyane do przegldarki. Nie tworzy
ona bdw ani nie zapobiega ich powstawaniu.

Rysunek 3.12. i teraz wywietlane s


komunikaty o bdach

WWW, poniewa bdy s zarwno


niewaciwe, jak rwnie mog spowodowa
naruszenie systemu bezpieczestwa.
W trakcie tworzenia witryny powiniene
jednak wczy parametr  $


.
 Moliwe jest, e twrcy PHP zmieni inne

ustawienia, ktre zmodyfikuj sposb


dziaania skryptw opisanych w tej ksice.
Niezbdne stanie si wtedy wprowadzenie
odpowiednich korekt.

77

Wywietlanie bdw

 Zalecane jest, aby wyczy parametr


 $


 w produkcyjnej witrynie

Rozdzia 3.

Raportowanie bdw
Drugim z trzech zagadnie konfiguracji PHP,
o ktrych powiniene wiedzie, jest sposb
raportowania bdw. W PHP mamy osiem
typw bdw oraz trzy typy definiowane przez
uytkownika (o ktrych nie bdziemy tutaj
mwi). W tabeli 3.1 wymienione s cztery
najwaniejsze typy bdw, wraz z opisami
i przykadami.

Raportowanie bdw

Mona okreli, w jaki sposb PHP bdzie


raportowa bdy, korzystajc z funkcji 


)+,. Wymieniona funkcja jako parametru
oczekuje liczby lub staej (staa to cig nie ujty
w apostrofy, ktry ma zdefiniowane wczeniej
znaczenie) w celu zmiany tego poziomu.
Na przykad:
1J14QS:"",D?9! 9DH1390
1J14Q J **S:""51I 3!H10
1J14Q J **NT J%& S:
""1H!I 190

Ostatni przykad pozwala na ustawienie


wywietlania wszystkich komunikatw bdw
poza typem    (-. oznacza i nie). Mona
zastosowa to ustawienie do naszego skryptu
obsluga_formularz.php, aby usun komunikaty
o bdach (rysunek 3.12).

Listing 3.6. Mona ustawi poziom raportowania


bdw przez PHP, aby dawa mniej lub wicej
informacji zwrotnej
/#$%& ' ()*&+"",-&""$$ . *
/01("" 
='2""33303-014"5"' (/"$$"
' (/+1(0
-' ( (
'2""33303-014"/666"' (
'
< '+78
91+
91
"' (:
9'
1+;;<6+="
@(31I1"(
A"'
;B1
6M'""*4-0@1B(4JF1 (!0'
Q3I!9S
/
//JQR(J1RG/S:
""1!3U( 9!ECBDC9'0
(
?D,99EFDG/2$HDA>
G 53
 

//""11! I!10' (0
/<""%! I2DG!3CG+ (G
1C1!H1 !0
/@
/AP(P G!CHI !
H1 !0B":
/;!HD!1D!!
P1112PH1 !:
/6
=M
=/"B1
=="' (

Tabela 3.1. Cztery najczciej spotykane typy bdw w PHP


Typy bdw PHP
Typ

Opis

Przykad

Notice

Bd niekrytyczny, ktry moe (ale nie musi)


oznacza problem.

Odwoanie si do zmiennej bez wartoci.

Warning

Bd niekrytyczny, ktry nie zawsze oznacza


wystpienie powanego problemu.

Przekazanie do funkcji parametru o niewaciwym typie.

Parse error

Bd krytyczny powodowany przez bd skadni.

Brak rednika lub brak pary dla apostrofu, nawiasu


lub klamry.

Error

Oglny bd krytyczny.

Problem z przydziaem pamici.

78

Formularze HTML i PHP


Aby ustawi poziom raportowania bdw:
1. Otwrz w edytorze plik obsluga_

formularz.php (listing 3.5).

2. Po wierszu zawierajcym +,

wprowad nastpujcy wiersz (listing 3.6):


1J14Q J **NT J%& S:

3. Zapisz plik pod nazw ) 




&.
Rysunek 3.13. Jeszcze raz wypeniamy formularz

4. Wylij plik na serwer WWW i obejrzyj go

w przegldarce (rysunki 3.13 oraz 3.14).

Wskazwki
Rysunek 3.14. i teraz komunikaty o bdach
znikny

 W podrczniku PHP wymienione s

wszystkie poziomy raportowania bdw,


ale przytoczone tutaj s najbardziej uyteczne.
 Moesz rwnie zmieni poziom

raportowania bdw PHP w pliku php.ini,


ale taka zmiana wpynie na wszystkie
skrypty. Jeeli masz wasny serwer PHP,
w czasie tworzenia wasnych skryptw
prawdopodobnie bdziesz chcia odpowiednio
skonfigurowa t funkcj. Zapoznaj si
z podrozdziaem Konfigurowanie PHP
w dodatku A.

 W naszym skrypcie pod nazw obsluga_


formularz.php bdy    wskazuj na

problem do zmiennej nie zostaa


przypisana warto. Ale ten problem jest na
tyle oczywisty w wynikowej stronie WWW,
e wyczenie komunikatu o bdzie wydaje
si cakowicie uzasadnione.

79

Raportowanie bdw

W tym momencie powiniene widzie


wynik pomylnego przetworzenia skryptu
(rysunek 3.9) lub brakujce wartoci
zmiennych, ale bez komunikatw bdw
(rysunek 3.14). W nastpnym podrozdziale
pokaemy, w jaki sposb poradzi sobie
z problemem brakujcych zmiennych.

Spis treci

Tworzenie aplikacji WWW


209
Tworzenie szablonw..............................................................................210
Uycie zewntrznych plikw ..................................................................218
Uycie staych .........................................................................................224
Operacje na datach i czasie .....................................................................229
Obsuga formularzy HTML za pomoc PHP powtrzenie ................231
Tworzenie lepkich formularzy ................................................................237
Wysyanie poczty elektronicznej.............................................................244
Buforowanie danych wyjciowych .........................................................248
Manipulowanie nagwkami HTTP ........................................................252

Rozdzia 9.

Cookie i sesje
259
Czym s cookie?......................................................................................260
Tworzenie plikw cookie ........................................................................262
Czytanie danych z cookie........................................................................268
Dodawanie parametrw do plikw cookie..............................................273
Kasowanie plikw cookie .......................................................................278
Czym s sesje? ........................................................................................281
Tworzenie sesji........................................................................................282
Odczytywanie zmiennych sesji ...............................................................286
Kasowanie sesji .......................................................................................289

Rozdzia 10. Tworzenie funkcji


291
Tworzenie i wykorzystywanie prostych funkcji......................................292
Tworzenie i wywoywanie funkcji z argumentami .................................298
Ustawianie domylnych wartoci argumentw .......................................302
Tworzenie i wykorzystanie funkcji zwracajcych warto .....................306
Co to jest zasig zmiennych? ..................................................................311
Rozdzia 11. Pliki i katalogi
317
Prawa do plikw......................................................................................318
Zapis do pliku..........................................................................................323
Blokowanie plikw .................................................................................330
Odczyt z pliku .........................................................................................333
Obsuga przesyania plikw ....................................................................336
Przegldanie katalogw...........................................................................344
Tworzenie katalogw ..............................................................................350
Przyrostowy odczyt pliku........................................................................357
7

Spis treci

Rozdzia 8.

Spis treci

Spis treci

Rozdzia 12. Wprowadzenie do baz danych


363
Wprowadzenie do SQL ...........................................................................364
Podczanie do MySQL...........................................................................366
Obsuga bdw MySQL.........................................................................370
Tworzenie i wybieranie bazy danych ......................................................373
Tworzenie tabeli......................................................................................376
Wstawianie danych do bazy danych........................................................381
Odczytywanie danych z bazy danych......................................................387
Usuwanie informacji z bazy danych........................................................393
Aktualizacja informacji w bazie danych .................................................399
Rozdzia 13. Wyraenia regularne
405
Czym s wyraenia regularne?................................................................406
Wyszukiwanie wzorcw..........................................................................408
Uycie literaw ......................................................................................414
Uycie metaznakw ................................................................................416
Uycie kwantyfikatorw .........................................................................419
Uycie klas ..............................................................................................421
Dopasowywanie i zamiana wzorcw ......................................................424
Dodatek A

Instalacja i konfiguracja
429
Instalacja w systemie Windows 2000 .....................................................430
Uywanie programu MySQL monitor ....................................................435
Tworzenie uytkownikw MySQL .........................................................437
Konfiguracja PHP ...................................................................................443

Dodatek B

Zasoby
445
Zasoby sieci na temat PHP......................................................................446
Zasoby na temat baz danych ...................................................................449
Tematy zaawansowane............................................................................450
Dziesi najczciej zadawanych pyta
(lub najczciej zgaszanych problemw).............................................451
Tabele ......................................................................................................454
Skorowidz

457

You might also like