You are on page 1of 46

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

Flash PHP. Podstawy


Autor: Steve Webster
Tumaczenie: Marek Korbecki
ISBN: 83-7197-658-5
Tytu oryginau: Foundation PHP for Flash
Przykady na ftp: 995 kB
Liczba stron: 392

Moliwoci PHP i Flasha wspaniale si uzupeniaj. Oczywicie, Flash sam w sobie jest
wspaniaym narzdziem, ale tworzenie zmieniajcych si, w peni interaktywnych witryn
Flasha wymaga zastosowania dodatkowych technik. PHP jest bezpatnym i atwym
sposobem osignicia tego celu. Lista jego funkcji jest duga, wic moe on w znaczcy
sposb zwikszy dynamik witryny Flasha.
Niniejsza ksika ma zaznajomi Czytelnika ze wspaniaymi moliwociami, jakie daje
wykorzystywanie skryptw wykonywanych po stronie serwera podczas tworzenia
witryn Flasha. Napisalimy j, aby w odpowiednim tempie przeprowadzi go przez
pierwsze prby tworzenia skryptw PHP.
Ksika niniejsza skierowana jest do projektantw witryn internetowych,
a w szczeglnoci tych, ktrzy w swej pracy korzystaj z Flasha. Naszym celem jest
rwnie zapoznanie Czytelnikw z jzykiem PHP w przyjazny sposb, szczegln uwag
koncentrujc na praktyczne zastosowanie przedstawionych wiadomoci. Majc na
uwadze sposb omawiania przykadw w tej ksice zaoylimy, e kady Czytelnik
dysponuje podstawow wiedz na temat Flasha, a zastosowanie PHP ma pozwoli mu
na zwikszenie moliwoci tworzonych witryn. Pomimo tego w niniejszej ksice
uwzgldnimy pene wyjanienia odnoszce si do tego programu. Wyjanienia te
pojawia si bd w caej ksice.
W kadym rozdziale omawia bdziemy:
podstawy okrelonego aspektu tworzenia skryptw PHP;
przykad zastosowania danego skryptu w aplikacji Flasha. Podane przykady s
rozbudowane, mog by stosowane bezporednio lub adaptowane do innych
potrzeb.

"
"

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

Naszym celem nie byo podawanie ogromnych iloci teorii i nastpnie pozostawienie
Czytelnika samemu sobie. Dylimy do praktycznego pokazania, w jaki sposb PHP
wspomaga projektantw wykorzystujcych Flasha.
W niniejszej ksice dokadnie przedstawimy zaoenia PHP i, co waniejsze, sposoby
jego wykorzystywania podczas tworzenia coraz to bardziej zoonych i interesujcych
aplikacji sieciowych. W kadym rozdziale przedstawimy przykad prostego kodu,
szczeglnie zwracajc uwag na te elementy, ktre mog okaza si przydatne podczas
projektowania witryn. Zaprezentujemy zestaw 12 interesujcych, atrakcyjnych aplikacji
od filmw rejestracji i logowania a po pene forum stworzone we Flashu.

O Autorach ..................................................................................................................9
Wstp .......................................................................................................................... 11
Jak zbudowana jest ta ksika ...............................................................................................................11
Konwencje zastosowane w ksice.................................................................................................12
Co jest potrzebne w trakcie lektury niniejszej ksiki ....................................................................12
Wsparcie kady go potrzebuje ...................................................................................................13
PHP i skrypty wykonywane po stronie serwera ....................................................................................14
Klient i serwer .................................................................................................................................16

Rozdzia 1. Dynamiczne dane dla Flasha .................................................................21


Wczytywanie danych zewntrznych......................................................................................................21
Porady dotyczce polecenia loadVariables .....................................................................................24
Detektory zdarze klipw filmowych ...................................................................................................25
Wysyanie informacji z Flasha ..............................................................................................................29
Budowa formularza rejestracji...............................................................................................................30
Skrypty dziaajce po stronie serwera ...................................................................................................35
Gwny skrypt rejestracyjny ...........................................................................................................37

Rozdzia 2. Zaczynamy prac z PHP........................................................................39


Kilka sw o konwencji nazewnictwa ...................................................................................................40
Komentarze............................................................................................................................................41
Zmienne .................................................................................................................................................42
Nadawanie nazw zmiennym............................................................................................................43
Typy danych ..........................................................................................................................................46
Operatory.........................................................................................................................................47
Zastosowanie wyrae...........................................................................................................................51
Selekcja ...........................................................................................................................................51
Iteracja .............................................................................................................................................57
Tablice ...................................................................................................................................................61
Tworzenie tablic ..............................................................................................................................61
Przebieg ptli poprzez tablic sekwencyjn....................................................................................63
Przebieg ptli poprzez tablic niesekwencyjn ...............................................................................64
Tablice wielowymiarowe ................................................................................................................67
Sortowanie tablic.............................................................................................................................68
Przejdmy do praktyki...........................................................................................................................69

Rozdzia 3. PHP w akcji.............................................................................................77


Wprowadzenie do funkcji......................................................................................................................78

Flash i PHP. Podstawy


Zasig zmiennych............................................................................................................................80
Czas istnienia zmiennych ................................................................................................................82
Przekazywanie danych do funkcji...................................................................................................82
Zwracanie danych przez funkcje.....................................................................................................83
Przekazywanie danych poprzez odwoania.....................................................................................84
Doczanie plikw zewntrznych ..........................................................................................................85
Aplikacja Tell a Friend ..........................................................................................................................87

Rozdzia 4. PHP a obsuga informacji......................................................................95


Podstawy................................................................................................................................................96
Znaki unikowe.................................................................................................................................96
czenie cigw znakowych...........................................................................................................97
Stosowanie zmiennych w cigach znakowych................................................................................98
Funkcje zwizane z cigami znakowymi ............................................................................................100
print() i echo() ...............................................................................................................................101
printf() i sprintf() ...........................................................................................................................101
urlencode().....................................................................................................................................104
explode()........................................................................................................................................105
implode() .......................................................................................................................................106
substr()...........................................................................................................................................107
strlen() ...........................................................................................................................................108
strstr() ............................................................................................................................................108
str_replace()...................................................................................................................................109
strtolower() oraz strtoupper() ........................................................................................................110
stripslashes()..................................................................................................................................111

Rozdzia 5. Szukajc wzorcw ................................................................................115


Proste dopasowywanie wzorcw.........................................................................................................116
Zaczynajc i koczc na................................................................................................................116
Znaki zastpcze .............................................................................................................................117
Ograniczenia..................................................................................................................................119
Dopasowywanie dowolnego znaku ...............................................................................................119
Kwantyfikacja sekwencji znakw .................................................................................................120
Zastosowanie OR ..........................................................................................................................120
Klasy znakowe i zakresy .....................................................................................................................121
Unikaj tego szalestwa!.................................................................................................................122
Funkcje PHP wykorzystujce wyraenia regularne ............................................................................125
ereg() oraz eregi()..........................................................................................................................125
ereg_replace() oraz eregi_replace()...............................................................................................126
split() oraz spliti()..........................................................................................................................127
Archiwum wiadomoci phpforflash.com ............................................................................................129

Rozdzia 6. Zapisywanie informacji o odwiedzajcych ........................................143


Cookies ................................................................................................................................................144
Restrykcje dotyczce cookies........................................................................................................145
PHP lubi ciasteczka... ..........................................................................................................................147
Tworzenie cookies.........................................................................................................................147
Najczstsze puapki .......................................................................................................................148
Kto zjad wszystkie ciasteczka?...........................................................................................................149
Czas istnienia cookies..........................................................................................................................151
Krtka historia time() ....................................................................................................................151
cieki i domeny cookies ..............................................................................................................155

Spis treci

Cookies i bezpieczestwo .............................................................................................................156


Flash Cookie Cutter .............................................................................................................................156
Dalsza rozbudowa .........................................................................................................................164

Rozdzia 7. Korzystamy z plikw zewntrznych ...................................................165


Otwieranie plikw ...............................................................................................................................167
Niektre akcje funkcji ...................................................................................................................169
Ostrzeenia ....................................................................................................................................170
Zamykanie plikw ...............................................................................................................................170
Wywietlanie pliku ..............................................................................................................................171
Odczyt z plikw...................................................................................................................................174
fread() ............................................................................................................................................174
fgetc() ............................................................................................................................................175
fgets() ............................................................................................................................................176
file() ...............................................................................................................................................177
Zapis do plikw ...................................................................................................................................179
Poruszanie si wewntrz plikw..........................................................................................................181
rewind() .........................................................................................................................................182
fseek()............................................................................................................................................182
ftell() oraz feof()............................................................................................................................184
Wicej uytecznych funkcji.................................................................................................................184

Rozdzia 8. Wprowadzenie do baz danych.............................................................199


Wprowadzenie do SQL .......................................................................................................................200
Relacyjne bazy danych..................................................................................................................200
Historia MySQL w skrcie ...........................................................................................................201
Teoria bazy danych .......................................................................................................................201
SQL na start!........................................................................................................................................202
Tworzenie bazy danych .......................................................................................................................203
Tworzenie tabeli ..................................................................................................................................204
Typy danych ..................................................................................................................................205
Usuwanie baz danych i tabel .........................................................................................................210
Manipulowanie bazami danych i tabelami ..........................................................................................211
INSERT .........................................................................................................................................211
REPLACE .....................................................................................................................................213
UPDATE .......................................................................................................................................214
DELETE........................................................................................................................................214
Przeszukiwanie baz danych i tabel ......................................................................................................215
SELECT ........................................................................................................................................215
Zawanie wyszukiwania..............................................................................................................216

Rozdzia 9. Integrowanie PHP z MySQL...............................................................219


Wsppraca PHP i MySQL..................................................................................................................220
Poczenie z serwerem MySQL ....................................................................................................220
Zamykanie poczenia z serwerem MySQL .................................................................................222
Wybieranie bazy danych ...............................................................................................................223
Tworzenie bazy danych z poziomu PHP.......................................................................................225
Usuwanie bazy danych..................................................................................................................227
Wykonywanie zapyta SQL poprzez PHP ..........................................................................................227
Modyfikowanie tabel: CREATE, DROP ......................................................................................228
Manipulowanie danymi: INSERT, PLACE, UPDATE, DELETE ...............................................231
Manipulowanie danymi: SELECT ................................................................................................233

Flash i PHP. Podstawy


Budowa systemu zarzdzania zawartoci archiwum .........................................................................235

Rozdzia 10. Przykad 1. ankieta........................................................................249


