You are on page 1of 20

IDZ DO

PRZYKADOWY ROZDZIA
SPIS TRECI

KATALOG KSIEK
KATALOG ONLINE
ZAMW DRUKOWANY KATALOG

TWJ KOSZYK
DODAJ DO KOSZYKA

CENNIK I INFORMACJE
ZAMW INFORMACJE
O NOWOCIACH
ZAMW CENNIK

CZYTELNIA
FRAGMENTY KSIEK ONLINE

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

PHP5, Apache
i MySQL. Od podstaw
Autor: Zesp autorw
Tumaczenie: Rafa Joca
ISBN: 83-7361-997-6
Tytu oryginau: Beginning PHP5, Apache,
MySQL Web Development
Format: B5, stron: 784
Tworzenie dynamicznych witryn WWW za pomoc technologii open source
Zainstaluj i skonfiguruj serwery oraz narzdzia
Pocz aplikacj internetow z baz danych
Napisz samodzielnie system zarzdzania treci witryny
PHP, Apache i MySQL to najpopularniejsze obecnie technologie suce do tworzenia
i udostpniania w sieci dynamicznych witryn WWW. czy je jedna wsplna cecha
wszystkie dostpne s na licencji open source, co oznacza, e korzystanie z nich nie
wie si z adnymi opatami. PHP to jzyk programowania sucy do pisania aplikacji
internetowych, MySQL to baza danych, ktra przechowuje informacje wywietlane
na stronach, a Apache to serwer WWW, dziki ktremu witryny te dostpne s
w internecie. Za pomoc tych narzdzi tworzone s portale, sklepy internetowe,
fora dyskusyjne i inne strony, z ktrych codziennie korzystaj dziesitki tysicy
uytkownikw sieci.
PHP5, Apache i MySQL. Od podstaw to podrcznik dla tych uytkownikw, ktrzy
chc pozna sposoby tworzenia dynamicznych witryn WWW w oparciu o te
technologie. Przedstawia zasady pisania aplikacji internetowych, stosowania w nich
formularzy z mechanizmem weryfikacji poprawnoci wpisanych danych, czenia
aplikacji z baz danych i modyfikowania elementw graficznych za pomoc PHP.
Opisano tu take sposoby przechowywania danych uytkownika w plikach cookie,
mechanizmy wysyania poczty elektronicznej, obsugi bdw i ograniczania dostpu
do okrelonych obszarw witryny za pomoc nazwy uytkownika i hasa. Kade
zagadnienie zaprezentowano na rzeczywistych przykadach dynamicznych witryn WWW.
Instalacja i konfiguracja Apache, PHP i MySQL-a
Podstawowe elementy jzyka PHP
Komunikacja z baz danych
Wywietlanie oraz modyfikowanie danych
Obsuga formularzy i weryfikacja poprawnoci wpisw
Korzystanie z elementw graficznych i zastosowanie biblioteki GD
Obsuga bdw
Komunikacja za pomoc poczty elektronicznej
Mechanizmy logowania i personalizacji serwisu
System zarzdzania treci serwisu WWW
Lista mailingowa i forum dyskusyjne
Elementy sklepu internetowego
Analiza ruchu w witrynie WWW za pomoc statystyk
Poznaj najnowsze technologie tworzenia dynamicznych witryn WWW

Spis treci
O autorach ................................................................................................................................................. 11

Cz I Wstp

13

Rozdzia 1. Instalacja i konfiguracja ....................................................................................................... 15


Projekty zawarte w ksice ............................................................................................ 15
Krtkie wprowadzenie do PHP, Apache, MySQL-a i wolnego oprogramowania .................... 16
Krtka historia inicjatywy open source ...................................................................... 16
Dlaczego wolne oprogramowanie tak kusi? ............................................................... 17
Jak wspgraj ze sob rne elementy systemu AMP? ................................................... 17
Apache .................................................................................................................. 18
PHP ....................................................................................................................... 19
MySQL ................................................................................................................... 19
Instalacje AMP ....................................................................................................... 20
Konfiguracja serwera Apache ........................................................................................ 21
Testowanie instalacji .............................................................................................. 21
Dostosowanie instalacji .......................................................................................... 22
Konfiguracja instalacji PHP ........................................................................................... 25
Testowanie instalacji .............................................................................................. 26
Dostosowanie instalacji .......................................................................................... 26
Konfiguracja PHP5, aby uywa MySQL-a ................................................................... 28
Konfiguracja instalacji MySQL-a ..................................................................................... 28
Testowanie instalacji .............................................................................................. 28
Konfiguracja instalacji ............................................................................................. 30
Gdzie szuka pomocy lub cennych zasobw? ................................................................. 36
Pomoc zwizana z programami ................................................................................ 37
rdowe strony WWW ............................................................................................. 37
Podsumowanie ............................................................................................................ 37

PHP5, Apache i MySQL. Od podstaw

Cz II Witryna recenzji filmw

39

Rozdzia 2. Tworzenie stron w PHP5 ...................................................................................................... 41