Od czego zacz tworzenie ankiety.....................................................................................................250
Ustalajc reguy.............................................................................................................................250
Najwaniejsze decyzje... ...............................................................................................................251
Okrelenie praw administratora.....................................................................................................252
Interfejs uytkownika ..........................................................................................................................252
Udoskonalanie za kulisami skrypty..........................................................................................253
Tworzenie aplikacji ankiety.................................................................................................................254
Wykorzystajmy moc PHP ...................................................................................................................265

Rozdzia 11. Przykad 2. terminarz ...................................................................277


Planujmy ..............................................................................................................................................278
Budowa czci PHP.............................................................................................................................291

Rozdzia 12. Przykad 3. forum..........................................................................303


Plan gwny .........................................................................................................................................304
Widok forum .................................................................................................................................305
Widok wtku .................................................................................................................................306
Otwieranie nowych wtkw..........................................................................................................307
Widok odpowiedzi ........................................................................................................................308
Rejestracja .....................................................................................................................................308
Projektowanie ukadu tabel..................................................................................................................309
Tabela: forumUsers .......................................................................................................................310
Tabela: forumThreads ...................................................................................................................310
Tabela: forumPosts........................................................................................................................310
Film Flasha: kilka przemyle.............................................................................................................311
Skrypty PHP ........................................................................................................................................328

Dodatek A Instalowanie PHP i MySQL .................................................................343


Instalowanie Apache i PHP w systemie Windows ..............................................................................343
Instalowanie serwera Apache Web Server w systemie Windows.................................................344
Instalowanie PHP na serwerze Apache dla Windows...................................................................348
Instalowanie Apache i PHP w systemie UNIX ...................................................................................351
Instalowanie Apache w systemie UNIX .......................................................................................352
Instalowanie PHP w systemie UNIX ............................................................................................354
Apache i PHP dla systemu Mac OS X ................................................................................................358
Instalowanie, konfigurowanie i uruchamianie MySQL w Win32.......................................................360
Instalowanie...................................................................................................................................360
Demon MySQL .............................................................................................................................360
Monitor MySQL............................................................................................................................362
Zabezpieczenie MySQL ................................................................................................................362

Dodatek B PHP i programowanie zorientowane obiektowo ................................363


OOP .....................................................................................................................................................363
OOP w przykadzie..............................................................................................................................364
Waciwoci...................................................................................................................................364
Metody ..........................................................................................................................................365

Spis treci

Tworzenie instancji .......................................................................................................................367


Konstruktory..................................................................................................................................368
Dziedziczenie ................................................................................................................................368
Koszyk w sklepie internetowym..........................................................................................................370

Dodatek C Zasoby ....................................................................................................383


Witryna WWW powicona ksice ...................................................................................................383
Strona Autora.......................................................................................................................................383
Witryny WWW producentw oprogramowania..................................................................................383
Dodatkowe narzdzia ..........................................................................................................................384
Edytory PHP ........................................................................................................................................384
Tablice ogoszeniowe i fora dyskusyjne zwizane z PHP...................................................................384
Zasoby PHP w sieci WWW.................................................................................................................384
Firmy hostingowe obsugujce PHP....................................................................................................385

Skorowidz .................................................................................................................387

W niniejszym rozdziale pokaemy, jak utworzy:


gwny plan zoonej aplikacji;
peny interfejs Flasha dla forum dyskusyjnego, umoliwiajcego uytkownikom
odczytywanie i publikowanie swoich wypowiedzi, odpowiadanie na istniejce wtki,
a nawet rejestrowanie si;
skrypty obsugujce wypowiedzi, wtki i proces rejestracji, przechowujce informacje
w bazie danych MySQL i, w razie potrzeby, ich odczytywanie.
Podczas tworzenia tych wszystkich, wspaniaych aplikacji Czytelnik by prawdopodobnie zbyt zajty, aby zauway, e nasza duga podr poprzez PHP dobiega koca.
Wspaniaym uwieczeniem nauki PHP bdzie utworzenie najbardziej uytecznej aplikacji systemu obsugi tablicy ogoszeniowej! Tak, oto nadszed czas na obiecane
forum Flasha.
Bdzie to bardzo istotny moment procesu zaznajamiania si z rnymi technikami. Wykorzystamy tu bowiem kilka zarwno rednich, jak i zaawansowanych technik ActionScript po stronie Flasha. Bdziemy jednak uwzgldnia dokadne wyjanienia dotyczce poszczeglnych technik i przyczyn ich zastosowania.
Zanim jednak zabierzemy si do pracy, trzeba omwi kilka koncepcji, ktre uwzgldnimy tworzc omawian aplikacj.
Wypowied
Wypowied jest pojedyncz wiadomoci umieszczan na tablicy.
Wtek
Wtek jest zbiorem wypowiedzi dotyczcych jednego tematu. Na przykad, jeli pojawi
si pytanie na temat redniej dugoci ycia map, ta wypowied oraz dotyczce jej
odpowiedzi utworz jeden wtek.
Wykorzystanie koncepcji wtkw umoliwia grupowanie wypowiedzi na jeden
temat i przedstawianie ich jako caej dyskusji.

304

Flash i PHP. Podstawy


Forum
Forum jest zbiorem wtkw. Niektre tablice mog zawiera wiele forw, z ktrych
kade dotyczy jednego tematu, grupujcego wiele wtkw. Tablica dyskusyjna, ktr
zbudujemy w tym rozdziale, bdzie obsugiwaa tylko jedno forum, a nasz przykad
pozwoli na omwienie sposobu tworzenia obydwch typw tablic dyskusyjnych.
Dwa w cenie jednego janiej powiedzie ju si nie da, nieprawda?

Po tych wstpnych rozwaaniach przyjrzyjmy si podstawowym etapom budowy aplikacji. Warto zwrci uwag, e wszystkie elementy s omawiane bez rozwaania sposobw implementacji, a zatem na tym etapie nie bdziemy si zastanawia, skd bd
pobierane dane, w jaki sposb i dokd. Jest to bardzo dobra metoda projektowania aplikacji, gdy pozwala na wykorzystanie innego oglnego projektu i zaimplementowanie
go za pomoc innych technik.
Poniej przedstawilimy list funkcji niezbdnych do prawidowego dziaania aplikacji.
odczytywanie listy wtkw na forum;
wywietlanie zawartoci forum;
wywietlanie listy wypowiedzi po wybraniu wtku przez uytkownika;
wywietlanie wtkw;
udostpnienie uytkownikowi przycisku umoliwiajcego powrt do widoku forum.
Ponadto trzeba zapewni moliwo rejestrowania nowych uytkownikw, a take zakadania nowych wtkw i odpowiadania na ju istniejce.

Plan gwny
Czas ponownie wzi do rk kartk papieru i piro i zastanowi si nad wygldem interfejsu uytkownika. Trzeba wzi pod uwag wszystkie etapy pracy aplikacji (wedug
powyszego opisu) i wszystkim powici naleyt uwag.

Rozdzia 12. K Przykad 3. forum

305

Z analizy listy etapw, sporzdzonej w poprzednim punkcie, wynika, e interfejs uytkownika musi si skada z piciu gwnych sekcji:
widok forum;
widok wtku;
nowa wypowied;
odpowied dla wypowiedzi;
rejestracja.
Omwimy teraz te sekcje po kolei.

Widok forum
Widok Forum View bdzie prezentowa list wtkw na danym forum. Oprcz wywietlania wtkw trzeba da uytkownikowi moliwo odwieania listy. W ten sposb uzyska on moliwo sprawdzania, czy pojawiy si nowe wtki. Naley take
umoliwi uytkownikowi tworzenie nowych wtkw, a take zapewni wygodny dostp do sekcji rejestracyjnej.
Oczywicie, atwo si zorientowa, co bdzie tu potrzebne, nieprawda? Potrzebny bdzie pasek przyciskw! Zajmie on niewielk cz u dou interfejsu i bdzie zawiera
przyciski pozwalajce sterowa wszystkimi funkcjami aplikacji.
Spjrzmy na uproszczony schemat...

Zawarto okna odpowiada dokadnie naszym wymaganiom.


Znaczn cz tej sekcji wypenia lista wtkw otwartych na forum. By moe wkrtce
nasze forum stanie si na tyle popularne, e wtkw na licie bdzie wicej, ni mona
wywietli w jednym oknie. Trzeba zatem uzupeni je przyciskami przewijania, umoliwiajcymi uytkownikowi przesuwanie listy. Naley to zaliczy do zada Flasha,
a zatem wrcimy do tego pniej.

306

Flash i PHP. Podstawy


Oczywicie, sposb prezentacji informacji zaley w zupenoci od twrcw aplikacji.
Sdzimy jednake, e najlepszym rozwizaniem bdzie wykorzystanie konwencjonalnego
ukadu forum. Po co wymyla koo na nowo, skoro mona od razu zacz je toczy?
Uyjemy wic takiego ukadu kolumn, jaki spotyka si na wikszoci forum: temat dyskusji, zaoyciel wtku, liczba wypowiedzi oraz data wysania ostatniej wiadomoci.
Przyjcie takiej konwencji uatwi wskazanie informacji, jakie trzeba bdzie przechowywa w bazie danych. Na naszej tablicy zastosujemy jeszcze jedno, standardowe rozwizanie: ostatnia przesana wypowied bdzie wywietlana jako pierwsza. Dziaanie
tej funkcji cakowicie zaley od sposobu przechowywania informacji w bazie danych
moemy zastosowa dowolny ukad ale na pierwszym etapie lepiej bdzie trzyma si konwencji. eby ama zasady, trzeba je najpierw pozna!
Warto zwrci uwag przynajmniej na jeden element: pasek przyciskw, z ktrego jestemy bardzo dumni. Bdzie on zawiera rne przyciski, w zalenoci od uruchomionej sekcji aplikacji. Na przykad, jeli uytkownik otworzy sekcj Post Reply (Wysyanie odpowiedzi), udostpnianie mu przycisku widoku forum nie miaoby sensu, gdy
aby wysa odpowied, naley najpierw wybra wtek. Jest to logiczne, ale bdzie stanowio o wikszej zoonoci gotowej aplikacji.

Widok wtku
Omwilimy Widok forum. Kolejnym widokiem jest Thread View widok wtku. Jego zadaniem bdzie wywietlanie listy wypowiedzi nalecych do wtku wybranego
przez uytkownika. Take w tym przypadku na pasku przyciskw pojawi si przyciski
udostpniajce funkcje konieczne dla tej sekcji.
Uwaamy, e widok wtku powinien mie podobn budow do widoku forum. Cakowita zmiana zaoe projektu mogaby wprowadzi zamt. Oto wstpny szkic:

W pewnym sensie tre tej tabeli odpowiada widokowi poprzedniej tabeli. Uwzgldniono tu jednak pojedyncze wypowiedzi dotyczce wybranego wtku. Lewa strona tabeli
podaje informacje o autorach i datach wysania poszczeglnych wypowiedzi. Po prawej
za stronie wywietlana jest pena tre kadej z nich.