Omwienie struktury i skadni jzyka PHP ....................................................................... 42
Jak kod PHP umieszcza si w kodzie HTML? ............................................................. 42
Zasady skadni jzyka PHP ...................................................................................... 42
Techniki kodowania s niezmiernie wane ................................................................ 43
Pierwszy program ......................................................................................................... 45
Wykorzystanie HTML-a do uatrakcyjnienia stron .............................................................. 46
Integracja HTML-a z PHP .......................................................................................... 47
Rozwaania na temat kodu HTML w sekcjach PHP ..................................................... 48
Wykorzystanie zmiennych i staych ................................................................................ 49
Stae ..................................................................................................................... 49
Zmienne ................................................................................................................ 50
Przekazywanie zmiennych midzy stronami .................................................................... 53
Kilka sw na temat register_globals ........................................................................ 53
Przekazywanie zmiennych za pomoc adresu URL ..................................................... 54
Przekazywanie zmiennych przy uyciu sesji ................................................................ 58
Przekazywanie zmiennych za pomoc cookies ........................................................... 61
Przekazywanie informacji za pomoc formularzy ........................................................ 64
Instrukcja if-else .......................................................................................................... 68
Korzystanie z instrukcji if ......................................................................................... 69
Wykorzystanie instrukcji if-else ................................................................................. 71
Doczanie plikw w celu zwikszenia elastycznoci ....................................................... 72
Wykorzystanie funkcji do zwikszenia efektywnoci kodu ................................................. 74
Wszystko o tablicach .................................................................................................... 78
Skadnia tablic ....................................................................................................... 79
Sortowanie tablic .................................................................................................... 80
Konstrukcja foreach ................................................................................................ 81
Ptla while .................................................................................................................. 86
Alternatywna skadnia jzyka PHP .................................................................................. 89
Alternatywy dla znacznikw <?php i ?> ..................................................................... 89
Alternatywy dla polecenia echo ................................................................................ 89
Alternatywa dla operatorw logicznych ...................................................................... 90
Alternatywy dla cudzysoww skadnia heredoc ..................................................... 90
Alternatywy dla inkrementacji i dekrementacji wartoci .............................................. 90
Sny o programowaniu obiektowym ................................................................................. 91
Krtki przykad programowania obiektowego ............................................................. 91
Dlaczego warto programowa obiektowo? ................................................................. 93
Podsumowanie ............................................................................................................ 93
wiczenia .................................................................................................................... 94

Rozdzia 3. Korzystanie z bazy danych z poziomu jzyka PHP .............................................................95


Omwienie struktury i skadni bazy danych MySQL .......................................................... 96
Struktura MySQL-a .................................................................................................. 96
Skadnia i polecenia MySQL-a ................................................................................ 103
Jak PHP kontaktuje si z MySQL-em? .......................................................................... 103
czenie si z serwerem MySQL ................................................................................. 104
Spojrzenie na gotow baz danych .............................................................................. 105

Spis treci

Odpytywanie bazy danych ........................................................................................... 110


Klauzula WHERE ................................................................................................... 111
Tablice danych w PHP wykorzystanie konstrukcji foreach ..................................... 113
czenie tabel ...................................................................................................... 116
Uyteczne wskazwki i sugestie .................................................................................. 120
Dokumentacja ...................................................................................................... 120
Wykorzystanie systemu phpMyAdmin ...................................................................... 120
Podsumowanie .......................................................................................................... 121
wiczenia .................................................................................................................. 121

Rozdzia 4. Wywietlanie danych w PHP .............................................................................................. 123


Tworzenie tabeli HTML ............................................................................................... 123
Wypenienie tabeli ...................................................................................................... 126
Zwizek nadrzdny-podrzdny ...................................................................................... 132
Odczytanie recenzji .................................................................................................... 140
Podsumowanie .......................................................................................................... 145
wiczenia .................................................................................................................. 145

Rozdzia 5. Elementy formularzy wprowadzanie danych przez uytkownika ............................. 147


Pierwszy formularz ..................................................................................................... 148
Element FORM ..................................................................................................... 150
Element INPUT ..................................................................................................... 151
Przetwarzanie formularza ....................................................................................... 152
Nakierowanie na waciwe odpowiedzi ......................................................................... 153
Pole przecznika i lista rozwijana .......................................................................... 156
Jeden formularz, wiele wykonywanych dziaa ......................................................... 156
Przyciski opcji ....................................................................................................... 159
Wiele przyciskw wysyania .................................................................................... 160
Proste testowanie danych wejciowych ................................................................... 160
Dynamiczny tytu strony ......................................................................................... 161
Potraktowanie cigu znakw jako tablicy w celu zmiany wielkoci pierwszej litery tekstu .... 161
Operator trjargumentowy ..................................................................................... 161
Poczenie wszystkich elementw formularzy ................................................................ 162
Gwny skrypt ....................................................................................................... 169
Domylna odpowied ............................................................................................ 169
Dodawanie elementw .......................................................................................... 170
Podsumowanie .......................................................................................................... 171
wiczenia .................................................................................................................. 171

Rozdzia 6. Umoliwienie uytkownikowi modyfikacji bazy danych ................................................... 173


Przygotowanie pola bitwy ............................................................................................ 174
Wstawienie prostego rekordu za pomoc systemu phpMyAdmin .................................... 176
Wstawianie rekordu w relacyjnej bazie danych .............................................................. 179
Usuwanie rekordu ...................................................................................................... 185
Edycja danych rekordu ................................................................................................ 190
Podsumowanie .......................................................................................................... 197
wiczenie .................................................................................................................. 197

Rozdzia 7. Praca z obrazami ............................................................................................................... 199


Korzystanie z biblioteki GD ......................................................................................... 199
Jakie typy plikw obsuguje tandem GD i PHP? ........................................................ 200
Kompilacja PHP z obsug GD ................................................................................ 200

PHP5, Apache i MySQL. Od podstaw


Umoliwienie umieszczania obrazw na serwerze WWW przez uytkownikw ................... 201
Konwersja obrazu na inny format ................................................................................. 208
Czer i biel ................................................................................................................ 213
Dodanie napisw ....................................................................................................... 220
Dodawanie znakw wodnych i czenie obrazw ............................................................ 223
Tworzenie miniaturek ................................................................................................. 225
Podsumowanie .......................................................................................................... 229
wiczenia .................................................................................................................. 230

Rozdzia 8. Walidacja danych uytkownika ......................................................................................... 231