Rozdzia 12. K Przykad 3. forum

307

Warto nadmieni, e w omawianym przykadzie przyjto konwencj wywietlania wtkw


w porzdku odwrotnie chronologicznym, oglnie akceptowany jest rwnie rzeczywisty
porzdek chronologiczny (zgodny z czasem pojawiania si kolejnych wypowiedzi).
Wywietlanie wypowiedzi w porzdku zgodnym z kolejnoci ich doczania umoliwia
uytkownikom przeledzenie przebiegu dyskusji.

Przycisk Refresh (Odwie) zosta zamieniony na przycisk Back (Wstecz), ktry bdzie
tu suy do przywracania widoku forum. Umiecimy tu take jeden przycisk dodatkowy Post Reply (Odpowiedz). Jeli uytkownik nacinie ten przycisk, bdzie mg
udzieli odpowiedzi na biecy wtek. Zwrmy uwag, e przycisk Post New jest dostpny przez cay czas, dziki czemu uytkownik nie bdzie musia wraca do widoku
forum, by otworzy nowy wtek. To si nazywa ergonomia!

Otwieranie nowych wtkw


Skoro ju wiemy, jak nasz tablic ogosze bd widzie jej uytkownicy, musimy zaprojektowa interfejs, ktry pozwoli im na zakadanie nowych wtkw.
W tym celu utworzymy we Flashu prosty formularz, wyposaony w uyteczne przyciski
na pasku. Nie ma tu niczego szczeglnego, co naleaoby objania w jaki specjalny
sposb. A zatem, przyjrzyjmy si naszemu projektowi.

Uwzgldnilimy tu wszystkie elementy formularza, potrzebne uytkownikowi do zaoenia nowego wtku na tablicy ogosze. Formularz ten zawiera najwaniejsze elementy wszystkich trzech gwnych tabel.
Przede wszystkim, umiecimy tu pola nazwy uytkownika i hasa, ktrych zadaniem
bdzie potwierdzanie zarejestrowania uytkownika. Informacje te bd porwnywane
z do danych zapisanych w pliku, co umoliwi potwierdzenie uprawnie danej osoby do
umieszczania wypowiedzi na tablicy.
Kolejne pola su do wpisywania tematu wtku oraz treci wypowiedzi. Jest oczywiste,
e oprcz zakadania wtku naley rwnie utworzy rozpoczynajc go wypowied.

308

Flash i PHP. Podstawy


Na powyszym szkicu widzimy rwnie przycisk Submit Thread (Przelij wtek) uruchamiajcy proces zamieszczania wtku, przycisk Cancel (Anuluj) na wypadek, gdyby
uytkownik zmieni zdanie oraz przycisk Register (Rejestruj), ktrym moe posuy
si uytkownik dotychczas nie zarejestrowany.

Widok odpowiedzi
Interfejs sekcji Post Reply jest niemal dokadnie taki sam, jak widok sekcji Post New.
Wynika to z koniecznoci dostarczenia w obydwch przypadkach tych samych, podstawowych informacji.

Jedyn zauwaaln rnic jest to, e temat wtku nie jest wywietlany w edytowalnym
polu tekstowym. Jeli uytkownik zdecyduje si odpowiedzie na wtek, powinien si
go trzyma! Jeeli natomiast zechce otworzy nowy, naley umoliwi mu przejcie do
odpowiedniego okna. Tytu wtku trzeba oznaczy w taki sposb, by kady zapominalski uytkownik pamita, na jaki temat si wypowiada!
Warto take zwrci uwag na zamian przycisku Submit Thread na przycisk Submit
Reply, z czym musi si wiza rwnie zastosowanie odpowiedniej akcji, umoliwiajcej wykonanie danej operacji.

Rejestracja
Sekcja Register naszej aplikacji bdzie sekcj umoliwiajc uytkownikom rejestrowanie si na tablicy ogosze. Absolutne minimum informacji, jakie musi obsugiwa, to:
nazwa uytkownika;
haso;
adres e-mail.
Mona by posun si dalej i dodawa kolejne elementy, ale tymczasem pozostamy
przy tych podstawowych. A zatem, spjrzmy na poniszy szkic:

Rozdzia 12. K Przykad 3. forum

309

Jak wida, ta sekcja naszej aplikacji wyglda do skromnie. Mona by uzupeni j


wieloma innymi elementami. Spord nich szczeglnie godnym polecenia pomysem
jest regulamin, ktry kady nowy uytkownik musiaby zaakceptowa, aby uzyska dostp do forum!

Projektowanie ukadu tabel


Mona powiedzie, e budowa interfejsu zostaa gruntownie przemylana. Na razie nie
musimy martwi si tym, czy cao naszej koncepcji bdzie funkcjonowaa poprawnie
i moemy przystpi do kodowania. Trzeba okreli rodzaje informacji, jakie bd
przechowywane. Aby wykorzysta swoje umiejtnoci w posugiwaniu si baz danych,
w celu przechowywania danych wykorzystamy MySQL.
A wic, jakie informacje powinnimy przechowywa? Oto ich lista:
Uytkownicy:
nazwa uytkownika;
haso;
tytu;
adres e-mail.
Wypowiedzi:
autor wypowiedzi;
tre wypowiedzi;
data utworzenia wypowiedzi.
Wtki:
temat wtku;
uytkownik otwierajcy wtek;

310

Flash i PHP. Podstawy


liczba odpowiedzi na pierwsz wypowied;
data utworzenia ostatniej wypowiedzi w wtku.
Tym razem bdziemy przechowywa znaczn ilo informacji, a zatem warto je rozdzieli i zachowa w logicznym ukadzie tabel (Users, Posts, Threads). Podajc tym
ladem, naley utworzy nastpujce tabele:

Tabela: forumUsers
Nazwa kolumny

Typ danych

Opis



Integer

Klucz gwny tabeli. Moemy j wykorzysta do odrbnego oznaczenia


kadego uytkownika.

 

String

Nazwa uytkownika.

 

String

Haso uytkownika.

 

String

Adres e-mail uytkownika.



String

Tytu uytkownika, na przykad   .

Tabela: forumThreads
Nazwa kolumny

Typ danych

Opis

 

Integer

Klucz gwny tabeli. Wykorzystamy j do oznaczania poszczeglnych


wtkw.



Integer

Identyfikator uytkownika, ktry utworzy wtek.




String

Temat wtku.




Integer

Liczba odpowiedzi na pocztkow wypowied.

 

Integer

Data opublikowania ostatniej wypowiedzi, zapisana w postaci


uniksowego znacznika czasu.

Nazwa kolumny

Typ danych

Opis



Integer

Klucza gwny tabeli. Wykorzystamy j do oznaczania poszczeglnych


wypowiedzi.

 

Integer

Identyfikator wtku, do ktrego naley wypowied.



Integer

Identyfikator uytkownika, ktry utworzy wypowied.



String

Zasadnicza tre wypowiedzi.



Integer

Data utworzenia wypowiedzi, zapisana w postaci uniksowego


znacznika czasu.

Tabela: forumPosts

Rozdzia 12. K Przykad 3. forum

311

Przygldajc si tym tabelom mona zauway, e s one midzy sob w pewien sposb powizane. Na przykad, w tabeli  wykorzystujemy klucz gwny tabeli

  (
 ) do identyfikacji wtku, do ktrego naley dana wypowied.
W tej samej tabeli   jest identyfikatorem autora wypowiedzi.
Wspomniane powizania (relacje) mona przedstawi za pomoc poniszego diagramu.

Film Flasha: kilka przemyle


Skoro wszystko ju zaplanowalimy, czas przystpi do tworzenia filmu Flasha, w ktrym odbywa si bdzie cae przedstawienie!
Film Flasha, ktry teraz opracujemy na potrzeby forum dyskusyjnego, bdzie nieco
bardziej skomplikowany, ni tworzone dotychczas. Wynika to z natury caego przedsiwzicia. To za oznacza, e kady etap pracy opatrzymy szczegowymi objanieniami, dziki ktrym Czytelnik nie powinien napotka wikszych trudnoci.
Nie naley poddawa si emocjom, a zatem musimy zachowa dyscyplin i przystpi
do przemylenia sposobu wizualnej reprezentacji listy wtkw na forum i listy wypowiedzi w wybranym wtku. Mona to rozwiza na wiele sposobw, ale najelegantsz
metod bdzie zastosowanie funkcji  
 , ktra pojawia si po raz pierwszy we
Flashu 5.
Dziaanie tej funkcji bdzie polegao na tworzeniu klonu klipu filmowego dla kadego
wywietlanego wtku lub wypowiedzi. Klon ten bdzie przechowywany w bibliotece.
Skadnia  
 wyglda nastpujco:
  
 


Funkcja ta bdzie doczaa klon klipu filmowego z biblioteki, opatrzonego identyfikatorem    , do klipu   . Nowy klon    bdzie nosi nazw    ,
za zadaniem argumentu 
jest wyznaczanie poziomu klipu.
Waciwo 
 jest bardzo uytecznym, wartym uwagi narzdziem Flasha. W razie
utworzenia kilku klonw klipu filmowego na tym samym poziomie starszy z nich bdzie
zastpowany przez nowszy klony nie mog zajmowa tego samego poziomu!
Zapamitanie tej zasady pomoe Czytelnikowi unikn problemw w przyszoci!

Gdy spotkalimy si z funkcj  


 po raz pierwszy, sdzilimy, e jako argument    wystarczy wskaza nazw klipu filmowego (ktr definiuje si w oknie
dialogowym waciwoci symbolu). Jake si mylilimy! Prawda jest taka, e trzeba tu

312

Flash i PHP. Podstawy


wej w nowy, ekscytujcy obszar Flasha, zwany przyczaniem symboli. Jeli Czytelnik pogubi si w powyszych przemyleniach, niech pozwoli sobie wytumaczy
pewne istotne sprawy.
Zazwyczaj jeli klip filmowy znajduje si w bibliotece, ale nie jest wykorzystywany
w pliku Flasha, wwczas nie zostaje rwnie wczony do pliku SWF, powstajcego
podczas publikacji filmu. Jednake, Flash 5 pozwala na wskazanie klipw, ktre naley
wyeksportowa bez wzgldu na to, czy zostay wykorzystane w filmie, czy te nie. To
wanie t technik nazywa si przyczaniem symboli.
Aby przyczy dany klip do filmu, naley wskaza jego identyfikator:

Poprzez ten identyfikator mona odwoywa si, zapisujc funkcj  


 . Czy teraz ju Czytelnik rozumie powysze rozwaania?