Uytkownicy s tylko uytkownikami ............................................................................. 231
Zastosowanie walidacji na witrynie z recenzjami filmw ................................................. 232
Zapominalscy ............................................................................................................ 233
Sprawdzanie bdw w formacie .................................................................................. 241
Podsumowanie .......................................................................................................... 252
wiczenie .................................................................................................................. 252

Rozdzia 9. Unikanie bdw i ich obsuga ........................................................................................... 253


W jaki sposb serwer Apache radzi sobie z bdami? ........................................................ 253
Dyrektywa ErrorDocument serwera Apache ............................................................. 254
Dyrektywa ErrorDocument zaawansowane strony bdw ..................................... 258
Obsuga bdw i tworzenie stron obsugi bdw w PHP ............................................... 261
Rodzaje bdw w jzyku PHP ................................................................................ 261
Generowanie bdw PHP ...................................................................................... 262
Inne sposoby obsugi bdw ...................................................................................... 269
Wyjtki ................................................................................................................. 270
Niespenienie warunkw ........................................................................................ 271
Bdy skadniowe .................................................................................................. 272
Podsumowanie .......................................................................................................... 273
wiczenia .................................................................................................................. 273

Cz III Witryna fanw komiksw

275

Rozdzia 10. Projektowanie i tworzenie bazy danych ........................................................................ 277


Zaczynamy ................................................................................................................ 277
Czym jest relacyjna baza danych? .......................................................................... 278
Klucze ................................................................................................................. 279
Zwizki ................................................................................................................ 280
Integralno wizw referencyjnych ........................................................................ 280
Normalizacja ........................................................................................................ 281
Projektowanie bazy danych ......................................................................................... 281
Wykonanie pierwszej tabeli .................................................................................... 281
Dlaczego wanie postacie normalne? .................................................................... 285
Standaryzacja ....................................................................................................... 286
Uszczegowienie projektu bazy danych .................................................................. 287
Utworzenie bazy danych w MySQL-u ............................................................................. 288
Tworzenie aplikacji postaci komiksowych ..................................................................... 292
Podsumowanie .......................................................................................................... 323
wiczenia .................................................................................................................. 324

Spis treci

Rozdzia 11. Wysyanie listw email ..................................................................................................... 325


Ustawienie PHP do obsugi listw email ....................................................................... 325
Wysyanie listw email ............................................................................................... 326
Umieszczanie w listach kodu HTML ............................................................................. 331
Wiadomoci wieloczciowe .................................................................................. 334
Przechowywanie obrazkw .......................................................................................... 337
Uzyskiwanie potwierdzenia .......................................................................................... 339
Tworzenie uytecznej klasy wysyania listw email ........................................................ 353
Podsumowanie .......................................................................................................... 360
wiczenia .................................................................................................................. 360

Rozdzia 12. Logowanie, profile i personalizacja ................................................................................. 361


Najprostszy sposb ochrony plikw ............................................................................. 362
Bardziej przyjazne uwierzytelnianie z wykorzystaniem sesji PHP i cookies ........................ 365
Rozwizanie bazujce na bazie danych ........................................................................ 369
Wykorzystanie cookies w PHP ................................................................................ 390
Panel administracyjny ........................................................................................... 393
Podsumowanie .......................................................................................................... 402
wiczenia .................................................................................................................. 402

Rozdzia 13. Zarzdzanie zawartoci ................................................................................................ 403


Co zrobi, by uytkownik wrci? .................................................................................. 403
Zawarto ............................................................................................................ 403
Zarzdzanie .......................................................................................................... 404
System ................................................................................................................ 404
Poczenie wszystkiego w jedn cao ................................................................... 404
Przygotowanie bazy danych ......................................................................................... 405
Tworzenie skryptw wielokrotnego uytku ..................................................................... 410
Strony transakcji ........................................................................................................ 420
Interfejs uytkownika .................................................................................................. 432
Zadania oglne ..................................................................................................... 432
Zarzdzanie uytkownikami .................................................................................... 441
Publikacja artykuu ................................................................................................ 445
Dodatkowe elementy systemu CMS ....................................................................... 457
Podsumowanie .......................................................................................................... 464
wiczenia .................................................................................................................. 465

Rozdzia 14. Listy mailingowe ............................................................................................................... 467


Co chciaby dzi wysa? ........................................................................................... 467
Aplikacja administracyjna ........................................................................................... 468
Chc si zapisa! ....................................................................................................... 482
Etyka list mailingowych ............................................................................................... 498
Spam .................................................................................................................. 498
Domylno subskrypcji ........................................................................................ 499
Podsumowanie .......................................................................................................... 500
wiczenia .................................................................................................................. 500

Rozdzia 15. Sklep internetowy ............................................................................................................. 501


Dodanie sprzeday przez internet do witryny postaci komiksowych ................................. 502
Co na sprzeda ................................................................................................... 502
Koszyk na zakupy ................................................................................................. 503

PHP5, Apache i MySQL. Od podstaw


Rne wskazwki dotyczce sprzeday przez internet .................................................... 540
Informacja jest wszystkim ...................................................................................... 542
Zaufanie .............................................................................................................. 542
Profesjonalny wygld ............................................................................................. 544
atwa nawigacja ................................................................................................... 544
Konkurencyjne ceny .............................................................................................. 545
Odpowiednie produkty ........................................................................................... 545
Dostawa na czas .................................................................................................. 545
Komunikacja ........................................................................................................ 545
Opinie od klientw ................................................................................................ 546
Podsumowanie .......................................................................................................... 546
wiczenia .................................................................................................................. 547

Rozdzia 16. Forum dyskusyjne ............................................................................................................ 549