Nie bdziemy zajmowa si teraz mechanizmem tworzenia list wtkw i wypowiedzi
wrcimy do tego w odpowiedniej sekcji. Trzeba jednak mie na uwadze fakt, e bdziemy z tej techniki korzysta w naszym filmie, a zatem warto przygotowa si do tego przed przystpieniem do rzeczywistego dziaania.
Interesujce jest, e tworzenie list wtkw i wypowiedzi w ten sposb otwiera kolejne
zagadnienie jeli liczba wtkw uniemoliwi jednorazowe ich wywietlenie, to czy
ta lista nie przykryje naszego starannie zaprojektowanego okna?
Odpowied brzmi tak, e mogaby... ale tylko jeli jej na to pozwolimy. W tej sytuacji
wykorzystamy pusty klip filmowy (ktry nazwiemy tem canvas), na ktry naoymy
(za pomoc funkcji  
 ) klip wtku bd wypowiedzi, w zalenoci od rodzaju
widoku. Nastpnie wystarczy jedynie zamaskowa to w taki sposb, by widoczna bya
tylko dana cz.

Rozdzia 12. K Przykad 3. forum

313

Spjrzmy na poniszy rysunek, przedstawiajcy t ide:

Z powyszego wynika, e jeli wysoko ta jest wiksza od wysokoci obszaru widzialnego (czyli maski), to nie jest wywietlane w caoci. Aby przesun widok w d
w celu obejrzenia dolnej czci ta, naley zmniejszy warto waciwoci  klipu
filmowego, a dolna krawd ta znajdzie si w obszarze wywietlania.
Jest to do prosty proces, wymagajcy nie wicej ni dwch linii kodu ActionScript.

Budowa forum we Flashu


Jeli ju zakoczylimy etap drapania si po gowie, moemy swoje palce skierowa ku
klawiaturze. Tak, nadszed czas na opracowanie gwnego pliku Flasha. Oczywicie,
zawsze istnieje moliwo napotkania rnych problemw ale przynajmniej moemy
teraz przystpi do pracy z wiksz pewnoci!
Zamy, e Czytelnik ju dokadnie wie o co chodzi. A zatem:
1. W aplikacji tej wykorzystamy dobrze nam znany detektor  , w zwizku
z czym cay interfejs uytkownika znajdzie si w klipie filmowym.
Utwrz wic klip filmowy, nadaj mu odpowiedni nazw, a nastpnie kliknij
przycisk OK.

2. Teraz utwrz struktur warstw i uj klipu filmowego. Cho jest ona do rozbudowana,
trzeba zachowa moliwo identyfikowania poszczeglnych, zaprojektowanych
wczeniej, sekcji za pomoc etykiet uj.

314

Flash i PHP. Podstawy

3. Jak zwykle, na warstwie Window BG umie to aplikacji.

4. Na warstwie Section Items umie nasz ulubion animacj zegara, dajc


uytkownikowi sygna o tym, e trwa adowanie danych.

5. Ostatnim elementem sekcji Load Forum jest kod ActionScript na warstwie Actions.
Kod ten bdzie wywoywa skrypt PHP wczytujcy list wtkw na forum. Ponadto
zdefiniujemy funkcj, ktr bdziemy wykorzystywa w caym filmie.
 !" "  #!$%
" # &'(
 ) * +,---------
." /0 "1"
2 !"0#"3  0 3 
  4$5 3  

65  ) 
.!" 0 "  !1
3   !!/  "



To bdzie wszystko do momentu wczytania forum. Mwic najprociej, za pomoc


powyszego kodu tworzymy losow liczb, dopisywan do adresu URL skryptu PHP.
W ten sposb przegldarka nie bdzie wywietlaa kopii pliku zapisanej w pamici
podrcznej. Powody takiego postpowania opisano w rozdziale 1.

Rozdzia 12. K Przykad 3. forum

315

Losow liczb naley dopisa na kocu czci WTN w wywoaniu funkcji     


odwoujcej si do pliku viewforum.php (o ktrym pomwimy za chwil). Nastpnie
trzeba zatrzyma odtwarzanie klipu filmowego do chwili ukoczenia wczytywania
informacji. Do ponownego uruchomienia odtwarzania wykorzystamy detektor
 , umieszczony na kocu sekcji.
6. Koczc opracowywanie tego ujcia, zdefiniuj funkcj pobierajc pojedynczy
argument (
 ) i wywoujc skrypt viewthread.php, przekazujc jej
identyfikator wtku.
+++++++++++++++78&) 9)2::';++++++++++++++++++
+  
+< 0 #1! 1= "  "31   
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
3    >
 !" "  #!$%
" # &'(
 ) * +,---------
< 0 " #1
  4$5  

6 *5   5?5  ) 
 
!1 "!/  "
   @
5(    5
A

Naley zwrci uwag na ponowne zastosowanie sztuczki z zastosowaniem liczby


losowej, co zapobiega wykorzystywaniu bufora przegldarki jest to jedna z tych
rzeczy, dziki ktrym ycie programisty staje si prostsze!

7. Nastpnie naley spowodowa wznowienie odtwarzania klipu i zatrzymanie w ujciu


Load Thread. Zatem jeli klip filmowy podejmie prac (po wczytaniu wszystkich
danych), uytkownik przechodzi do widoku wtku Thread View.
8. Przyjrzyj si ujciu Forum View. Tutaj po raz pierwszy umieszczamy pasek przyciskw
na warstwie Button Bar.

Kod ActionScript dla poszczeglnych przyciskw wyglda nastpujco:


Refresh
>
   "5(  8  5
A

Post New
>
   "5 ) 5
A

Register
>
   "5'5
A

316

Flash i PHP. Podstawy


To cakiem proste definicje w nawiasach daj pewno, e przejcie nastpi
do waciwego ujcia listwy czasowej.
9. Teraz trzeba utworzy to, na ktrej bdziemy umieszcza doczane klipy filmowe.
Jak mwilimy wczeniej, to jest po prostu pustym klipem filmowym. Zatem utwrz
je, naciskajc przyciski Ctrl+F8. Nadaj nowemu klipowi nazw Canvas i nacinij
przycisk OK.

Po utworzeniu klipu wr do listwy czasowej klipu filmowego Message Board Panel.


10. Upewnij si, e w ujciu Forum View jest wybrana warstwa Canvas, a nastpnie
przecignij nowo powstay klip Canvas z biblioteki do sceny. Klip ten jest pusty,
zatem po przecigniciu bdzie mia posta maego, biaego kka. Wybierz to
kko i umie je w okolicach lewego grnego naronika gwnej sekcji klipu
filmowego.

Upewnij si, e klon klipu Canvas jest wci wybrany, i nadaj mu nazw, poprzez ktr
bdzie mona odwoywa si do niego z ActionScript.

Zaproponowalimy nazw forumCanvas, gdy potrzebne bd dwa klony klipu


Canvas: jeden dla ujcia widoku forum Forum View, drugi za dla ujcia widoku
wtku Thread View.
11. Skopiuj i wklej ten klon na warstw Canvas w ujciu Thread View i zmie nazw
kopii na forumCanvas.

Rozdzia 12. K Przykad 3. forum

317

12. Nastpnie naley utworzy mask na warstwie Canvas Mask. Pozwoli ona (mwilimy
o tym wczeniej) na ukrycie tej czci klipu Canvas, ktrej nie chcemy wywietla.
Upewnij si, e jest wybrana warstwa Canvas Mask, wybierz kolor kontrastujcy
(wybr ten jest cakowicie dowolny) z kolorem warstwy Window BG, po czym
narysuj duy prostokt, niemal w caoci pokrywajcy gwny obszar aplikacji.

13. Po wykonaniu czynnoci wymienionych w poprzednim punkcie, wybierz warstw


jako mask. W tym celu kliknij prawym przyciskiem myszy nazw warstwy
(lub w razie korzystania z komputera Macintosh kliknij przytrzymujc wcinity
klawisz Ctrl) i wybierz opcj Mask (Maska).

Maska zniknie wraz z tem, a ich warstwy zostan zablokowane. Jeli zajdzie potrzeba
uaktywnienia warstw, uyj ich ikon.
14. Przed wykonaniem kolejnych czynnoci trzeba skonstruowa klip filmowy, ktry
bdzie doczany do forumCanvas. Posuy on do wywietlania listy wtkw. Aby
wykona to zadanie, konieczne jest utworzenie trzech klipw filmowych o dokadnie
takiej samej szerokoci, z punktem rodkowym umieszczonym w lewym grnym
naroniku.
Nagwek Forum
15. Najpierw wykonamy klip, ktry bdzie stanowi nagwek forum, czyli Forum Header.
Jego jedyn funkcj jest wywietlanie nazw kolumn w widoku Forum View, ale bdzie
rwnie stanowi wizualne zwieczenie listy wtkw. Utwrz wic klip podobny
do pokazanego poniej i nadaj mu nazw Forum Header.

318

Flash i PHP. Podstawy


Zwr uwag, e rodkowy punkt klipu znajduje si w jego lewym grnym naroniku.
Wie si to z metod, ktr zastosujemy podczas tworzenia widoku Foum View.
A zatem upewnij si, e punkt ten znajduje si we waciwym miejscu.
Stopka widoku forum
16. Klip ten bdzie peni rol atrakcyjnej wizualnie, dolnej krawdzi listy wtkw.
W ten sposb lista ta nie bdzie ucita na ostatniej pozycji. Utwrz zatem klip
filmowy, taki jak zaprezentowany poniej, i nadaj mu nazw Forum Footer.

Forum Thread
17. Jest to gwny klip, ktry wielokrotnie bdziemy docza do ta, prezentujc
wszystkie wtki na forum. Bdzie nam potrzebny niewidoczny przycisk, ktry
utworzylimy w poprzednim przykadzie. A zatem mona go stamtd pobra.
Zacznij od utworzenia ta i linii reprezentujcych kolumny. Najlepiej bdzie skopiowa
cao z klipu Forum Header, dziki czemu bd zachowane stae szerokoci kolumn.

18. Nastpnie utwrz pola tekstowe, ktrych zadaniem bdzie wywietlanie informacji
o wtkach:

19. Na koniec dodaj niewidoczny przycisk, przykrywajc nim cay obszar wtku.
Pozwoli to uytkownikom na otwieranie wybranych wtkw poprzez ich kliknicie.

Rozdzia 12. K Przykad 3. forum

319

20. Trzeba te przypisa przyciskowi nastpujcy kod:


>
B
B
 * 
B
B

*

B
B
   
A

Sekcja B
B
 jest konieczna ze wzgldu na zagniedenie tego klipu wewntrz
klipu filmowego Canvas, ktry z kolei zagnie,dzimy wewntrz klipu Message Board
Panel, do listwy czasowej ktrego chcemy si odwoywa.

A wic za pomoc powyszego kodu utworzymy dwie zmienne na listwie czasowej


klipu filmowego Message Board Panel, po czym wywoamy funkcj  
  ,
ktr utworzylimy wczeniej cakiem pomysowo, nieprawda?
Po utworzeniu wszystkich potrzebnych klipw filmowych trzeba zmieni ich
waciwo Symbol Linkage, dziki czemu zostan one wyeksportowane wraz
z klipem w trakcie publikacji.
21. Kliknij prawym przyciskiem myszy kolejno kady z klipw filmowych: Forum
Header, Forum Footer oraz Forum Thread i wybierz opcj Linkage z menu
kontekstowego. Zaznacz przecznik Export this symbol (Wyeksportuj ten symbol),
a nastpnie wpisz identyfikatory:
Forum Header;
Forum Footer;
Forum Thread.
22. Mona teraz powrci na warstw Section Items klipu Forum View i uzupeni j
przyciskami przewijania. Do przyciskw tych naley przypisa nastpujcy kod:
Przewijanie do gry
>
33  B"CB,D->
3  B"E*F-
A
A

Przewijanie w d
>
33  B"E3  BG,,->
3  B"H*F-
A
A

Pozwoli to na przewijanie ta i przegldanie wtkw niemieszczcych si w oknie.


23. Dochodzimy teraz do najistotniejszego fragmentu kodu ActionScript na warstwie
Actions, w ujciu Forum View. To waciwie ten kod bdzie tworzy widok Forum
View, na podstawie zmiennych przekazywanych przez skrypt PHP.

320

Flash i PHP. Podstawy


Najpierw ukryj to, aby uytkownik nie widzia budowanej listy wtkw:
&1"  "/ 3 
3  B$*3

24. Nastpnie, za pomoc  


 , docz klon klipu Forum Header do klipu
forumCanvas.
 /#! "/I 11
 / ""/
3   58  2 55 5FJJ

25. Punkty rodkowe klonw doczanych za pomoc funkcji  


 s zawsze
ustawiane w pozycji (!"!) klipu filmowego. Naley sprawdzi wysoko ta, gdy
umieszczajc kolejny klip bdziemy musieli zna warto . Jeli odejmiemy jeden
od wysokoci nagwka forum, bdziemy mieli pewno, e po doczeniu nastpnego
klonu nie bd pojawiay si przerwy.
&  "! #= !##
1 !!%

1
3  
KL*3   BM,

26. Nastpnie odczytujemy za pomoc ptli kolejne wtki zwracane przez skrypt PHP,
doczajc klon klipu filmowego Forum Thread i odpowiednio ustawiajc pozycj (#").
1N   #1! I  
!!1"
2
3  *- C   EE>
 /#! "1
3 " #1 /
3   58    55 5   
& " 
I/!% OL 1
3   #1
3  75 5  ;BK*-
3  75 5  ;B"*KL

27. Nastpnie pobieramy wszystkie elementy wtku i kopiujemy je do utworzonego przed


chwil klonu $%
 . W ten sposb wypenimy pola tekstowe i ustawimy kilka
niewidocznych zmiennych, na przykad 
 .
& "!!I/" #1
3  75 5  ; *75 5   55;
3  75 5  ;
*75 5   5
5;
3  75 5  ;
@*75 5  
5
@5;
3  75 5  ;
*75 5   5'
5;
3  75 5  ; *75 5   5( 5;

28. Na koniec naley uaktualni zmienn  #&, dodajc do jej wartoci wysoko nowo
doczonego klonu klipu filmowego i wyznaczajc w ten sposb pozycj kolejnego
klonu.
P 0"1
 !! "N
N0 $
KLE*3  75 5  ;BM,
A

29. Po przetworzeniu wszystkich wtkw naley umieci klon klipu Forum Footer
na samym dole listy wtkw.
 /#! " /
1% !!00
!"0#
3   58  8 553 5 
3  3 BK*KO
3  3 B"*KL

Rozdzia 12. K Przykad 3. forum

321

30. Teraz mona wywietli to i zatrzyma w tym miejscu klip filmowy.


."=  "/  #1
3  B$*
.!" 0 "1
3 "



31. Kolejne ujcie, Load Thread, jest niemal takie samo, jak ujcie Load Forum. Naley
jedynie uwzgldni niewielk rnic w zapisie kodu ActionScript na warstwie Actions:
.!" 0 "1
3 "



Poniewa funkcja adujca wtek zostaa zapisana wczeniej, teraz wystarczy


zatrzyma wykonywanie klipu.
32. Ujcie widoku wtku Thread View jest bardzo podobne do ujcia widoku Forum View,
a klip filmowy threadCanvas znajduje si ju na warstwie Canvas.
Przed wpisaniem kodu ActionScript trzeba doda jeden przycisk. Z wczeniej
opracowanych szkicw wynika, e w ujciu tym naley uwzgldni przycisk
odpowiedzi Post Reply. Do ujcia naley zatem przypisa taki oto kod ActionScript:
>
   "5 '
"5
A

Przycisk ten powoduje jedynie przejcie do odpowiedniej sekcji klipu filmowego.


33. Nastpnie utwrz klipy filmowe, ktre bd doczane do threadCanvas w celu
uformowania listy wypowiedzi. Take i w tym przypadku potrzebne bd trzy klipy
wszystkie o tej samej szerokoci i z punktem rodkowym pooonym w lewym
grnym naroniku.
Nagwek wtku
34. Pierwszym na licie klipem filmowym jest nagwek wtku, Thread Header. Rni
si on nieco w stosunku do klipu Forum Header, gdy obejmuje jedynie dwie kolumny,
a widoczne na nim pole tekstowe posuy do wywietlania tematu wtku. Rwnie
w tym przypadku klip bdzie peni rol ozdobnej, grnej krawdzi. Utwrz wic
klip filmowy, podobny do pokazanego poniej, i nadaj mu nazw Thread Header.

Take tutaj naley zwrci uwag na umieszczenie punktu rodkowego klipu w jego
lewym grnym naroniku. Konieczno ta wynika z metody zastosowanej do budowy
widoku Thread View. Naley wic upewni si, e punkt rodkowy zosta umiejscowiony
w odpowiednim miejscu.

322

Flash i PHP. Podstawy


Stopka wtku
35. Take ten klip bdzie peni funkcj estetyczn. Jego jedynym zadaniem bdzie
utworzenie ozdobnej, dolnej krawdzi, wywietlanej tu poniej ostatniej wypowiedzi
w wtku. Utwrz klip podobny do zaprezentowanego poniej i nadaj mu nazw
Thread Footer.

Widok wypowiedzi
36. Jest to klip, na ktry bdzie oddziaywaa funkcja  
 , rozcigajc go ponad
ca powierzchni ta. W ten sposb bd wywietlane wszystkie wypowiedzi
wybranego wtku. Najpierw utwrz to oraz linie wyznaczajce kolumny. Zalecamy
w tym celu skopiowanie klipu filmowego Thread Header, co zapewni kolumnom
jednakow szeroko.

37. Nastpnie umie pola tekstowe, ktre bd wywietlay informacje o wypowiedzi.

38. Na koniec dodaj przyciski przewijania, pozwalajce uytkownikowi przewija tre


wiadomoci.

Rozdzia 12. K Przykad 3. forum

323

39. Do przyciskw przypisz nastpujcy kod ActionScript:


Przewijanie do gry
>
  EE
A

Przewijanie w d
>
  HH
A

Po utworzeniu wszystkich klipw filmowych trzeba dokona ustawie ich waciwoci


Symbol Linkage, co zapewni ich wyeksportowanie wraz z klipem nadrzdnym.
Kliknij prawym przyciskiem myszy kolejno kady z klipw: Thread Header, Thread
Footer oraz Forum Post i wybierz opcj Linkage. Zaznacz take przecznik Export
this symbol i wprowad nastpujce identyfikatory:
Thread Header;
Thread Footer;
Forum Post.
40. Teraz trzeba dopisa kod ActionScript na warstwie Actions. Jest on podobny do kodu
wpisanego w poprzednim przypadku i zosta bogato opatrzony komentarzami. W razie
ewentualnych wtpliwoci wr do sekcji Forum View.
&1"  "/  #1
 B$*3
 /! "1
/I 1 / ""/
  5  2 55 5FJJ
  
*

&  "! #= !##
1 !!1 0
1
3  
KL*  BM,
1N 0 "
 !  #1
3  *- C
  EE>
 /#! "1
3 " "
 ! /
  5   55
5   
& " 
I/!% OL1
 "
 !
 75 5  ;BK*-
 75 5  ;B"*KL
& "!!I/" "
 !
 75
5  ; *75
5   5 5;
 75
5  ; *75
5  
 5& 5;
 75
5  ; *5  Q5 75
5  
 55;
 75
5  ; *75
5   55;

324

Flash i PHP. Podstawy


P 0"1
 !! "N
N0$N#
KLE* 75
5  ;BM,
A
 0 " /
1% "
!"0%
  5  8 553 5 
 3 BK*-
 3 BL*KL
."=  "/  #1
 B$*
.!" 0 "1
3 "



Ostatni szlif forum we Flashu


Musimy jeszcze wykona zaledwie kilka elementw! Pierwszym z nich jest sekcja tworzenia nowych wypowiedzi, Post New. Bdzie to miejsce powstawania nowych wtkw
a przynajmniej miejsce, w ktrym uyjemy PHP do tworzenia nowych wtkw. Sekcja ta bdzie stanowi co wicej, ni prosty formularz Flasha, gdy zostanie wyposaona w jeden lub dwa dodatkowe przyciski.
1. Utwrz pola tekstowe na warstwie Section Items. Poniszy rysunek moe posuy
jako wzorzec.

2. Dodaj przyciski przewijania pola treci wypowiedzi i docz do nich kod ActionScript:
Przewijanie w gr
>
  EE
A

Rozdzia 12. K Przykad 3. forum

325

Przewijanie w d
>
  HH
A

3. Utwrz take przyciski na warstwie Button Bar.

4. Nie zapomnij o zapisaniu ich kodu.


@$  
>
  4$5
 

559@ 5
   "5(  8  5
A

>
   "5(  8  5
A

Skrypt dla tego ujcia, na warstwie Actions, zawiera jedynie akcj .
5. Ujcie Post Reply jest niemal takie samo, jak w poprzednim przypadku. Rnica
polega na tym, e pole tekstowe Thread Title nie jest edytowalne, a zamiast przycisku
Submit Thread pojawia si przycisk Submit Reply.

Kod ActionScript dla przyciskw wyglda nastpujco:


@$ '
"
>
  4$5

"

559@ 5
   "5(    5
A

>
   "5(    5
A

326

Flash i PHP. Podstawy


6. Po przejciu do ujcia Register znw naley utworzy prosty formularz, zaprezentowany
na poniszym rysunku:

7. Zmianie ulega take zestaw przyciskw na warstwie Button Bar: naley tu umieci
jedynie dwa przyciski, Register oraz Cancel.

Oto kod dla przycisku Register:


>
3 **55RR
  **55RR
  F**55RR **55>
 *5     5
   "5: 5
A>
3
  S*
  F>
 *5     5
   "5: 5
A>
  4$5

559@ 5
   "5(  8  5
A
A
A

Zadaniem tego kodu jest kontrola wypenienia wymaganych elementw formularza.


Jeli nie zostan one wypenione, kod wysya komunikat o bdzie i powoduje
przejcie do ujcia Error.
Jeeli wymagane pola zostan wypenione, nastpuje sprawdzenie, czy obydwa hasa
s takie same. Jest to mechanizm bezpieczestwa, ktry pozwala upewni si,
e uytkownik nie dokona omykowego wpisu. Poniewa popenienie takiego samego
bdu dwukrotnie jest mao prawdopodobne, rozwizanie to stanowi doskonay sposb
wyapywania bdw.
Jeli jednak wszystko przebiegnie poprawnie, kod wywouje skrypt register.php
i powraca do ujcia Load Forum.
Przycisk Cancel suy do bezporedniego przechodzenia do widoku forum.
>
   "5(  8  5
A

Rozdzia 12. K Przykad 3. forum

327

8. Take w tym przypadku na warstwie Actions naley zapisa jedynie akcj .
9. Ostatnim ujciem, ktre naley opracowa, jest ujcie Error. Zawiera ono bdzie
jedno pole tekstowe oraz jeden przycisk.

Jedynym istotnym elementem tego ujcia jest kod ActionScript przypisany


do przycisku Back i zapisany na warstwie Button Bar. Powoduje on bezporednie
przejcie do widoku forum do tego miejsca, w ktrym pojawiy si problemy!
>
   "5(  8  5
A

Jeszcze ostatnia uwaga! Kod ActionScript na warstwie Actions po raz kolejny zawiera
wycznie akcj .
Teraz trzeba przecign kopi klipu filmowego Message Board Panel z biblioteki
do sceny gwnej i przypisa do niego poniszy kod ActionScript, co zapewni obsug
wprowadzanych danych:

: >
T=
0
!$/
"=
3**591"5>
! ! " %
010

"
A>
.
! " ! "=  "3  0% $/% !
   "5: 5
A
A

328

Flash i PHP. Podstawy

Skrypty PHP
W tej sekcji utworzymy skrypty PHP, ktre bd dziaay za kulisami interfejsu stworzonego za pomoc Flasha.
Tym razem trzeba przygotowa siedem skryptw, ale przed tym zadaniem powinnimy
przypomnie sobie o dobrych zwyczajach i powici chwil czasu na omwienie zamierzonych celw.
Oto lista skryptw, ktre przygotujemy:
common.php
Skrypt ten bdzie zawiera informacje konfiguracyjne oraz wsplne funkcje,
wykorzystywane przez pozostae skrypty.
setup.php
Przed rozpoczciem opracowywania aplikacji trzeba si upewni, e odpowiednia
baza danych istnieje (a jeli tak nie jest, to j utworzy), po czym zdefiniowa
wymagane przez aplikacj tabele. Takie bdzie zadanie tego skryptu.
viewforum.php
Ten skrypt posuy przede wszystkim do odczytywania listy wtkw na forum, ktra
bdzie wywietlana we Flashu.
viewthread.php
Skrypt podobny do skryptu viewforum.php. Posuy on do odczytywania wypowiedzi
w wybranym wtku.
postnew.php
Jeli uytkownik zechce utworzy nowy wtek, potrzebny bdzie skrypt przetwarzajcy
dane. Zadaniem tego skryptu bdzie obsuga zamieszczania nowych wtkw.
postreply.php
Ten skrypt jest podobny do poprzedniego. Bdzie on obsugiwa odpowiedzi
na istniejce wtki.
register.php
Trzeba take zadba o umoliwienie uytkownikom rejestracji, koniecznej dla
uzyskania dostpu do funkcji umieszczania wypowiedzi na forum. Skrypt ten
umoliwi przeprowadzanie takiej wanie rejestracji.
Warto zwrci uwag na fakt, e wszystkie te skrypty s funkcjonalnie wyspecjalizowane.
Mona by utworzy dwa lub trzy skrypty, ktre peniyby te same zadania. Jednake tworzenie maych, wyspecjalizowanych skryptw zapewnia im wiksz elastyczno i zrozumiao. Oznacza to rwnie uniknicie wykonywania na serwerze zbdnych funkcji.
A wic, czas na PHP!

Rozdzia 12. K Przykad 3. forum

329

Skrypt common.php
Podobnie jak w przypadku poprzednich, wieloskryptowych aplikacji, tak i tutaj wszelkie szczegy dotyczce bazy danych oraz funkcje oglnego zastosowania bdziemy
przechowywa w pojedynczym pliku. Plik ten bdzie doczany do pozostaych skryptw za pomoc funkcji  .
1. Pierwsza cz tego skryptu bdzie dokadnie taka sama, jak w poprzednich
przypadkach. Ograniczymy si zatem jedynie do przedstawienia jej listingu jednake
skrypt zosta opatrzony komentarzami, a pene objanienia mona znale, w razie
potrzeby, w rozdziale 10.
C6
 


@ "UQ8  H8   23 8


@!!I/"$!" "
V $2 *5  5
V $&*5!"1 15
V $*5 5
V $) *5

3 35
810 
I
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++810Q $ ++
++9
Q."= 
/#!!$!# " !++
++
0 "$$!" "++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3  $ >
 %
 ! " $"
 $V $2 
 $V $&
 $V $
 $V $) 
9 
/#!!  $!" "
V1*W "XB V $2 V $&V $
T=  
/#!
 / %
3SV1>
3  0 "8 $/% !
!! "1"

35  Y   $5
A
."$ "$!% "T=% 
 !
3SW "XBB $V $) >
3  0 "8 $/% !
!! "1"

35  Y3  $V $) 5
A
V1
A

330

Flash i PHP. Podstawy


+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++810Q3++
++ "QV H3  0 $/% !N"1 1++
++9
Q'
03  0 $/% !! ++
++!
   3 8
!!1"
++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3 3V >
3  0 $/% !1 &'(
V * V 
."=  "3  0% $/% !
!! "1"


5?*8?  *V 5
K
A

2. Uwzgldniajc potrzeby naszego forum do skryptu dodalimy jedn funkcj jej


zadaniem bdzie weryfikacja nazwy uytkownika i hasa oraz porwnywanie ich
z danymi zapisanymi w bazie danych. Zapisz zatem t funkcj w skrypcie.
3 V V
  >

Z powyszego wynika, e funkcja ta nosi nazw 


, a przekazywa jej bdziemy
argumenty    i   , ktre naley podda weryfikacji.
3. Teraz trzeba przeprowadzi szyfrowanie wpisanego hasa. Jest to potrzebny zabieg,
gdy hasa bd przechowywane w bazie danych w postaci zaszyfrowanej. Zatem
aby porwna haso podane przez uytkownika z hasem zapisanym w bazie, naley
je zaszyfrowa.
@!"30 "/
V"
* JV
  

Funkcja  ' wykorzystuje algorytm, zwany mieszaniem md5, ktrego dziaaniu


mona poddawa cigi znakw. W ten sposb mona otrzyma unikatow,
zaszyfrowan wersj oryginalnego cigu znakw.
4. Po zaszyfrowaniu hasa naley uy zapytania sprawdzajcego, czy ktrykolwiek
element tabeli (  pasuje do podanych informacji.
VX"*5@:(: 8'93  &.2:': *YV Y)
 
  *YV"
Y5

5. Nastpnie trzeba wykona zapytanie. Naley take podda sprawdzeniu warto


zwracan przez funkcj ))  , ktra dostarczy informacji o odnalezieniu
pasujcego do siebie zestawu nazwy uytkownika i hasa. Jeli taki zestaw zostanie
odnaleziony, ze zwrconych wynikw zostanie wydzielony identyfikator  .
Jeeli jednak obecno takiego zestawu nie zostanie stwierdzona, *  przyjmie
warto +,, co bdzie wiadczyo o braku autoryzacji uytkownika.
."1 0 "!
"
V* "XBX"VX"
T=
 1! /!! "