Wasne forum dyskusyjne ........................................................................................... 549
Przygotowanie bazy danych ......................................................................................... 551
Wielokrotnie wykorzystywany kod ................................................................................. 559
Podzia na podstrony ............................................................................................. 568
Okruszki chleba .................................................................................................... 572
Ostatnie spojrzenie na uwierzytelnianie uytkownikw .............................................. 574
Strony transakcji ........................................................................................................ 575
Funkcjonalno konta ................................................................................................. 586
Zarzdzanie uytkownikami .................................................................................... 598
Funkcjonalno forum ................................................................................................ 599
Administracja systemem ....................................................................................... 603
Administracja forum .............................................................................................. 604
Administracja kodami BBcode ................................................................................ 604
Wyszukiwanie ....................................................................................................... 617
Dodatkowe pomysy ................................................................................................... 619
Podsumowanie .......................................................................................................... 619
wiczenia .................................................................................................................. 620

Rozdzia 17. Zdobywanie informacji na temat uytkownikw witryny .............................................. 621


Znajdowanie dziennikw zdarze ................................................................................. 622
Serwer Apache ..................................................................................................... 622
PHP ..................................................................................................................... 624
Serwer MySQL ...................................................................................................... 624
Analiza danych z dziennikw ....................................................................................... 627
Webalizer ............................................................................................................. 627
Analog ................................................................................................................. 628
AWStats ............................................................................................................... 629
HTTP Analyze ........................................................................................................ 630
Analiza uzyskanych statystyk ...................................................................................... 630
Zdrowie witryny ..................................................................................................... 631
Preferencje uytkownikw ...................................................................................... 631
Liczba da i liczba wywietle stron .................................................................... 631
Zmiana trendw w czasie ...................................................................................... 632
Witryny, z ktrych przyby uytkownik ...................................................................... 632
Podsumowanie .......................................................................................................... 632

Spis treci

Rozdzia 18. Rozwizywanie problemw ............................................................................................. 633


Problemy przy instalacji .............................................................................................. 633
Bdy analizy skadniowej ........................................................................................... 634
Bd w wierszu 26 miaem na myli wiersz 94. .................................................... 634
Pamitaj o podstawach ......................................................................................... 634
Puste zmienne ........................................................................................................... 635
Przekazywanie zmiennych z formularzy .................................................................... 635
Jednolite i poprawne nazwy zmiennych ................................................................... 636
Otwrz nowe okno przegldarki .............................................................................. 637
Bd Headers already Sent ...................................................................................... 637
Oglne uwagi na temat testowania skryptw ................................................................ 638
Wykorzystanie instrukcji echo ................................................................................ 638
Dziel i rzd .......................................................................................................... 639
Testowanie, testowanie i raz jeszcze testowanie ..................................................... 639
Gdzie szuka pomocy? ............................................................................................... 640
PHPBuilder.com .................................................................................................... 640
Witryny twrcw aplikacji ....................................................................................... 640
Wyszukiwarki ........................................................................................................ 641
Kanay IRC ........................................................................................................... 641
Podsumowanie .......................................................................................................... 641

Dodatki

643

A Rozwizania wicze ........................................................................................................................ 645


B Skrt skadni jzyka PHP .................................................................................................................. 685
C Funkcje jzyka PHP5 ......................................................................................................................... 689
D Typy danych MySQL ........................................................................................................................... 725
E Skrt skadni jzyka bazy danych MySQL ....................................................................................... 729
F Porwnanie edytorw tekstw ........................................................................................................ 733
G Wybr firmy obsugujcej serwer WWW ....................................................................................... 735
H Wprowadzenie do PEAR ..................................................................................................................... 739
I Instalacja Apache, PHP i MySQL-a ...................................................................................................... 747
Skorowidz ............................................................................................................................................. 755

Tworzenie stron w PHP5


Niniejszy rozdzia dotyczy podstaw jzyka PHP i jednoczenie jest pocztkiem opisu tworzenia pierwszej witryny internetowej zwizanej z recenzjami filmw. Po zakoczeniu prac
nad witryn jej uytkownicy bd mogli odnale informacje na temat konkretnego filmu,
a Czytelnik bdzie potrafi pisa programy w jzyku PHP.
Nawet jeli dobrze zna si wczeniejsze wersje PHP, polecamy przeczytanie tego rozdziau
i zwrcenie szczeglnej uwagi na podrozdzia o programowaniu obiektowym, ktre stanowi
nowy element, znacznie udoskonalony w PHP5.
Niniejszy rozdzia omawia podstawowe polecenia i struktury jzyka PHP:
Q

wykorzystanie echo do wywietlania tekstu,

formatowanie tekstu przy uyciu PHP i HTML,

stae i zmienne,

wykorzystanie adresw URL do przekazywania zmiennych,

sesje i cookies (tzw. ciasteczka),

formularze HTML,

konstrukcje if-else,

doczenia innych plikw,

funkcje,

tablice i konstrukcj foreach,

ptle while i do-while,

wykorzystanie klas i metod w programowaniu obiektowym.

Pod koniec rozdziau, po wykonaniu wszystkich wicze Wyprbuj, nikt nie powinien
mie najmniejszych problemw z utworzeniem prostego formularza uwierzytelniania, dania
uytkownikom moliwoci zobaczenia recenzji ulubionego filmu lub listy 10 najlepszych
obrazw oraz zaoferowania ponumerowanej listy filmw bazujcej na tym, ile bd oni
chcieli zobaczy. Po drobnych modyfikacjach bdzie moga to by alfabetyczna lista filmw.

42

Cz II

Witryna recenzji filmw

Omwienie struktury i skadni jzyka PHP


Programy PHP pisze si w edytorach tekstw, takich jak Notatnik, podobnie jak strony HTML.
Niemniej, w odrnieniu od tradycyjnych stron WWW, strony PHP posiadaj rozszerzenie
.php. Rozszerzenie to informuje serwer WWW, aby dokona przetworzenia kodu PHP przed
wysaniem wynikowej strony do przegldarki internetowej uytkownika.
W piciogwiazdkowej restauracji klienci widz jedynie talerze pene wspaniaych potraw,
ktre zostay dla nich przygotowane. Nie wiedz, skd pochodzi jedzenie ani jak zostao
przygotowane. W podobny sposb PHP przygotowuje kod HTML uytkownik nie widzi,
jak jest on przygotowywany.

Jak kod PHP umieszcza si w kodzie HTML?


Zakadamy, e Czytelnik zna cho troch jzyk HTML i zapewne nieraz widzia, w jaki
sposb wstawiany jest kod jzyka JavaScript lub innego wewntrz kodu strony WWW. PHP
jest inny nie tylko umoliwia tworzenie stron internetowych w locie, ale jest rwnie
niewidoczny dla odwiedzajcych. Uytkownicy widz jedynie wynik wykonania napisanego
skryptu, czyli kod HTML. Zapewnia to wiksze bezpieczestwo kodu PHP i wiksz elastyczno przy jego pisaniu.
Nic nie stoi na przeszkodzie, aby kod HTML pojawi si w sekcji kodu PHP strony uatwia
to formatowanie tekstu przy jednoczesnym zachowaniu zwartej budowy blokw kodu.
Programista pisze w ten sposb wydajniejszy i lepiej zorganizowany kod, a przegldarka
internetowa (i, co najwaniejsze, uytkownik) nie zauwaa rnicy.
PHP moe zosta napisany jako samowystarczalny program bez adnych wstawek HTML.
Takie pliki stosuje si na og do przechowywania zmiennych pocze z baz danych,
przekierowania uytkownika na inn stron lub wykonania innych funkcji omwionych
w ksice.

Zasady skadni jzyka PHP


Jedn z podstawowych zalet PHP jest jego prostota. Podobnie jak w kadym jzyku programowania istnieje kilka sposobw na wykonanie tego samego zadania. Po dobrym zaznajomieniu si z podstawami i niektrymi programami, warto rozpocz poszukiwania skrtw, ktre uczyni kod wydajniejszym. Aby nie utrudnia pocztku znajomoci, omwimy
jedynie najpopularniejsze techniki, zasady i funkcje jzyka PHP.
Zawsze naley pamita o dwch podstawowych zasadach PHP.
Q

Kod PHP umieszcza si na stronie pomidzy odpowiednimi znacznikami


przedstawionymi poniej:
<?php
?>

Rozdzia 2.
Q

Tworzenie stron w PHP5

43

Oglnie rzecz biorc, wiersze kodu PHP kocz si znakiem rednika:


<?php
// Pierwszy wiersz kodu;
// Drugi wiersz kodu;
// Trzeci wiersz kodu;
?>

Komentarze w kodzie programu umieszcza si, poprzedzajc je dwoma ukonikami //


(dotyczy to komentarzy jednowierszowych) lub umieszczajc midzy konstrukcjami /* i */
(komentarze wielowierszowe). Wcicia nie maj adnego znaczenia, podobnie jak przejcia
do nowych wierszy. Daje to programicie ogromn swobod, ktra, niestety, czasem jest
naduywana, co wkrtce przedstawimy na przykadzie.
Zupene podstawy mamy ju za sob. Reszta to w zasadzie tylko doskonalenie swoich
zdolnoci programistycznych.

Techniki kodowania s niezmiernie wane


Zanim przejdziemy dalej, warto wskaza, w jaki sposb struktura kodu potrafi wpyn na
skrypt. Dla serwera WWW zajmujcego si przetwarzaniem kodu PHP nie ma ona wikszego znaczenia serwer widzi cay kod jako jeden bardzo dugi wiersz pozbawiony
wszystkich znakw tabulacji, wci i przej do nowych wierszy. Dla czowieka stosowanie
odpowiednich wci i organizacji kodu ma przeogromne znaczenie.
Przyjrzyjmy si przykadom:
Przykad 1.
<?php
if ($_POST["fname"] == "Jan") {
echo "<p>Witaj $_POST['fname']</p>;
}
else {
echo "<h2>Nie masz na imi Jan, wic nie moesz wej na t witryn.</h2>"
}
?>

Przykad 2.
<?php
// sprawd, czy uytkownik ma na imi Jan, zanim wywietlisz zawarto witryny
if ($_POST["fname"] == "Jan")
{
echo "<p>";
echo "Witaj ";
echo $_POST['fname'];
echo "</p>";
}
else
{
echo "<h2>";
echo "Nie masz na imi Jan, wic nie moesz wej na t witryn.";
echo "</h2>";
}
?>

44

Cz II

Witryna recenzji filmw

Chocia drugi przykad wymaga wicej pisania, atwiej w nim zlokalizowa bdy w skadni
lub wyczy dany fragment kodu w trakcie przeprowadzania testw. Jest to szczeglnie
wane, gdy dopiero zaczyna si przygod z jzykiem. Po nabraniu wprawy mona pisa
bardziej zwizy kod z przykadu 1.

Kiedy program jest dobry?


Naprawd profesjonalny kod powinien wzorowa si na wykorzystaniu trzech wskazwek.
Q