3 "XB B V**,>
&!"10 " "31 N"1 1! "1I
V* "XB3B"V
V*V7YY;

Rozdzia 12. K Przykad 3. forum

331

A>
.
! " !  "! %N"1 1H,
V*H,
A

6. Na koniec funkcja zwraca warto zmiennej *  i przekazuje j funkcji


wywoujcej.
Z  " "31 N"1 1
V
A
6G

7. Ponadto zastosujemy tu funkcj umoliwiajc weryfikowanie poprawnoci adresu


e-mail. Wykorzystamy w tym celu skomplikowane wyraenie regularne, ktre,
na szczcie, omawialimy ju w rozdziale 5.
3 1: V 
>
30 " "N
VK
*5[7BH!-H\H;E]7BH!-H\H;E+W7H!-H\H;E]7H!-H\H;E+
 ]7H!;>FUAV5
3VK
V >

A

>
3
A
A

Mwic najprociej, funkcja ta zwraca warto  , jeli podany adres e-mail bdzie
poprawnie sformuowany. W przeciwnym razie jest zwracana warto   .

Skrypt setup.php
Nastpnym opracowywanym skryptem bdzie skrypt przygotowawczy, sucy do tworzenia struktury bazy danych i tabel dla naszej aplikacji. Take i w tym przypadku tre
skryptu bdzie bardzo podobna do tego, ktry wykorzystywalimy w poprzednim przykadzie. Jedyn rnic jest to, e teraz naley przygotowa trzy tabele zamiast jednej.
Jeli poniszy kod bdzie wymaga dodatkowych wyjanie, znajduj si one w sekcji
opisujcej skrypt przygotowawczy w rozdziale 10.
C6




@ "UH8   23 8


 /#! "
11 3"0"
 Y 

Y
9  "
/#!!  $!" "
1*W "XB V $2 V $&V $

332

Flash i PHP. Podstawy


T  
/#!
 / %
3SV1>
3  0 "N"1 1 $/% !
!! "1"


5  Y   $5
K
A
 !" "$!% "

5
  $V $) C$G]5
3SW "XBB $V $) >
3  0 "N"1 1 $/% !

5^  Y $C$G]5
A>
3  0 "N"1 1 
!

5^$ 3"C$G]5
A
."$ "$!% "

5
  $V $) C$G]5
3SW "XBB $V $) >
3  0 "N"1 1 $/%!
!! "1"


5^  Y $C$G]5
K
A>
3  0 "N"1 1 
!

5^$ 3"C$G]5
A