Spjno. Bloki dobrze napisanego kodu zawsze wygldaj tak samo i maj te
same wcicia, skrty itp. Znacznie uatwia to pniejsze czytanie kodu. Wspania
cech jzyka PHP jest to, e nie troszczy si o wcicia i znaki tabulacji, wic mona
stosowa wasny styl, o ile jest on jednolity i wygodny.
Poniewa czsto istnieje wicej ni jedna skadnia zwizana z wybranym zagadnieniem,
dobrzy programici wybieraj jedn skadni i stosuj si do niej przez cay czas.
Z punktu widzenia interpretera kodu PHP dwa ponisze fragmenty s sobie
rwnowane:
<?php
// tutaj znajduje si kod PHP;
?>
<?
// tutaj znajduje si kod PHP;
?>

Najlepiej wybra jedno z rozwiza i trzyma si go cay czas przy pisaniu kodu.
Q

Czste komentarze. Im wicej komentarzy zawiera kod, tym lepiej. Cho nie jest
to a tak istotne w krtkich, niewielkich programach, wraz ze wzrostem ich zoonoci
coraz trudniej zapamita, co zostao zrobione, dlaczego zostao napisane i dlaczego
dane rozwizanie jest najlepsze. Szczegowe komentarze pozwalaj przypomnie
sobie dawne motywy. Gdy nad projektem pracuje wielu programistw, komentarze
znaczco uatwiaj zrozumienie kodu napisanego przez inn osob.

Numerowanie wierszy. Niektre edytory tekstu numeruj wiersze, ale niestety


nie wszystkie. Edytory tekstu omawiamy dokadniej w dalszej czci programu.
Jeli edytor nie zapewnia numerowania wierszy, warto zagwarantowa to sobie
samemu, poniewa gdy skrypt zawiera bdy, interpreter wywietla informacj,
w ktrym wierszu wykry nieprawidowo. Jeli trzeba bdzie rcznie liczy
wiersze po napotkaniu kadego bdu, testowanie kodu i usuwanie z niego
bdw bdzie zajmowao niezmiernie duo czasu.

Dlaczego warto troszczy si o to, jak wyglda kod?


Z trzech powodw warto stosowa dobre praktyki pisania kodu:
Q

Wydajno. Im mniej problemw sprawia przeczytanie kodu, tym atwiej ledzi,


co si w nim dzieje, i w razie potrzeby dokonywa odpowiednich poprawek
(nawet po duszej przerwie).

Rozdzia 2.

Tworzenie stron w PHP5

Usuwanie bdw. Wiedza na temat tego, co jest powodem bdu, jest bezcenna.
Gdy stosuje si komentarze, atwiej zrozumie logik programu. Jeeli dodatkowo
stosuje si numeracj wierszy i jednolite formatowanie kodu, odnalezienie
problematycznego fragmentu zajmuje jedynie chwil.

Przysze rozszerzenia i modyfikacje. Stosowanie komentarzy jest niezmiernie


wane, gdy chce si w przyszoci rozbudowywa kod, gdy niezmiernie trudno
przypomnie sobie logik skryptu pisanego wiele miesicy temu. W trakcie pracy
w zespole programistycznym komentarze i jednolito formatowania uatwiaj
dokonywanie zmian w kodzie napisanym przez inne osoby.

45

Na tym zakoczymy wstp do programowania przejdmy do praktyki.

Pierwszy program
Chyba nie mona napisa prostszego programu od poniszego, ale jego przeledzenie pozwoli zrozumie wyniki dziaania skryptw PHP. Funkcja echo, ktr mona zauway
w przedstawionym poniej skrypcie, jest jedn z najczciej stosowanych funkcji jzyka PHP.
Suy do wysyania tekstu (zawartoci zmiennych i nie tylko) do przegldarki internetowej.

Wyprbuj funkcja echo


Wyprbuj funkcj echo, aby sprawdzi, jakie bd wyniki.
1. Wpisz poniszy program w ulubionym edytorze tekstu (na przykad Notatniku)

i zapisz w pliku firstprog.php.


Upewnij si, i zosta on zapisany jako zwyky tekst, aby unikn problemw
z interpretacj. Jeli korzysta si z Notatnika, warto sprawdzi, czy plik nie zosta
zapisany pod nazw firstprog.php.txt.
<html>
<head>
<title>Pierwszy program w PHP</title>
</head>
<body>
<?php
echo "Jestem drwalem.";
?>
</body>
</html>

2. Otwrz program, uywajc przegldarki internetowej. Uzyskany wynik powinien

wyglda tak jak na rysunku 2.1.


3. Wywietl rdo kodu HTML, aby przekona si, co si tak naprawd stao ze skryptem

PHP. Jak nietrudno zauway, kod PHP znikn i pozosta jedynie kod HTML.
4. Dodaj wyrniony wiersz z poniszego kodu, aby lepiej zrozumie istot dziaania

skryptw PHP.

46

Cz II

Witryna recenzji filmw

Rysunek 2.1.

<html>
<head>
<title>Pierwszy program w PHP</title>
</head>
<body>
<?php
echo "Jestem drwalem.";
echo "I jest mi dobrze.";
?>
</body>
</html>

5. Zapisz zmodyfikowany plik i otwrz go ponownie w przegldarce. Oba wiersze

zostay zczone razem bez adnych przerw, cho w kodzie PHP znajdoway si
w dwch osobnych wierszach.

Jak to dziaa?
Gdy przegldarka internetowa wywouje program PHP, najpierw przeszukuje si cay kod
wiersz po wierszu w poszukiwaniu sekcji PHP (kodu PHP umieszczonego w znacznikach),
a nastpnie przetwarza si je po kolei. Serwer traktuje cay kod PHP jak jeden dugi wiersz,
wic dwa powysze wiersze zostay zczone na ekranie. Po przetworzeniu kodu PHP serwer
wraca do pozostaego jeszcze kodu i wysya go do przegldarki wraz z kodem sekcji PHP.

Wykorzystanie HTML-a do uatrakcyjnienia stron


Jak atwo zauway, wykorzystanie jedynie samego kodu PHP spowodowaoby powstanie
bardzo nudnych stron WWW. Wystarczy jednak zastosowa troch kodu HTML, aby stay si
one znacznie ciekawsze. Kod HTML umieszcza si w bloku PHP, uywajc funkcji echo.
Skrypt PHP moe korzysta z wszystkich elementw HTML, wczajc w to ramki, tabele,
rne czcionki itp.

Rozdzia 2.

Tworzenie stron w PHP5

47

Integracja HTML-a z PHP


Kolejny praktyczny przykad przedstawia, jak atwo zastosowa kod HTML w programie PHP.

Wyprbuj uycie kodu HTML w skrypcie PHP


W niniejszym przykadzie czymy kod PHP i HTML.
1. Zmodyfikuj wyrnione wiersze programu firstprog.php.
<html>
<head>
<title>Pierwszy program w PHP</title>
</head>
<body>
<?php
echo "<h1>Jestem drwalem.</h1>";
echo "<h2>I jest mi dobrze.</h2>";
?>
</body>
</html>

2. Zapisz plik i przeaduj stron WWW. Uzyskany wynik powinien wyglda tak jak

na rysunku 2.2.
Rysunek 2.2.

Jak to dziaa?
Funkcja echo po prostu wysya do przegldarki to, co zostao jej przekazane, niezalenie od
tego, czy jest to zwyky tekst, kod HTML, zmienna itp. Aby to udowodni, w przedstawionym
przykadzie po prostu przekazalimy kod HTML, modyfikujc nastpujce wiersze:

48

Cz II

Witryna recenzji filmw

echo "<h1>Jestem drwalem.</h1>";


echo "<h2>I jest mi dobrze.</h2>";

Wstawiajc kod HTML do sekcji PHP, uzyskujemy dwie rzeczy:


Q

Poprawiamy wygld strony WWW.

Utrzymujemy skrypt PHP zwartym, gdy nie przeskakujemy cay czas midzy
kodem PHP i HTML.

Jeli zajrzy si do kodu rdowego strony WWW, da si zauway, e kod HTML zosta
wstawiony zgodnie z oczekiwaniami.

Rozwaania na temat kodu HTML w sekcjach PHP


Poniej przedstawiamy kilka wskazwek zwizanych z typowymi bdami wstawiania kodu
HTML w sekcjach PHP.
Q

Sprawdzaj cudzysowy. atwo wywnioskowa z poprzedniego przykadu, i funkcja


echo wymaga zastosowania cudzysoww. Poniewa kod HTML take korzysta
z cudzysoww, warto zastosowa jedn z dwch sztuczek, by unikn problemw:
Q

Zastosowa apostrofy w kodzie HTML.

Zastosowa znak unikowy (lewy ukonik) przed kadym cudzysowem kodu


HTML. Oto przykad:
echo "<font size=\"2\">";

Jest to szczeglnie przydatne, gdy chce si umieci cudzysowy w tekcie.


echo "Marek powiedzia \"Tak\".";
Q

Pamitaj, e zasady kodu PHP obowizuj take wtedy, gdy stosuje si kod
HTML. Czasami zapomina si, piszc duszy fragment kodu HTML w sekcji PHP,
e na kocu instrukcji echo trzeba umieszcza cudzysowy zamykajce i redniki.

Nie umieszczaj zbyt duo kodu HTML w sekcjach PHP. Jeli jest rodek sekcji
PHP, a kod HTML staje si coraz duszy, warto pomyle o zakoczeniu takiej
sekcji i rozpoczciu pisania wycznie w kodzie HTML. Rozwamy dwa ponisze
przykady:
Przykad 1.
<?php
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo

"<table width='100%' border='2' bgcolor='#FFFFFF'>";


"<tr>";
"<td width='50%'>";
"<font face='Verdana, Arial' size='2'>";
"Imi:";
"</font></td>";
"<td width='50%'>";
"<font face='Verdana, Arial' size='2'>";
$_POST['fname'];
"</font></td>";
"</tr>";
"</table>";?>

Rozdzia 2.

Tworzenie stron w PHP5

49

Przykad 2.
<table width='100%' border='2' bgcolor='#FFFFFF'>
<tr>
<td width='50%'>
<font face='Verdana, Arial' size='2'>
Imi:
</font>
</td>
<td width='50%'>
<font face='Verdana, Arial' size='2'>
<?php
echo $_POST['fname'];
?>
</font>
</td>
</tr>
</table>

Chocia nie omwilimy jeszcze zmiennych, nietrudno zauway, i tak naprawd


w caym fragmencie jedynym dynamicznie wstawianym elementem bya zmienna
fname. Pozostaa tre to po prostu kod HTML. Z tego wzgldu lepiej pozosta
w jzyku HTML i wykorzysta PHP jedynie wtedy, gdy jest naprawd potrzebny,
ni stosowa kod HTML w PHP. Cho nie ma to duego znaczenia dla serwera,
upraszcza formatowanie, uatwia testowanie i nie wymaga tyle pisania (co zawsze
jest dobr rzecz). Zawsze trzeba umie zachowa rwnowag midzy kodem HTML
i PHP w trakcie pisania dowolnej witryny internetowej.

Wykorzystanie zmiennych i staych


Omwilimy podstawy wykorzystywania funkcji echo do wywietlania dowolnego tekstu.
Na razie nie rni si to niczym od pisania standardowej strony WWW w HTML-u. Dopiero
zastosowanie staych i zmiennych pozwala jzykowi PHP pokaza ca swoj moc.