5
 $C$G]5
 !" "$%N"1 1I
VX"*5': : _(:3  &
) :`:'& 9B)'::) ''LP:L
 4'2'F-

  4'2'D-
4'2'U-
 4'2'FJJ5
V*W "XBX"VX"
3SV>
3  0 "N"1 1  "#
$/% 

5^: 3  &$C$G]5

 "XB 
A>
3  0 "N"1 1 
!

5^3  &$ C$G]5
A
 !" "$% #1I
VX"*5': : _(:3   
 ) :`:'& 9B)'::) ''LP:L
) :`:'

4'2',--

) :`:':8&( -
 ) :`:'5

Rozdzia 12. K Przykad 3. forum

333

V*W "XBX"VX"
3SV>
3  0 "N"1 1 $/% !

5^: 3   $C$G]5

 "XB 
A>
3  0 "N"1 1 
!

5^3   $ C$G]5
A
 !" "$% "
 !
VX"*5': : _(:3   

) :`:'& 9B)'::) ''LP:L
 ) :`:'
) :`:'
 :& :O 

 ) :`:'5
V*W "XBX"VX"
3SV>
3  0 "N"1 1 $/% !

5^: 3   $C$G]5

 "XB 
A>
3  0 "N"1 1 
!

5^3   $ C$G]5
A

5:  3
5
6G

Skrypt viewforum.php
Teraz opracujemy bardziej zagmatwane skrypty PHP. Skrypt viewforum.php posuy do
odczytywania wszystkich wtkw na forum wywietlanym we Flashu.
Teraz kiedy Czytelnicy stali si ju znawcami PHP, powinni umie wskaza fragmenty,
z ktrymi ju mieli okazj si zetkn. Z tego te powodu nie bdziemy szeroko komentowa zagadnie, ktre ju omawialimy. Ograniczymy si do skrtowych objanie dotyczcych przeznaczenia poszczeglnych fragmentw kodu.
1. Jak zwykle, rozpocznij zapisywanie skryptu od okrelenia zaadowania pliku
konfiguracyjnego, nawizania poczenia z serwerem bazy danych oraz wybrania
bazy dla aplikacji.
C6
 3  


@ "UQ8  H8   23 8


 /#! "
11 3"0"
 Y 

Y

334

Flash i PHP. Podstawy


9  "
/#!!$!# "
V1* $ 

2. Nastpnie zbuduj zapytanie odczytujce wszystkie wtki na forum. Zwr uwag, e


stosujemy tu klauzul -..%/&, ktra ma zapewni wywietlanie wtkw w kolejnoci
odwrotnie chronologicznej.
_ 0 "!
" !"0#3 
VX"*5@:(: +8'93   9':'_L :@5

3. Kolejn operacj bdzie wykonanie zapytania i, w razie niepowodzenia, wywietlenie


komunikatu o bdzie.
."1 0 "!
"
V* "XBX"VX"
T= "1 !
"
 / %
3SV>
3  0 "N"1 1 $/% !
!! "1"

35  Y 3  $5
A

Jeli operacja przebiegnie poprawnie, odczytana bdzie liczba wtkw na forum.


Posuy do tego funkcja ). Warto tu sobie przypomnie tre rozdziau 9.,
gdzie mwilimy, e funkcja ta zwraca liczb elementw w zbiorze wynikw,
co poprzedza wykonanie polecenia 01 .
@
 ! "!$% #1I 3 
V  * "XB B V

4. Nastpnie liczba wtkw dopisywana jest do pierwszej zmiennej, zwracanej do Flasha.


Zwr uwag, e dodajemy teraz tylko t warto przed otrzymaniem kocowego
wyniku dodamy do zmiennej dalsze wartoci!
 !" "! #
! 0## "1
V 
*5  *V  5

5. Nastpnie naley uruchomi ptl , przetwarzajc kolejne wtki zwracane przez
polecenie 01 .
1N  ! I   #1
3 V *-V CV  V EE
>

6. Ptla ta odczytuje, za pomoc funkcji ) 


  , kolejne wtki ze zbioru
wynikw MySQL zawartych w tablicy.
Tablic t wykorzystamy do utworzenia kilku zmiennych o opisowych nazwach.
Przeprowadzimy tu usuwanie ukonikw ze wszystkich elementw, ktre tego
wymagaj. Dodatkowo, za pomoc funkcji  , dokonamy konwersji uniksowych
znacznikw czasu reprezentujcych daty i godziny utworzenia poszczeglnych wtkw.
9!" 0 "!$!" "!!I/" "
 !
V * "XB3B"V
V *V 7Y Y;
V*V 7YY;
V
*
V 7Y
Y;
V
*V 7Y
Y;
V *3 5a a a"a2Qa5V 7Y Y;

Rozdzia 12. K Przykad 3. forum

335

7. Kolejny fragment moe wyglda nieco dziwnie, ale jest to jedynie wykonanie
kolejnego zapytania. Zapytanie to bdzie odczytywao nazw uytkownika, ktry
utworzy biecy wtek. Naley w tym celu wykona odrbne zapytanie, gdy
w tabeli 
  przechowywany jest tylko identyfikator  . Warto ta
posuy do wybrania odpowiedniego uytkownika z tabeli ( .
_ 0 "  "!
" !"0#! %N"1 1
1I" !"/ " #1
VX"*5@:(:  8'93  &.2:':*V5
VF*W "XBX"VX"
9!" 0 "! "1I 3  0 N"1 1
V*W "XB3B"VF
V *V7Y Y;

8. Nastpnie trzeba dopisa szczegy kadego wtku do zmiennej *, przygotowujc


je w ten sposb do przesania do filmu Flasha. Warto teraz przypomnie sobie
rozwaania prowadzone w chwili, gdy powstawa kod ActionScript dla ujcia Forum
View filmu Flasha. Dyskutowalimy wtedy na temat formatu, jaki naleaoby nada
wynikom zwracanym przez skrypt, aby umoliwi efektywn obsug informacje
we Flashu. W poniszym fragmencie kodu uwzgldnilimy ten wanie format!

0 "!!I/" #1  "1
V 
*5? 5V 5*5V 
V 
*5? 5V 5
*5 V

V 
*5? 5V 5
@*5 V 
V 
*5? 5V 5'
*5V

V 
*5? 5V 5( *5V 
A

9. Skrypt koczy si przesaniem zachowanych wynikw z powrotem do Flasha. Ponadto


dodamy zmienn, przesyajc do Flasha informacj o powodzeniu operacji, po czym
nastpi zamknicie poczenia z serwerem MySQL.
."=  " !"1 #1 0 " #
 V 

3  0 "8 
!

5?*91"5
Z "1 "
/#!!  $!" "
"XB V1
6G

Skrypt viewthread.php
Teraz przedstawimy sposb tworzenia skryptu, ktry bdzie suy do odczytywania
wszystkich wypowiedzi wybranego wtku. Jego wywoanie nastpi, jeli uytkownik
kliknie jeden z wtkw wywietlonych w widoku Forum View.
Take i w tym przypadku wiksza cz kodu powinna by Czytelnikowi znana, a zatem bdzie on omwiony do oglnie. Szerszych objanie mona jednak poszuka
w poprzednich rozdziaach niniejszej ksiki!

336

Flash i PHP. Podstawy


1. Tak jak dotychczas, pisanie skryptu rozpocznij od okrelenia zaadowania pliku
konfiguracyjnego, otwarcia poczenia z serwerem i wybrania bazy danych dla
aplikacji. Zagadnienie to powinno by ju dobrze znane wszystkim Czytelnikom.
C6
  


@ "UQ8  H8   23 8


 /#! "
11 3"0"
 Y 

Y
9  "
/#!!$!# "
V1* $ 

2. Kolejn operacj jest zbudowanie zapytania odczytujcego wszystkie wypowiedzi


w wybranym wtku (identyfikowanym przez zmienn *
 , przekazywanej
z filmu Flasha) i zwracajcego je do Flasha.
_ 0 "!
" !"0# #1
VX"*5@:(: +8'93   .2:': *V 9':'_L
 @5

3. Nastpnie trzeba wykona zapytanie i w razie niepowodzenia wygenerowa komunikat


o bdzie.
."1 0 "!
"
V*W "XBX"VX"
T= "1 !
"
 / %
3SV>
3  0 "8 $/% !
!! "1"

35  Y3
3  $5
A

4. Jeeli wszystko si powiedzie, funkcja ) odczyta liczb wypowiedzi


w wybranym wtku.
@
 ! "!$% "
 ! "  #1
V
 *W "XB B V

5. Nastpnie liczba wypowiedzi jest zapisywana w pierwszej zmiennej odsyanej


do Flasha.
!"  0 "! #
! 0## "1
V 
*5?
 *V
 5

6. Dalej pojawia ptla , przetwarzajca kolejne wypowiedzi zwracane przez polecenie
01 .
1N 0! I 0 "
 !
3 V *-V CV
 V EE>

7. Pierwsz czynnoci, jak naley wykona w ptli, jest zastosowanie funkcji )
 
   do odczytania kolejnej wypowiedzi ze zbioru wynikw MySQL
i zwrcenie jej w postaci tablicy.
&!"10 "!$!" "!!I/" "
 !
V
* "XB3B"V
V*V
7YY;
V *
V
7Y Y;
V
 *3 5a a a"a2Qa5V
7Y
 Y;

Rozdzia 12. K Przykad 3. forum

337

Jeszcze raz tworzymy odpowiednie zmienne. Operacja ta obejmuje usunicie


ukonikw ze wszystkich wymagajcych tego elementw oraz konwersj uniksowych
znacznikw czasowych za pomoc funkcji  .
8. Kolejny fragment mona sobie przypomnie z poprzedniego skryptu. Suy on
do odczytywania szczegw dotyczcych uytkownika, ktry przesa wypowied.
W tym celu wykorzystano zmienn * , przechowywan wraz z biec
wypowiedzi w .
_ 0 "  "!
" !"0#! %
"/N"1 11I" !"/ "
 b
VX"*5@:(:  8'93  &.2:':*V5
VF*W "XBX"VX"
9!" 0 "! "13  0% N"1 1
V*W "XB3B"VF
V *V7Y Y;
V *V7YY;

9. Teraz naley doda uzyskane szczegy do zmiennej *, przygotowujc j


w ten sposb do odesania do filmu Flasha.

0 "!!I/" "
 !  "1
V 
*5?
5V 5 *5 V 
V 
*5?
5V 5*5 V
 
V 
*5?
5V 5& *5 V 
V 
*5?
5V 5*5 V 
A

10. Na koniec zachowane wyniki s odsyane do Flasha. Ponadto dodajemy zmienn,


przesyajc do filmu Flasha informacj o powodzeniu operacji. Ostatnim zabiegiem
jest zamknicie poczenia z serwerem MySQL.
."=  " !"1 "
 ! 0 " #
 V 

3  0 "8 
!

5?*91"5
Z "1 "
/#!!  $!" "
"XB V1
6G

Skrypt postnew.php
Po opracowaniu skryptw pracujcych po wizualnej stronie dziaania aplikacji naley
utworzy skrypty, ktre umoliwi nam dopisywanie i manipulacje danymi.
Pierwszym z nich jest postnew.php. Jego zadaniem jest wsppraca z sekcj Post New
filmu Flasha w celu umoliwienia tworzenia i umieszczania nowych wtkw na forum.
1. Zapewne wszyscy Czytelnicy rozpoznaj pierwszy fragment kodu! A zatem, czymy
swoj powinno...

338

Flash i PHP. Podstawy


C6

 


@ "UQ8  H8   23 8


 /#! "
11 3"0"
 Y 

Y
9  "
/#!!$!# "
V1* $ 

Warto si zastanowi, jak czsto trzeba by wpisywa kod poczenia z baz danych,
gdyby nie utworzony wczeniej plik common.php!

2. Po otwarciu poczenia z baz danych mona zastosowa funkcj 


, zapisan
podczas tworzenia pliku common.php, w celu porwnania informacji przekazanych
przez film Flasha z danymi uytkownika i w ten sposb dokonania autoryzacji.
 "!0 %
N"1 1 $!" "
V*V V
  

Przypomnijmy, e jeli wspomniana funkcja znajdzie zgodno podanych informacji


z zawartymi w bazie danymi, zwraca identyfikator . W przeciwnym razie funkcja
zwraca warto M,...

3. Sprawdzajc t warto mona stwierdzi, czy weryfikacja uytkownika przebiega


pomylnie. Jeeli podane przez niego informacje nie zostan dopasowane do zawartoci
bazy danych, do Flasha trafi komunikat o bdzie i nastpi opuszczenie skryptu.
T= "!0
 /%
3V**H,>
3  0 "8 $/% !
!! "1"

35    
  5
A

4. Nastpnie naley odczyta czas biecy, zapisany w postaci uniksowego znacznika


czasowego, stosowanego w zapytaniach badajcych dat i godzin utworzenia nowego
wtku i wypowiedzi.
9 !"0 "!$N#"
V
 * 

5. Teraz utwrz pierwsze z dwch, koniecznych w tym skrypcie, zapyta. Posuy ono
do tworzenia nowych wtkw.
_ 0 "  "!
"  0# " #1
VX"*5)@:' ) 93   
 4(&:@V
YV
YV
 5

Nastpnie naley uruchomi zapytanie. Jeli operacja nie powiedzie si, wtek nie
zostanie utworzony. W takiej sytuacji do Flasha trafi komunikat o bdzie i nastpi
wyjcie ze skryptu.
3S "XBX"VX">
35:  5
A

Rozdzia 12. K Przykad 3. forum

339

6. Kolejnym elementem jest funkcja zwizana z MySQL, ktrej dotychczas nie


omawialimy, przede wszystkim dlatego, e dotd nie znalelimy dla niej
odpowiedniego zastosowania. Funkcja )  jest do precyzyjnym
narzdziem. Zwraca ona ostatni liczb typu integer, wygenerowan dla kolumny
wskazanej jako 2( -. , podczas poczenia z biec baz danych.
9 !"0 " "31     #1
V * "XBB 

W omawianym przypadku kolumn tabeli 


  oznaczon atrybutem 2( -
. jest kolumna 
 . Funkcja )  jest uruchamiana po
pomylnym wprowadzeniu nowego wtku (zgodnie z powyszym opisem), co pozwoli
na uycie *
  w momencie dodawania nowej wypowiedzi do nowego wtku
(czym zajmiemy za chwil).
7. Czas na zbudowanie zapytania dopisujcego now wypowied do tabeli .
Do powizania tej nowej wypowiedzi z nowo utworzonym wtkiem wykorzystujemy
warto *
  uzyskan dziki funkcji )  w poprzedniej sekcji.
_ 0 "  "!
"  0# # "
 b
VX"*5)@:' ) 93     
 
4(&:@V VYV YV
 5

8. Dalej naley wykona zapytanie. Jeli operacja ta nie powiedzie si, bdzie to
rwnoznaczne z niemonoci dodania nowej wypowiedzi. Wtedy naley przesa
do Flasha informacj o niepowodzeniu i wyj ze skryptu.
3S "XBX"VX">
35: 
5
A

9. Skrypt naley zakoczy przesaniem do Flasha informacji o powodzeniu operacji


i zamkniciem poczenia z baz danych MySQL.
3  0 "8 
!

5?*91"5
Z "1 "
/#!!  $!" "
"XB V1
6G

No c, opracowalimy ju pi skryptw, a dwa s jeszcze wci przed nami. Niektre


skrypty prawdopodobnie nie sprawiaj Czytelnikom ju adnych trudnoci.

Skrypt postreply.php
Ten skrypt bdzie obsugiwa wszystkie dania dopisania odpowiedzi do istniejcego
wtku. Jego dziaanie bdzie bardzo podobne do postnew.php, a to dlatego, e obydwa
su do umieszczania wypowiedzi na forum! Gwna rnica polega na tym, e zadaniem tego skryptu jest uaktualnianie wiersza w tabeli 
 , a nie tworzenie nowego. Jest logiczne, e aby odpowiedzie na wtek, musi on ju istnie!

340

Flash i PHP. Podstawy


1. Zacznij od starych, dobrych znajomych elementw skryptu.
C6


"


@ "UQ8  H8   23 8


 /#! "
11 3"0"
 Y 

Y
9  "
/#!!$!# "
V1* $ 
 "!0N"1 1
V*V V
  
T= "!0
 /%
3V**H,>
3  0 "8
!! "1"

35    
  5
A

Po otwarciu poczenia z baz danych nastpuje weryfikacja informacji uytkownika


dostarczonych z Flasha poprzez porwnanie ich z danymi zarejestrowanego
uytkownika. Suy do tego funkcja 
. Jeli weryfikacja przebiegnie niepomylnie,
przesyamy do Flasha odpowiedni informacj, a nastpnie opuszczamy skrypt!
2. Nastpnie odczytujemy biecy czas w postaci uniksowego znacznika czasu.
9 !"0 "!$N#"
V
 * 

3. Nastpnie tworzymy zapytanie, ktre posuy do dopisania nowej wypowiedzi


do tabeli  lub, w razie koniecznoci, do wygenerowania komunikatu
o bdzie. Jest to dokadnie ten sam kod, co w poprzednim skrypcie, z t tylko rnic,
e tym razem zmienna *
  jest dostarczana przez film Flasha.
_ 0 "  "!
"  0# # "
 b
VX"*5)@:' ) 93     
 
4(&:@V VYV YV
 5
3S "XBX"VX">
35:  5
A

4. Nastpnie naley utworzy i uruchomi zapytanie uaktualniajce dane w tabeli



  dotyczce wtku wskazanego przez *
 . Mwic najprociej,
polega to na dodaniu wartoci 1 do liczby odpowiedzi na wtek i uaktualnieniu
znacznika czasowego  .
_ 0 "  "!
"10#!$% "
 !  #1
VX"*5& :3   @: 
*
E, *V
 .2:':
 *V 5
3S "XBX"VX">
35:  5
A

5. Na zakoczenie skryptu przesyamy do Flasha informacj o powodzeniu operacji


i zamykamy poczenie z baz danych MySQL.

Rozdzia 12. K Przykad 3. forum

341

3  0 "8 


!

5?*91"5
Z "1 "
/#!!  $!" "
"XB V1
6G

Zosta nam jeszcze tylko jeden skrypt...

Skrypt register.php
C6



@ "UQ8  H8   23 8


 /#! "
11 3"0"
 Y 

Y
9  "
/#!!$!# "
V1* $ 

1. Nastpny fragment skryptu suy do ustanawiania tytuu, ktry bdzie nadawany


nowym, rejestrujcym si uytkownikom. Tytu uytkownika pojawia si bdzie
poniej jego nazwy, w widoku wtku Thread View i, oglnie rzecz biorc, jest
on przeznaczony do identyfikacji statusu uytkownika. My ograniczylimy si
do jednego tytuu dla wszystkich uytkownikw, oprcz utworzonego wczeniej
konta administratorskiego. Istnieje jednak zawsze moliwo zmiany zasad wedle
yczenia projektanta aplikacji!
& ""/  "N"1 1I
V*5 T15

Wr do miejsca, w ktrym zapisywalimy funkcj 


w skrypcie common.php.
Mwilimy tam o tym, e hasa uytkownikw bd przechowywane w bazie danych
w postaci zaszyfrowanej. Zastosujemy tu znowu funkcj mieszania  ', gdy jest
ona prosta w uyciu i zapewnia skuteczne i jednoznaczne szyfrowanie.
Dlatego te najpierw musimy zaszyfrowa haso dostarczone skryptowi przez film
Flasha.
@!"30 "/
V"
* JV
  

Nastpnie za pomoc funkcji 


3  ze skryptu common.php sprawdzamy
poprawno podanego adresu e-mail.
T= H 0

 "
3S1: V >
3  0 "8 $/% !
!! "1"

35   5
A

2. Nastpnie trzeba si upewni, e podana nazwa uytkownika nie figuruje w tabeli


( . Jeli taka sama nazwa zostanie tam odnaleziona, naley przesa do Flasha
raport o bdzie i wyj ze skryptu!

342

Flash i PHP. Podstawy


_ 0 "!
" "!10# 
1" I H ! N"1 1I
VX"*5@:(: +8'93  &.2:': *YV Y5
3S "XBX"VX">
35  Y $3  
5
A
T=
 1! /!! "
3 "XB B VX"S*->
3  0 "8 $/% !
!! "1"
S
35& V  " 5
A

3. Kolejnym elementem jest zapytanie wprowadzajce nowego uytkownika do tabeli


( . Zwr uwag na zastosowanie * zamiast *  , co pozwala
na zachowanie zaszyfrowanej wersji oryginalnego hasa, a poniewa w dalszym
cigu jest to cig znakw, naley uj go w apostrofy!
_ 0 "!
" 0#  N"1 1
VX"*5)@:' ) 93  & 
   4(&:@
YV YYV"
YYVYYV Y5
3S "XBX"VX">
35& V  "K5
A

4. Na koniec naley wysa do Flasha raport o powodzeniu operacji i zamkn poczenie


z serwerem bazy danych.
3  0 "8 
!

5?*91"5
Z "1 "
/#!!  $!" "
"XB V1
6G

To wszystko niezbdne skrypty s ju gotowe i teraz naley przesa je na serwer, po


czym uruchomi.

You might also like