Stae
Staa to symbol zastpczy dla wartoci, z ktrej korzysta si w kodzie. Na og stae pisze
si wielkimi literami (aby atwiej odnale je w kodzie), a ich wartoci definiuje si przed
uyciem symbolu zastpczego. Nazwy staych musz zaczyna si od litery lub podkrelenia
i nie mog zaczyna si od cyfry. Interpreter skryptw zwraca uwag na wielko liter.
Stae definiuje si za pomoc funkcji define(). Po zdefiniowaniu staej nie mona jej zmieni
ani usun.

Wyprbuj wykorzystanie staych


W wiczeniu przedstawimy wykorzystanie staych w programie PHP.
1. Otwrz edytor tekstu i wpisz poniszy program:

50

Cz II

Witryna recenzji filmw

<html>
<head>
<title>Witryna o filmach</title>
</head>
<body>
<?php
define ("FAVMOVIE", "ywot Briana");
echo "Mj ulubiony film to ";
echo FAVMOVIE;
?>
</body>
</html>

2. Zapisz tekst w pliku moviesite.php i otwrz go, uywajc przegldarki

internetowej. Strona powinna wyglda tak jak na rysunku 2.3.


Rysunek 2.3.

Jak to dziaa?
Definiujc sta o nazwie FAVMOVIE, przypisalimy jej warto ywot Briana, ktra moe
zosta uyta i wywietlona w przyszoci. Cho staej nie mona zmieni ani usun, jest ona
dostpna w dowolnym miejscu skryptu.

Zmienne
W odrnieniu od staych, zmienne, jak sama nazwa wskazuje, potrafi si zmienia rne
fragmenty programu mog modyfikowa ich zawarto. Zmienne nie musz by definiowane
lub deklarowane. Wystarczy co do nich przypisa, gdy jest to konieczne. Zmienne mog
przechowywa dane tekstowe lub numeryczne.

Rozdzia 2.

Tworzenie stron w PHP5

51

Zmienne poprzedza si znakiem dolara ($), a wielko liter ma znaczenie (innymi sowy,
$WpisanaData i $wpisanaData to dwie rne zmienne). Pierwszy znak zmiennej musi by
znakiem podkrelenia lub liter i nie moe by cyfr.
W poprzedniej wersji jzyka PHP (4.) zmienne nie byy przekazywane przez referencj,
jeli nie poprzedzio si ich znakiem ampersanda (&). W PHP5 wszystkie zmienne s
przekazywane przez referencj i nie jest do tego wymagana adna dodatkowa skadnia. W znaczcy sposb poprawia to szybko i elastyczno programw. Nie naley
si przejmowa, jeli to, co tu napisalimy, nie jest dla kogo jasne. Staje si to
istotne dopiero w bardziej zoonych aplikacjach.

Wyprbuj wykorzystanie zmiennych


W wiczeniu do istniejcego ju skryptu dodamy zmienne.
1. Otwrz edytor tekstu i dokonaj w pliku moviesite.php odpowiednich zmian

(zostay one wyrnione).


<html>
<head>
<title>Witryna o filmach</title>
</head>
<body>
<?php
define ("FAVMOVIE", "ywot Briana");
echo "Mj ulubiony film to ";
echo FAVMOVIE;
echo "<br>";
$movierate = 5;
echo "Moja ocena dla tego filmu wynosi ";
echo $movierate;
?>
</body>
</html>

2. Zapisz zmiany i otwrz plik w przegldarce internetowej. Powinna pojawi si

strona przedstawiona na rysunku 2.4.


Rysunek 2.4.

52

Cz II

Witryna recenzji filmw

Jak to dziaa?
Warto 5 jest przypisywana do zmiennej movierate. Warto zauway, e nie jest to
zmienna tekstowa, ale liczbowa. Poniszy wiersz spowodowa przypisanie zmiennej jako
cigu znakw.
$movierate = "5";

Zachowujc zmienn jako liczb, umoliwiamy przeprowadzanie na niej w przyszoci


operacji matematycznych (na przykad wyliczenie redniej oceny filmu). Oto przykad:
<?php
$bobsmovierate = 5;
$joesmovierate = 7;
$grahamsmovierate = 2;
$zabbysmovierate = 1;
$avgmovierate = (($bobsmovierate + $joesmovierate + $grahamsmovierate
+ $zabbysmovierate) / 4);
echo "rednia ocena dla tego filmu wynosi ";
echo $avgmovierate;
?>

Jzyk PHP posiada wiele wbudowanych funkcji matematycznych, z ktrych mona korzysta
dla zmiennych zawierajcych liczby. Oto kilka z nich:
Q

Funkcja rand([min], [maks]) generuje losow liczb cakowit z podanego


przedziau.

Funkcja ceil(liczba) zaokrgla liczb w gr do liczby cakowitej.

Funkcja floor(liczba) zaokrgla liczb w d do liczby cakowitej.

Funkcja number_format(liczba [, po przecinku] [, znak przecinka] [, znak


tysicy]) formatuje liczb zgodnie z podan liczb miejsc po przecinku,
uywajc przekazanych znakw jako przecinka i separatora tysicy. Domylnie
PHP uywa kropki jako separatora czci cakowitej i uamkowej oraz przecinka
jako separatora kolejnych tysicy. Jeli takie formatowanie jest odpowiednie,
mona pomin opcjonalne parametry umieszczone w nawiasach kwadratowych.
Aby otrzyma formatowanie stosowane w Polsce, trzeba napisa nastpujcy kod:
$price = 12345.67;
number_format($price); // zwraca 12,345.67
number_format($price, 2, ",", " "); // zwraca 12 345,67

Funkcja max(argument1, argument2, ...) zwraca maksymaln warto


z przekazanych argumentw.

Funkcja min(argument1, argument2, ...) zwraca minimaln warto


z przekazanych argumentw.

Pena lista funkcji matematycznych jzyka PHP znajduje si w dodatku C.

You might also like