Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00255 005405 13644880 na godz. na dobę w sumie
Adobe Flash i PHP. Biblia - ebook/pdf
Adobe Flash i PHP. Biblia - ebook/pdf
Autor: Liczba stron: 496
Wydawca: Helion Język publikacji: polski
ISBN: 978-83-246-8398-7 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> webmasterstwo >> php - programowanie
Porównaj ceny (książka, ebook (-40%), audiobook).

Kompendium wiedzy na temat PHP i Flasha!

Technologie Flash i PHP znane są ze swoich możliwości tworzenia dynamicznych rozwiązań. Flash po stronie klienta, PHP po stronie serwera. Mieszanka Flasha i PHP musi być wybuchowa. I tak właśnie jest! To połączenie powoduje eksplozję nowych możliwości, które wykorzystasz na Twoich stronach WWW. Teraz atrakcyjne i dynamiczne rozwiązania są w zasięgu Twoich rąk.

Jednak pojawia się pytanie: 'Jak zapanować nad tym duetem?'. Książka 'Adobe Flash i PHP. Biblia' stanowi kompletne źródło informacji na ten temat. Dzięki niej poznasz podstawy technologii Flash i PHP, a także sposoby używania bazy danych MySQL oraz weryfikacji połączenia Flash - PHP. Ponadto nauczysz się obsługiwać dane w różnych formatach, tworzyć formularze, wykorzystywać ciasteczka oraz stosować dodatkowe biblioteki. Zdobędziesz również wiedzę na temat korzystania z gniazd, gwarancji bezpieczeństwa aplikacji oraz tworzenia rozbudowanych serwisów WWW. Książka ta zasłuży z pewnością na uznanie specjalistów w tej dziedzinie, jednak i dla początkujących będzie ona stanowiła świetny podręcznik do nauki tych technologii.

Twórz dynamiczne i atrakcyjne wizualnie strony WWW!

Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

Adobe Flash i PHP. Biblia Autor: Matthew Keefe T³umaczenie: Pawe³ Jab³oñski ISBN: 83-7197-641-0 Tytu³ orygina³u: Flash and PHP Bible Format: 172×245, stron: 496 Kompendium wiedzy na temat PHP i Flasha! (cid:129) Wykorzystaj bazê danych MySQL (cid:129) Po³¹cz PHP i Flasha! (cid:129) Twórz wydajne i profesjonalne aplikacje Technologie Flash i PHP znane s¹ ze swoich mo¿liwoœci tworzenia dynamicznych rozwi¹zañ. Flash po stronie klienta, PHP po stronie serwera. Mieszanka Flasha i PHP musi byæ wybuchowa. I tak w³aœnie jest! To po³¹czenie powoduje eksplozjê nowych mo¿liwoœci, które wykorzystasz na Twoich stronach WWW. Teraz atrakcyjne i dynamiczne rozwi¹zania s¹ w zasiêgu Twoich r¹k. Jednak pojawia siê pytanie: „Jak zapanowaæ nad tym duetem?”. Ksi¹¿ka „Adobe Flash i PHP. Biblia” stanowi kompletne Ÿród³o informacji na ten temat. Dziêki niej poznasz podstawy technologii Flash i PHP, a tak¿e sposoby u¿ywania bazy danych MySQL oraz weryfikacji po³¹czenia Flash – PHP. Ponadto nauczysz siê obs³ugiwaæ dane w ró¿nych formatach, tworzyæ formularze, wykorzystywaæ ciasteczka oraz stosowaæ dodatkowe biblioteki. Zdobêdziesz równie¿ wiedzê na temat korzystania z gniazd, gwarancji bezpieczeñstwa aplikacji oraz tworzenia rozbudowanych serwisów WWW. Ksi¹¿ka ta zas³u¿y z pewnoœci¹ na uznanie specjalistów w tej dziedzinie, jednak i dla pocz¹tkuj¹cych bêdzie ona stanowi³a œwietny podrêcznik do nauki tych technologii. (cid:129) Instalacja serwera Apache (cid:129) Instalacja bazy danych MySQL oraz PHP (cid:129) Konfiguracja œrodowiska pracy (cid:129) Podstawy PHP (cid:129) Zasady pracy w œrodowisku Flash (cid:129) Nawi¹zanie po³¹czenia pomiêdzy PHP i Flashem (cid:129) Obs³uga danych w formacie XML i nie tylko (cid:129) Projektowanie i tworzenie formularzy (cid:129) Bezpieczeñstwo pobieranych danych (cid:129) Wykorzystanie gniazd (cid:129) Rozszerzenia do Flasha i PHP (cid:129) Programowanie obiektowe (cid:129) Debugowanie i sposoby rozwi¹zywania najpopularniejszych problemów (cid:129) Optymalizacja i zapewnienie wydajnoœci tworzonym aplikacjom (cid:129) Projektowanie i tworzenie prostych oraz rozbudowanych aplikacji Twórz dynamiczne i atrakcyjne wizualnie strony WWW! Spis treħci O autorze ......................................................................................................... 13 Przedmowa ...................................................................................................... 15 Wprowadzenie ................................................................................................. 17 Czúħè I Zacznijmy od podstaw ...................................................... 19 Rozdziađ 1. Rozpoczynamy pracú z Flashem i PHP .......................................... 21 Instalacja Apache na serwerze WWW ................................................................................................21 Instalacja Apache w systemie Windows .......................................................................................22 Instalacja serwera Apache w systemie UNIX ...............................................................................27 Zmiana ustawieĔ Apache pod Windowsem i UNIX-em ...............................................................31 Instalacja MySQL-a ............................................................................................................................32 Instalacja serwera MySQL w systemie Windows .........................................................................32 Instalacja serwera MySQL w systemie UNIX ..............................................................................42 Zabezpieczamy serwer MySQL ....................................................................................................44 Konfiguracja PHP na serwerze stron WWW ......................................................................................45 Instalacja PHP w systemie Windows ............................................................................................45 Instalacja PHP w systemie UNIX .................................................................................................50 Podsumowanie ....................................................................................................................................51 Rozdziađ 2. Poznajemy Flasha i PHP ................................................................. 53 Czym jest serwer WWW .....................................................................................................................53 Pliki .htaccess ...............................................................................................................................53 Ochrona danych ............................................................................................................................54 Zbieramy informacje o Apache ....................................................................................................56 Korzystanie z wáasnych dokumentów z komunikatami o báĊdach ................................................58 Poznajemy podstawy PHP ..................................................................................................................63 Czym są zmienne? ........................................................................................................................63 Funkcje .........................................................................................................................................65 Czym są konstrukcje sterujące? ....................................................................................................66 Mechanizm sprawdzania typów w PHP ........................................................................................71 Podstawy MySQL-a ............................................................................................................................72 Stosowanie wyraĪeĔ .....................................................................................................................73 Warunki ........................................................................................................................................74 8 Adobe Flash i PHP. Biblia Poznajemy Flasha ...............................................................................................................................75 Zintegrowane Ğrodowisko deweloperskie Flasha ................................................................................75 Inne edytory ........................................................................................................................................77 Urządzenia z obsáugą Flasha .........................................................................................................77 IdĨmy dalej ...................................................................................................................................77 Podsumowanie ....................................................................................................................................77 Rozdziađ 3. Nawiæzujemy pođæczenie ............................................................... 79 Poznajemy sposoby komunikowania siĊ we Flashu ............................................................................79 Sprawdzanie stanu PHP ................................................................................................................80 Rodzaje komunikacji ....................................................................................................................81 Z poziomu Flasha komunikujemy siĊ z PHP ......................................................................................84 Z poziomu PHP áączymy siĊ z MySQL-em ........................................................................................88 Sprawdzamy stan serwera MySQL ...............................................................................................88 àączymy siĊ z serwerem MySQL .................................................................................................90 àączymy wszystko w caáoĞü .........................................................................................................92 Podsumowanie ....................................................................................................................................99 Rozdziađ 4. Obsđuga danych ............................................................................ 101 àadowanie danych we Flashu ...........................................................................................................101 Klasy, z których korzystamy w czasie áadowania danych ..........................................................102 Podsumowanie ............................................................................................................................103 Obsáuga pobranych danych ...............................................................................................................104 àadowanie jednokierunkowe ......................................................................................................105 àadowanie dwukierunkowe ........................................................................................................105 àadowanie dokumentu XML we Flashu ...........................................................................................106 Korzystanie z XML-a w PHP ...........................................................................................................108 àadowanie dokumentu XML ......................................................................................................108 Przesyáanie dokumentu XML .....................................................................................................109 àadowanie obrazów za pomocą PHP ................................................................................................111 Uruchomienie programu áadującego obrazy ...............................................................................112 Podsumowanie ..................................................................................................................................114 Rozdziađ 5. Interakcja z uľytkownikiem ........................................................ 115 Tworzenie formularzy we Flashu ......................................................................................................115 Tworzymy formularz kontaktowy .....................................................................................................116 Wywoáanie skryptu PHP .............................................................................................................118 Funkcje obsáugi zdarzeĔ związane z formularzem kontaktowym ...............................................119 Wysyáanie maili w PHP ..............................................................................................................121 Moduá logowania we Flashu .............................................................................................................122 Szkielet kodu ..............................................................................................................................122 Procedury obsáugi zdarzeĔ w module logowania ........................................................................123 Integracja moduáu logowania z serwerem ...................................................................................125 Podsumowanie ..................................................................................................................................126 Rozdziađ 6. Obsđuga ciasteczek ....................................................................... 127 àadowanie ciasteczek .......................................................................................................................127 Obsáuga ciasteczek w PHP ..........................................................................................................127 Obsáuga ciasteczek we Flashu ....................................................................................................131 Poznajemy zalety korzystania z ciasteczek w PHP .....................................................................135 Podsumowanie ..................................................................................................................................138 Spis treħci 9 Czúħè II Tworzymy zawartoħè interaktywnæ ............................. 139 Rozdziađ 7. Jak dbaè o bezpieczeēstwo w trakcie pobierania danych od uľytkownika? ......................... 141 PodchodĨmy z ostroĪnoĞcią do danych pochodzących od uĪytkownika ...........................................142 Bezpieczne pobieranie plików ....................................................................................................142 Sprawdzanie poprawnoĞci wprowadzanych danych ...................................................................145 Oczyszczanie danych pochodzących od uĪytkownika ......................................................................146 Oczyszczanie danych ..................................................................................................................147 WáaĞciwy sposób oczyszczania danych w formacie HTML .......................................................149 Przechowywanie danych ...................................................................................................................150 Bezpieczne zapisywanie do pliku ...............................................................................................150 Tworzenie i zapisywanie bezpiecznego hasáa przy uĪyciu PHP ......................................................154 Zwracanie danych .............................................................................................................................156 Bezpieczne zwracanie danych ....................................................................................................156 Bezpieczniejsze sposoby zwracania danych ...............................................................................157 Czym jest obszar izolowany zabezpieczeĔ aplikacji we Flashu? ......................................................158 Ustawianie typu obszaru izolowanego ........................................................................................159 Korzystanie z wáasnoĞci sandboxType .......................................................................................159 OkreĞlanie bieĪącego obszaru izolowanego ................................................................................160 Zabezpieczenie aplikacji przed wspóádzieleniem .......................................................................165 Podsumowanie ..................................................................................................................................165 Rozdziađ 8. Uľycie gniazd ................................................................................ 167 Czym są gniazda? .............................................................................................................................167 BezpieczeĔstwo w komunikacji za poĞrednictwem gniazd .........................................................168 Implementacja serwera opartego na gniazdach ...........................................................................168 Czym jest poáączenie oparte na gniazdach ..................................................................................168 Obsáuga gniazd w PHP .....................................................................................................................169 Sprawdzamy, czy dysponujemy wersją interpretera PHP uruchamianą z wiersza poleceĔ .........169 Piszemy serwer oparty na gniazdach ..........................................................................................170 Testujemy nasz serwer ................................................................................................................172 Jak utworzyü stale dziaáający serwer oparty na gniazdach? ........................................................174 Obsáuga gniazd we Flashu ................................................................................................................175 Inicjalizacja poáączenia ...............................................................................................................176 Funkcje obsáugi zdarzeĔ .............................................................................................................176 Poáączenia zdalne ........................................................................................................................178 Korzystamy z klasy do obsáugi komunikacji opartej na gniazdach .............................................179 Piszemy we Flashu i PHP klienta czata opartego na gniazdach ........................................................181 Serwer w PHP obsáugujący klienty czata ....................................................................................181 àączymy siĊ z serwerem .............................................................................................................189 Piszemy klienta we Flashu ..........................................................................................................190 Podsumowanie ..................................................................................................................................199 Czúħè III Rozszerzanie Flasha i PHP ............................................. 201 Rozdziađ 9. Praca z bibliotekami tworzonymi przez innych .......................... 203 Przegląd bibliotek dostarczanych przez innych ................................................................................203 Inne biblioteki zewnĊtrzne ..........................................................................................................204 Biblioteki w PHP ........................................................................................................................205 Instalacja bibliotek zewnĊtrznych .....................................................................................................205 Instalacja bibliotek w Ğrodowisku Flash CS3 .............................................................................206 Instalacja bibliotek w PHP ..........................................................................................................207 10 Adobe Flash i PHP. Biblia Korzystanie z bibliotek napisanych przez innych .............................................................................208 Korzystanie z bibliotek w Ğrodowisku Flash CS3 .......................................................................208 Korzystanie z bibliotek w PHP ...................................................................................................209 Rzut oka na AMFPHP .......................................................................................................................210 AMFPHP dla programistów pracujących w ActionScripcie 3 i PHP ..........................................210 Testujemy wáasną usáugĊ w AMFPHP .......................................................................................212 Korzystanie z AMFPHP we Flashu ............................................................................................216 Tworzymy aplikacjĊ z prawdziwego zdarzenia, korzystającą z AMFPHP ..........................................221 Usáugi AMFPHP .........................................................................................................................221 Skrypt do integracji z AMFPHP w ActionScripcie .....................................................................225 Podsumowanie ..................................................................................................................................226 Rozdziađ 10. Programowanie zorientowane obiektowo ............................... 227 Czym jest programowanie obiektowe ...............................................................................................227 Krótkie omówienie metod programowania zorientowanego obiektowo .....................................228 Klasy w PHP .....................................................................................................................................233 Doáączanie klas w PHP ...............................................................................................................234 Tworzenie obiektów klas ............................................................................................................235 Deklarowanie wielu klas .............................................................................................................236 Klasy we Flashu? ..............................................................................................................................237 Importowanie ..............................................................................................................................237 Klasa dokumentu ........................................................................................................................237 Symbole biblioteczne ..................................................................................................................239 Tworzenie wáasnych klas we Flashu i w PHP ...................................................................................239 Podsumowanie ..................................................................................................................................243 Czúħè IV Tworzymy aplikacje ...................................................... 245 Rozdziađ 11. Tworzymy proste aplikacje ......................................................... 247 O skáadnikach aplikacji .....................................................................................................................247 Czym jest projekt aplikacji .........................................................................................................248 ZakoĔczenie etapu planowania ...................................................................................................249 Piszemy klienta czata ........................................................................................................................250 CzĊĞü aplikacji, którą tworzymy we Flashu ................................................................................250 CzĊĞü aplikacji w PHP ................................................................................................................258 Tworzymy galeriĊ fotograficzną, korzystającą ze skryptu PHP ........................................................266 Piszemy kod w ActionScripcie ...................................................................................................267 Poruszanie siĊ po galerii fotograficznej ......................................................................................271 Skrypty galerii fotograficznej w PHP .........................................................................................275 Korzystamy z PHP do napisania czytnika wiadomoĞci RSS .............................................................279 Importujemy klasy ......................................................................................................................280 Wywoáujemy plik PHP ...............................................................................................................280 Tworzymy dynamiczny baner przy uĪyciu PHP, Flasha i MySQL-a ................................................284 Otwieramy okno przeglądarki .....................................................................................................285 Piszemy kod w PHP ....................................................................................................................287 Wybór losowy .............................................................................................................................287 Piszemy czĊĞü licznika odwiedzin w PHP ........................................................................................289 Mechanizm licznika odwiedzin .........................................................................................................289 Piszemy czĊĞü licznika odwiedzin we Flashu .............................................................................290 Podsumowanie ..................................................................................................................................291 Spis treħci 11 Rozdziađ 12. Tworzymy aplikacje z prawdziwego zdarzenia ............................. 293 Czym są aplikacje z prawdziwego zdarzenia? .....................................................................................293 Korzystanie z serwisu PayPal we Flashu ..........................................................................................294 Korzystanie z danych POST .......................................................................................................297 Korzystanie z wywoáania sendToURL .......................................................................................298 Nawiązanie poáączenia z serwisem PayPal .................................................................................298 UĪycie Flasha i PHP do utworzenia koszyka ....................................................................................299 Projekt koszyka na zakupy .........................................................................................................299 Skrypt PHP .................................................................................................................................309 Zastosowanie Flasha i PHP do napisania aplikacji przeszukującej zasoby Amazon .........................319 Jak korzystaü z Amazon Web Service? ......................................................................................319 Jak uproĞciü odpowiedĨ XML? ..................................................................................................321 Galeria zdjĊü korzystająca z flickra ..................................................................................................327 Komunikacja z usáugą WWW ....................................................................................................331 Tworzenie wáasnego dokumentu XML .......................................................................................332 Podsumowanie ..................................................................................................................................333 Rozdziađ 13. Tworzymy zaawansowane aplikacje z prawdziwego zdarzenia .... 335 Program graficzny we Flashu ............................................................................................................335 Interfejs programowania do rysowania grafiki we Flashu ..........................................................336 Korzystanie z biblioteki GD w PHP .................................................................................................340 Generowanie obrazu za pomocą biblioteki GD ..........................................................................343 Gromadzimy we Flashu dane o punktach ...................................................................................344 Monitor dostĊpnoĞci stron we Flashu ................................................................................................346 Skrypt PHP aplikacji monitorującej dostĊpnoĞü stron ................................................................346 Korzystając z PHP, wysyáamy wiadomoĞü elektroniczną do administratora ..............................348 Skrypt monitora dostĊpnoĞci stron we Flashu .............................................................................350 Odtwarzacz wideo we Flashu ............................................................................................................356 Sonda ................................................................................................................................................361 Piszemy w PHP skrypt sondy korzystający z bazy danych MySQL ...........................................361 Skrypt sondy w ActionScripcie ..................................................................................................364 Prosty edytor tekstu ...........................................................................................................................368 Podsumowanie ..................................................................................................................................374 Rozdziađ 14. Debugowanie .............................................................................. 375 Raportowanie báĊdów w PHP ...........................................................................................................375 WyĞwietlanie báĊdów na potrzeby debugowania ........................................................................377 Poziomy waĪnoĞci báĊdów ..........................................................................................................378 Debugowanie we Flashu ...................................................................................................................379 Zamiennik funkcji trace() ..................................................................................................................383 Podsumowanie ..................................................................................................................................384 Czúħè V Konserwacja serwera, aplikacji i bazy danych ............. 387 Rozdziađ 15. Konserwacja aplikacji ................................................................. 389 Komentowanie kodu .........................................................................................................................389 Style komentowania kodu ...........................................................................................................390 Usuwanie komentarzy oraz fragmentów kodu wspomagających debugowanie ..........................392 Dziennik zmian .................................................................................................................................393 ĝledzenie báĊdów ........................................................................................................................393 Dodatkowe zastosowania ............................................................................................................394 Dynamiczne nanoszenie wprowadzanych zmian ........................................................................394 12 Adobe Flash i PHP. Biblia Utrzymywanie kilku niezaleĪnych wersji aplikacji ...........................................................................394 Systemy kontroli wersji ..............................................................................................................395 Wsparcie dla systemu kontroli wersji w Ğrodowisku Flash CS3 .......................................................395 Konfiguracja kontroli wersji .......................................................................................................396 Korzystamy z wáasnych bibliotek .....................................................................................................397 Korzystanie z wáasnych bibliotek oraz z systemu kontroli wersji ...............................................397 Publikacja pliku „.swc” ...............................................................................................................397 Podsumowanie ..................................................................................................................................398 Rozdziađ 16. Utrzymywanie wydajnego i skalowalnego serwera ................ 399 Uruchamianie zaktualizowanego serwera .........................................................................................399 Aktualizacja automatyczna .........................................................................................................400 Platforma Zend ...........................................................................................................................400 Wersje rozwojowe oprogramowania .................................................................................................400 Instalacja drugiej wersji serwera Apache w tym samym systemie ..............................................401 Stosowanie technologii eksperymentalnych ...............................................................................401 ZaleĪnoĞci ...................................................................................................................................402 PamiĊü podrĊczna i optymalizacja ....................................................................................................402 Optymalizacja PHP .....................................................................................................................402 Optymalizacja serwera Apache ...................................................................................................406 Optymalizacja MySQL-a ............................................................................................................408 PamiĊü podrĊczna .......................................................................................................................409 Instalacja memcached w systemie Linux ....................................................................................410 Instalacja memcached w systemie Windows ..............................................................................412 KoĔczymy instalacjĊ w systemie Linux i w systemie Windows ......................................................412 Zarządzanie serwerami ...............................................................................................................414 Tworzenie kopii zapasowych ............................................................................................................415 Zarządzanie plikami ....................................................................................................................415 Zarządzanie kopiami zapasowymi ..............................................................................................415 Zastosowanie PHP w tworzeniu kopii bezpieczeĔstwa bazy danych ..........................................418 Podsumowanie ..................................................................................................................................421 Rozdziađ 17. Tworzenie rozbudowanych aplikacji ......................................... 423 Prosty odtwarzacz filmów .................................................................................................................423 Piszemy odtwarzacz filmów we Flashu i PHP ..................................................................................426 Zaczynamy ..................................................................................................................................426 Integracja z usáugą zdalną ...........................................................................................................431 Piszemy zaawansowany odtwarzacz filmów ..............................................................................439 Implementacja klasy VideoListItem ...........................................................................................448 ĝledzenie oglądalnoĞci ......................................................................................................................453 Wprowadzamy zmiany do klasy Videos .....................................................................................453 Dodajemy moĪliwoĞü Ğledzenia oglądalnoĞci do klas w ActionScripcie ....................................454 Tworzymy we Flashu komponent logowania uĪytkownika ..............................................................456 Klasa LoginWindow ...................................................................................................................457 Testujemy komponent logowania ...............................................................................................464 Piszemy w PHP klasĊ obsáugującą logowanie ............................................................................466 Dodajemy usáugĊ zdalną do komponentu logowania ..................................................................469 KoĔczymy odtwarzacz filmów .........................................................................................................472 Korzystanie z bibliotek zewnĊtrznych ........................................................................................472 Dodajemy komponent logowania ...............................................................................................472 Podsumowanie ..................................................................................................................................476 Skorowidz ...................................................................................................... 477 Rozdziađ 11.  Tworzymy proste aplikacje 247 Rozdziađ 11. Tworzymy proste aplikacje W tym rozdziale:  O skáadnikach aplikacji  Piszemy klienta czata  Tworzymy galeriĊ w PHP  Tworzymy inne dynamiczne aplikacje, korzystające z MySQL-a W niniejszym rozdziale napiszemy kilka w peáni dziaáających aplikacji. Jego celem jest utworzenie kilku takich aplikacji, a jednoczeĞnie poznanie kilku podstawowych puáapek oraz sposobów ich omijania. Przyswoimy równieĪ nowe techniki, takie jak tworzenie pro- cedur obsáugi wielu zdarzeĔ, pisanie klas pochodnych czy korzystanie ze zdalnych usáug. W rozdziale omówimy równieĪ najlepsze sposoby pracy z MySQL-em, uwzglĊdniające za- równo efektywnoĞü, jak i bezpieczeĔstwo. Na koniec powiemy o najlepszych metodach konserwowania aplikacji oraz technikach programowania, pozwalających zachowaü moĪli- woĞü dalszego rozwijania tworzonego oprogramowania. O skđadnikach aplikacji Tworzenie aplikacji nie polega na tym, Īe „odpalamy” Flasha lub Twój ulubiony edytor i wklepujemy kod linijka po linijce. Najlepszym pomysáem na rozpoczĊcie pisania programu jest etap oceny. Chodzi o moment, w którym przypatrujemy siĊ liĞcie zadaĔ, jakie aplikacja powinna realizowaü, zadajemy sobie pytanie, kto ma byü jej uĪytkownikiem oraz w jaki sposób bĊdziemy ją rozwijaü. W tabeli 11.1 umieĞciáem trzy punkty, skáadające siĊ na etap oceny aplikacji: Tabela 11.1. Trzy punkty, skäadajñce siö na etap oceny Co Kto Jak Co aplikacja powinna robiü? Potencjalni uĪytkownicy aplikacji Techniki stosowane podczas tworzenia aplikacji 248 Czúħè IV  Tworzymy aplikacje W przykáadach prezentowanych poniĪej pomijamy punkt „jak”, bo przecieĪ jest to ksiąĪka o Flashu i PHP. Po rozprawieniu siĊ z punktem „jak” moĪemy przejĞü do punktu „kto”. W punkcie tym okreĞlamy oczywiĞcie, kto bĊdzie potencjalnym uĪytkownikiem naszej apli- kacji. W przypadku niektórych programów nie jest moĪliwe sztywne zdefiniowanie poten- cjalnego uĪytkownika; dotyczy to zwáaszcza serwisów WWW. Mimo to najlepiej jest spró- bowaü go scharakteryzowaü, a najlepszym sposobem realizacji tego zadania jest zastanowienie siĊ nad typem rozwijanej aplikacji. Czy to ma byü na przykáad oprogramowanie typu e-commerce? A moĪe odtwarzacz wideo? Wiedza o tym, kto bĊdzie korzystaá z aplikacji, jest kluczem do sukcesu. Gdy juĪ rozpatrzyliĞmy punkty „jak” i „kto”, musimy siĊ zastanowiü, co wáaĞciwie bĊdzie robiáa nasza aplikacja. Czy poszedábyĞ do sklepu ze sprzĊtem, nakupowaábyĞ wszelkich materiaáów, a dopiero potem zacząábyĞ siĊ zastanawiaü, co z nich zrobiü? To samo pytanie naleĪy zadaü sobie w trakcie tworzenia aplikacji. Gdy zaczniesz stosowaü te metody, szybko staną siĊ one Twoją drugą naturą. Czym jest projekt aplikacji Po zakoĔczeniu procesu oceny aplikacji naturalnym krokiem jest przejĞcie do projektowania. Ale tak jak w przypadku etapu oceny, dobrze jest najpierw opracowaü jakiĞ plan. Planem bĊdzie szkic kreĞlony oáówkiem na papierze albo projekt we Flashu, skáadający siĊ z pod- stawowych skáadników. Na rysunku 11.1 widzimy przykáadowy szkic. Rysunek 11.1. Przykäadowy szkic aplikacji sporzñdzony z uĔyciem podstawowych skäadników dostöpnych we Flashu Rozdziađ 11.  Tworzymy proste aplikacje 249 Piszemy szkielet skryptu Po sporządzeniu caáoĞciowego szkicu rozwijanej aplikacji moĪemy przejĞü do realizowanych przez nią funkcji. Jest to moment, w którym zaczniemy pisaü pseudokod w postaci funkcji, zmiennych, zdarzeĔ oraz wszelkich innych konstrukcji, które bĊdziemy chcieli zastosowaü w aplikacji. // Szkielet skryptu function loadUser(id:uint):void { // Odwoáaj siĊ do serwera, // przekazując id jako identyfikator uĪytkownika } function handleServerResponse(e:Event):void { // Przejmij odpowiedĨ serwera, // Wywoáaj odpowiednie funkcje aplikacji } function drawInterface():void { // WyĞwietl interfejs uĪytkownika } function redraw():void { // Ponownie wyĞwietl interfejs po pobraniu informacji, // aby dane byáy aktualne } // Przypisanie procedur obsáugi zdarzeĔ Jak widaü, szkielet nie tworzy caáej aplikacji, przedstawia tylko jej budowĊ. DziĊki niemu szybko okreĞlisz sposób dziaáania programu oraz jego zadania. Pisanie pseudokodu jest tym waĪniejsze, im wiĊkszy jest projekt, nad którym siĊ pracuje, ale niezaleĪnie od jego wielkoĞci dobrą praktyką jest ocena, szkicowanie i planowanie. Zakoēczenie etapu planowania Ostatnie czynnoĞci związane z planowaniem aplikacji wcale nie muszą byü ostateczne. MoĪesz albo powtórzyü procedurĊ planowania, dokonując niezbĊdnych lub przydatnych uzupeánieĔ, albo rozpocząü proces tworzenia aplikacji. Czasem o wyborze decyduje klient lub dyrektor do spraw tworzenia projektów, o ile taki jest. W tym momencie procesu planowania wiemy juĪ, co aplikacja bĊdzie robiü, kto bĊdzie z niej korzystaá oraz w jaki sposób ją utworzymy. StworzyliĞmy równieĪ jej szkielet i rozpo- czĊliĞmy programowanie. NastĊpny krok naleĪy do Ciebie jako do dewelopera. MoĪesz albo kontynuowaü proces projektowania i spróbowaü doprowadziü go koĔca, albo przejĞü do pisania kodu. 250 Czúħè IV  Tworzymy aplikacje Zazwyczaj bĊdziesz rozwijaá plan aplikacji do etapu, w którym bĊdziesz mógá rozpocząü programowanie, poniewaĪ najprawdopodobniej w trakcie implementacji wprowadzisz wiele zmian do samego planu. Jednak przy odpowiedniej dozie planowania moĪesz ograniczyü koniecznoĞü wprowadzania tego rodzaju zmian do minimum. Piszemy klienta czata Gdy juĪ poznaáeĞ nieco najwydajniejsze metody tworzenia oprogramowania, moĪesz przy- stąpiü do pisania swojej pierwszej w peáni dziaáającej aplikacji. BĊdzie to klient czata we Flashu, który bĊdzie wykorzystywaá PHP do komunikacji z bazą danych MySQL. Po utwo- rzeniu aplikacji podstawowej bĊdziemy dodawaü do niej róĪne opcje, ucząc siĊ w ten sposób najlepszych metod tworzenia skalowalnego oprogramowania. AplikacjĊ skalowalną rozwija siĊ, mając na wzglĊdzie to, Īe na początku mogą z niej korzystaü dwaj uĪytkownicy, ale z czasem mogą jej uĪywaü miliony ludzi. Chodzi o to, Īeby siĊ z tym liczyü i rozwijaü oprogramowanie w sposób pozwalający na poszerzanie jego moĪliwoĞci. Czúħè aplikacji, któræ tworzymy we Flashu Rozpocznijmy tworzenie aplikacji od sporządzenia projektu. Jej projekt jest juĪ gotowy, ale nie wahaj siĊ go zmieniaü. Tak naprawdĊ to zachĊcam CiĊ do rozbudowywania wszystkich przykáadów, bo wáaĞnie to jest sposób na przyswojenie sobie nowych technik i stanie siĊ lepszym deweloperem. Interfejs czata moĪemy zobaczyü na rysunku 11.2. Rysunek 11.2. Projekt czata utworzony we Flashu z gotowych skäadników Rozdziađ 11.  Tworzymy proste aplikacje 251 Zasadniczo interfejs skáada siĊ ze skáadnika typu TextArea, który sáuĪy do wyĞwietlania wiadomoĞci czatowych, dwóch skáadników typu TextInput, w których wpisuje siĊ wia- domoĞü oraz imiĊ czy pseudonim, oraz przycisku typu Button do wysyáania komunikatów. W tabeli 11.2 przedstawiáem nazwy obiektów reprezentujące poszczególne skáadniki projektu: Tabela 11.2. Nazwy obiektów reprezentujñce poszczególne skäadniki projektu Skáadnik TextArea TextInput TextInput Button Nazwa obiektu messagesTxt newMsgTxt usernameTxt sendBtn Zastosowanie WyĞwietla wiadomoĞci pojawiające siĊ w czacie Nowa wiadomoĞü ImiĊ osoby korzystającej z czata Wysyáa nową wiadomoĞü do serwera W trakcie pisania we Flashu skryptu naszej aplikacji, odwoáując siĊ do poszczególnych obiektów, bĊdziemy korzystaü z ich nazw. Po ukoĔczeniu projektu interfejsu uĪytkownika — w naszym przypadku po jego zaáadowaniu — moĪemy przystąpiü do pisania kodu. Na początek utwórzmy blok deklaracji zmiennych globalnych. Pierwsza zmienna zawiera bezwzglĊdną ĞcieĪkĊ do pliku „.php”. Dwie dalsze — reprezentują skrypty PHP, odpowie- dzialne za wysyáanie i pobieranie wiadomoĞci do i z bazy danych. NastĊpnie mamy dwie zmienne logiczne, dziĊki którym mamy pewnoĞü, Īe nie zostaną utworzone dwie wiadomo- Ğci naraz. Ostatni zbiór zmiennych jest nam potrzebny do utworzenia obiektu czasomierza oraz niszczyciela pamiĊci podrĊcznej. var phpPath:String = http://localhost/helion/rozdzial11/chatClient/ ; var phpSendMessage:String = phpPath + message.php ; var phpLoadMessages:String = phpPath + getMessages.php ; var loadingMessages:Boolean = false; var sendingMessage:Boolean = false; var timer:Timer; var cacheBuster:String = ?cb=1 ; Na początku napiszemy funkcjĊ init(), czyli funkcjĊ inicjalizującą. Jest ona wywoáywana tylko jeden raz, podczas uruchamiania aplikacji. Jej zadaniem jest przypisanie funkcji obsáugi czasomierza, z którego korzystamy w trakcie pobierania wiadomoĞci, oraz pierwsze wywo- áanie niszczyciela pamiĊci podrĊcznej. O obiekcie tym powiemy kilka sáów nieco dalej. Ostatnim zadaniem funkcji init() jest wywoáanie funkcji loadMessages() i wypeánienie listy wiadomoĞci: function init():void { // Uruchom czasomierz na potrzeby áadowania obrazów timer = new Timer(5000, 0); timer.addEventListener(TimerEvent.TIMER, timerHandler); timer.start(); 252 Czúħè IV  Tworzymy aplikacje cacheBuster = getCacheBuster(); loadMessages(); // pierwsze wywoáanie } DostĊpna w Ğrodowisku Flash klasa Timer ma wiele fantastycznych zastosowaĔ. W naszym przykáadzie korzystamy ze zdarzenia TIMER, które generowane jest za kaĪdym razem, gdy licznik spadnie do zera. Zarówno czas odliczania, jak i liczbĊ powtórzeĔ przekazuje siĊ do konstruktora jako parametry. Ustalamy odliczanie na 5000, czyli piĊü sekund, a liczbĊ po- wtórzeĔ na 0, co mówi ActionScriptowi, Īe ma powtarzaü odliczanie w nieskoĔczonoĞü. Po utworzeniu czasomierza przypisujemy mu procedurĊ obsáugi zdarzeĔ i niezwáocznie uruchamiamy odliczanie. Procedura obsáugi czasomierza wywoáuje funkcjĊ loadMessages(). MoĪna by skróciü ten fragment kodu poprzez wstawienie funkcji loadMessages() zamiast procedury obsáugi timerHandler(), jednak dziĊki zastosowanemu podejĞciu mamy moĪli- woĞü dodania w przyszáoĞci nowych udogodnieĔ. Pisanie wáaĞciwych procedur obsáugi, aby kod w przyszáoĞci moĪna byáo zmieniaü, jest ze wszech miar dobrą praktyką, a jej stosowa- nie sprawia dodatkowo, Īe kod áatwiej siĊ czyta: function timerHandler(e:TimerEvent):void { loadMessages(); } Funkcja loadMessages() odwoáuje siĊ do serwera i obsáuguje jego odpowiedĨ. Odwoáanie do serwera jest bardzo podobne do odwoáaĔ w innych przykáadach, jednak pojawia siĊ tu kilka nowych elementów. Jednym z nich jest zmienna cacheBuster, dziĊki której mamy pewnoĞü, Īe nie pobieramy wyników znajdujących siĊ w pamiĊci podrĊcznej. Blokujemy przechowywanie danych dynamicznych w pamiúci podrúcznej WáaĞnie zadeklarowaliĞmy zmienną, która pozwala na wyáączenie umieszczania wyników w pamiĊci podrĊcznej, ale o co wáaĞciwie chodzi? O przechowywaniu danych pochodzą- cych z serwera w pamiĊci podrĊcznej mówimy wówczas, gdy dane pozyskiwane dy- namicznie przechowuje siĊ w celu szybszego áadowania podczas nastĊpnych odwoáaĔ. W pierwszej chwili wydawaü siĊ moĪe, Īe to Ğwietny pomysá; zresztą w wiĊkszoĞci sytuacji to po prostu jest Ğwietny pomysá. Jednak podczas pobierania danych czata, które wciąĪ siĊ zmieniają, moĪemy z duĪym prawdopodobieĔstwem zaáoĪyü, Īe powinny byü one zawsze ĞwieĪe. Osiągamy to, dodając zmienną o nazwie cacheBuster, która oszukuje przeglądarkĊ, Īe kaĪde odwoáanie do tego samego pliku jest w istocie innym odwoáaniem1. PoniĪej znajduje siĊ bardzo prosty przykáad przekazania niszczyciela pamiĊci podrĊcznej i wáaĞciwego ciągu znaków do serwera: function getRandom(length:uint):void { return Math.round(Math.random() * (length-1)) + 1; } 1 Opisane rozwiązanie nie jest specjalnie zgodne ze standardem http, choü niewątpliwie dziaáa. Bardziej stosownym podejĞciem jest uĪycie nagáówków: „Cache-control: no-cache” i „Pragma: no-cache” (dla zachowania zgodnoĞci z http 1.0). Nagáówki te moĪna wysáaü z poziomu skryptu PHP funkcją header(). Zaletą takiego podejĞcia jest miĊdzy innymi to, Īe strony takie nie są w ogóle zapisywane w pamiĊci podrĊcznej  przyp. red. Rozdziađ 11.  Tworzymy proste aplikacje 253 var rand:String = ?cb= + getRandom(8); var php:String = http://localhost/helion/rozdzial11/getMessages.php.php + rand; trace( URL: + phpFile); //getMessages.php?cb=65378426 Täumiki pamiöci podröcznej wydäuĔajñ czas äadowania i sprawiajñ, Ĕe kaĔdy plik z täumikiem bödzie äadowany za kaĔdym razem, gdy do serwera zostanie wysäane Ĕñdanie jego pobrania. NastĊpnie w ramach procesu wysyáania wiadomoĞci sprawdzamy, czy zawiera ona przy- najmniej trzy znaki. JeĪeli jej dáugoĞü jest mniejsza, wyĞwietlany jest komunikat o báĊdzie. Istnieją dwa sposoby zapisu tego sprawdzenia: Pierwszy sposób to: if (newMsgTxt,text.length 2) { } Drugi sposób zapisu jest áatwiejszy do zrozumienia: if (newMsgTxt.text.length = 3) { } Oba zapisy oznaczają to samo, jednak drugi jest o wiele czytelniejszy z punktu widzenia logiki. Teraz, skoro wiadomoĞü ma odpowiednią dáugoĞü, moĪemy przejĞü do dalszej czĊĞci procesu wysyáania jej do serwera. Teraz tworzymy wywoáanie serwera: var variables:URLVariables = new URLVariables(); variables.user = usernameTxt.text; variables.msg = newMsgTxt.text; var urlRequest:URLRequest = new URLRequest(phpSendMessage + getCacheBuster()); urlRequest.method = URLRequestMethod.POST; urlRequest.data = variables; var urlLoader:URLLoader = new URLLoader(); urlLoader.addEventListener(Event.COMPLETE, sendMessageHandler); urlLoader.load(urlRequest); Odwoáując siĊ do serwera, naleĪy nadaü odpowiednie wartoĞci wáaĞciwoĞciom obiektu klasy URLVariables, aby przesáaü wprowadzoną nazwĊ uĪytkownika oraz wiadomoĞü. Wywoáu- jemy równieĪ funkcjĊ oszukującą pamiĊü podrĊczną, aby dane zawsze byáy aktualne. Na koĔcu funkcji — zamiast czekaü, aĪ lista wiadomoĞci zostanie zaktualizowana z serwera — od razu dodajemy wiadomoĞü uĪytkownika. DziĊki temu aplikacja lepiej reaguje na polecenia i nie odnosi siĊ wraĪenia, Īe wiadomoĞci są ignorowane. addMessage(usernameTxt.text, newMsgTxt.text); Funkcja przyjmuje dwa argumenty: imiĊ lub pseudonim uĪytkownika oraz wiadomoĞü; obie wartoĞci pochodzą z odpowiednich skáadników. Potem otrzymane informacje umieszczamy w ciągu znaków w postaci kodu HTML, który przypisujemy do zmiennej messagesTxt klasy 254 Czúħè IV  Tworzymy aplikacje TextArea. NazwĊ uĪytkownika umieszczamy miĊdzy znacznikami pogrubienia w celu wy- róĪnienia imienia. Tak naprawdĊ, w polach edycyjnych udostĊpniających HTML moĪesz stosowaü wiele najczĊĞciej uĪywanych znaczników: function addMessage(user:String, msg:String):void { messagesTxt.htmlText += b + user + /b + : + msg + \n ; } Tabela 11.3 przedstawia dostĊpne znaczniki HTML: Tabela 11.3. Dostöpne znaczniki HTML Nazwa Znacznik zakotwiczenia Znacznik pogrubienia Znacznik przerwania wiersza Znacznik wyboru czcionki Znacznik obrazu Znacznik kursywy Znacznik elementu listy Znacznik akapitu Znacznik sekcji Znacznik podkreĞlenia Znacznik HTML a b br font img i li p span u Wywoáanie funkcji sendMessageHandler() nastĊpuje za kaĪdym razem, gdy wiadomoĞü zostaje pomyĞlnie wysáana do serwera. Jedynym istotnym fragmentem tej funkcji jest jej ostatni wiersz, który czyĞci pole tekstowe zawierające wiadomoĞü i pozwala uĪytkowni- kowi wpisaü nowy komunikat. MoglibyĞmy usunąü wysáaną wiadomoĞü juĪ w funkcji sendMessage(), ale zastosowane rozwiązanie daje nam pewnoĞü, Īe pozostanie ona nie- tkniĊta aĪ do czasu dodania jej do listy. function sendMessageHandler(e:Event):void { ... newMsgTxt.text = ; } Skrypt PHP poinformuje o bäödzie, jeĔeli nie powiodäo siö äadowanie strony, natomiast nie poinformuje, jeĔeli nie powiedzie siö realizacja zapytania SQL. OczywiĈcie moglibyĈmy wyposaĔyè nasz przykäad w lepszñ obsäugö bäödów. Gdy juĪ mamy kod wysyáający i obsáugujący odwoáania do serwera, moĪemy zająü siĊ funkcją zarządzającą wiadomoĞciami i wyĞwietlającą je w polu typu TextArea. FunkcjĊ loadMessages() wywoáujemy z dwóch miejsc. Najpierw z funkcji init(), której przyjrzeliĞmy siĊ wczeĞniej, a nastĊpnie z procedury obsáugi zdarzenia generowanego przez czasomierz. Rozdziađ 11.  Tworzymy proste aplikacje 255 Na początek sprawdzamy, czy nie nastąpiáo równolegáe wywoáanie funkcji loadMessages(). DziĊki temu mamy pewnoĞü, Īe nie zasypiemy serwera wiadomoĞciami, przez co mógáby przestaü odpowiadaü. JeĪeli áadowanie wáaĞnie siĊ odbywa, to po prostu opuszczamy funkcjĊ, koĔcząc caáą operacjĊ. JeĪeli nie odbywa siĊ równolegáe áadowanie, ustawiamy wartoĞü zmiennej loadingMessages. Przypomina to zamkniĊcie drzwi po wejĞciu do pokoju. WiĊkszoĞü zadaĔ wykonywanych przez funkcjĊ loadMessages() przypomina wysyáanie. Ogólnie mówiąc, najpierw okreĞlamy plik PHP, który powinien zostaü zaáadowany, oraz procedurĊ obsáugi zdarzenia, które zostanie wygenerowane, gdy dane nadejdą z serwera: function loadMessages():void { if (loadingMessages) return; loadingMessages = true; var urlRequest:URLRequest = new URLRequest(phpLoadMessages + getCacheBuster()); var urlLoader:URLLoader = new URLLoader(); urlLoader.addEventListener(Event.COMPLETE, loadMessagesHandler); urlLoader.load(urlRequest); } Obsđuga odpowiedzi w formacie XML Funkcja pobierająca odpowiedĨ przetwarza dane w formacie XML i przekazuje wiadomoĞü do wyĞwietlenia: function loadMessagesHandler(e:Event):void { var loader:URLLoader = URLLoader(e.target); var xml:XML = new XML(loader.data); messagesTxt.htmlText = ; for each(var item in xml..message) { addMessage(item.name, item.msg); } cacheBuster = getCacheBuster(); loadingMessages = false; } NaleĔy pamiötaè, Ĕe wielkoĈè liter elementów odpowiedzi XML ma znaczenie. Standardem sñ maäe litery lub wielkie litery na poczñtku wyrazów w przypadku wielu säów. Po pomyĞlnym zaáadowaniu dokumentu XML nastĊpuje pĊtla for each, tak samo jak w przykáadzie áadowania pliku w formacie XML w rozdziale 4. Dziaáanie pĊtli opiera siĊ na elementach message, znajdujących siĊ w odpowiedzi. Przykáadowy dokument nadesáany przez serwer mógáby wyglądaü tak: 256 Czúħè IV  Tworzymy aplikacje messages message id= 29 name guest1 /name msg Flash daje sporo zabawy /msg /message message id= 30 name guest2 /name msg PHP i Flash jest jeszcze fajniejszy /msg /message message id= 32 name guest1 /name msg Dziúki nim tyle moľesz zrobiè /msg /message message id= 33 name guest2 /name msg No pewnie, popatrz na tego czata! /msg /message /messages Ostatnią czynnoĞcią wykonywaną w ramach funkcji loadMessagesHandler() jest utworzenie niszczyciela pamiĊci podrĊcznej i nadanie zmiennej loadingMessages wartoĞci false. DziĊki temu moĪliwe bĊdzie pobranie kolejnych wiadomoĞci. O niszczycielach pamiĊci podrĊcznej mówiliĞmy juĪ wczeĞniej. Warto jednak dodaü, Īe ist- nieje wiele sposobów tworzenia unikalnych ciągów znaków. Ciągle zmieniającą siĊ daną jest na przykáad aktualna data, a w ActionScripcie istnieje metoda getTime(), która zwraca liczbĊ milisekund, jakie upáynĊáy od 1 stycznia 1970 roku. Korzystamy z metody pobierania czasu, poniewaĪ czas wciąĪ páynie, a jego wartoĞü nigdy siĊ nie powtarza. DziĊki temu za kaĪdym razem, gdy skorzystamy z tej metody, otrzymujemy unikalny ciąg znaków. W tym momencie kod w ActionScripcie jest juĪ gotowy. PoniĪej zamieszczam go w caáoĞci, abyĞ áatwiej mógá siĊ w nim odnaleĨü: var phpPath:String = http://localhost/helion/rozdzial11/chatClient/ ; var phpSendMessage:String = phpPath + message.php ; var phpLoadMessages:String = phpPath + getMessages.php ; var loadingMessages:Boolean = false; var sendingMessage:Boolean = false; var chatMessages:Array = new Array(); var timer:Timer; var cacheBuster:String = ?cb=1 ; function init():void { // Uruchom czasomierz na potrzeby áadowania obrazów timer = new Timer(5000, 0); timer.addEventListener(TimerEvent.TIMER, timerHandler); timer.start(); cacheBuster = getCacheBuster(); loadMessages(); // pierwsze wywoáanie } Rozdziađ 11.  Tworzymy proste aplikacje 257 function sendMessage(e:MouseEvent):void { if (usernameTxt.text == ) { trace( Wymagane jest imiú lub pseudonim uľytkownika ); return; } if (newMsgTxt.text.length = 3) { var variables:URLVariables = new URLVariables(); variables.user = usernameTxt.text; variables.msg = newMsgTxt.text; var urlRequest:URLRequest = new URLRequest(phpSendMessage + getCacheBuster()); urlRequest.method = URLRequestMethod.POST; urlRequest.data = variables; var urlLoader:URLLoader = new URLLoader(); urlLoader.addEventListener(Event.COMPLETE, sendMessageHandler); urlLoader.load(urlRequest); // Aby wiadomoĞü byáa wyĞwietlana addMessage(usernameTxt.text, newMsgTxt.text); } } function sendMessageHandler(e:Event):void { var loader:URLLoader = URLLoader(e.target); var variables:URLVariables = new URLVariables(loader.data); trace( Odpowiedļ: + variables.resp); // WyczyĞü pole wiadomoĞci newMsgTxt.text = ; } function loadMessages():void { if (loadingMessages) return; loadingMessages = true; var urlRequest:URLRequest = new URLRequest(phpLoadMessages + getCacheBuster()); var urlLoader:URLLoader = new URLLoader(); urlLoader.addEventListener(Event.COMPLETE, loadMessagesHandler); urlLoader.load(urlRequest); } function loadMessagesHandler(e:Event):void { var loader:URLLoader = URLLoader(e.target); var xml:XML = new XML(loader.data); loadingMessages = false; messagesTxt.htmlText = ; for each(var item in xml..message) 258 Czúħè IV  Tworzymy aplikacje { addMessage(item.name, item.msg); } cacheBuster = getCacheBuster(); } function getCacheBuster():String { var date:Date = new Date(); cacheBuster = ?cb= + date.getTime(); return cacheBuster; } function addMessage(user:String, msg:String):void { messagesTxt.htmlText += b + user + /b + : + msg + \n ; } function timerHandler(e:TimerEvent):void { trace( Obsđuga czasomierza ); loadMessages(); } sendBtn.addEventListener(MouseEvent.CLICK, sendMessage); init(); Czúħè aplikacji w PHP W tym momencie ukoĔczyliĞmy juĪ czĊĞü kodu naszej aplikacji w ActionScripcie. Teraz zajmiemy siĊ kodem w PHP, wywoáywanym w ActionScripcie. Kod w PHP dzielimy na trzy pliki, jak widaü w tabeli 11.4. Tabela 11.4. Podziaä skryptów PHP Plik z kodem w PHP getMessages.php messages.php dbconn.php Zadania Pobiera wszystkie wiadomoĞci z ostatnich 15 minut Zapisuje nową wiadomoĞü w bazie danych Poáączenie z bazą danych, do którego dostĊp mają pozostaáe skrypty Pierwszym skryptem, nad którym bĊdziemy pracowaü, jest getMessages.php. Na początku tego skryptu doáączamy plik zawierający poáączenie z bazą danych, któremu przyjrzymy siĊ za chwilĊ. Potem nastĊpuje odwoáanie do MySQL-a, za pomocą którego odpytujemy bazĊ danych i pobieramy wiadomoĞci z ostatnich 15 minut: $sql = SELECT * FROM flashChat WHERE dateAdded . (time() - (60 * 15)); $result = mysql_query($sql); Rozdziađ 11.  Tworzymy proste aplikacje 259 Warunek ostatnich 15 minut uzyskujemy, wprowadzając odpowiedni wiersz. Funkcja time() sáuĪy do pobierania wartoĞci zmiennej czasu rzeczywistego w systemie UNIX. Od otrzymanej wartoĞci odejmujemy 60 i mnoĪymy ją przez 15. Liczba 60 oznacza liczbĊ sekund w minucie, a liczba 15 okreĞla liczbĊ minut, o jaką nam chodzi. MoglibyĞmy zapisaü to proste równanie matematyczne, pomijając mnoĪenie. PominiĊcie go sprawi, Īe kod bĊdzie mniej czytelny, jednak zwiĊkszy szybkoĞü dziaáania aplikacji: time() - 900 Ciąg znaków z zapytaniem SQL zostaje przekazany do odpowiedniej funkcji, odwoáującej siĊ do serwera — mysql_query(), której wynik przypisujemy zmiennej $result. Po pomyĞlnej realizacji odwoáania do bazy danych MySQL tworzymy pĊtlĊ, wewnątrz której przeksztaá- camy dane na wiadomoĞci. Na rysunku 11.3 w przeglądarce zapytaĔ bazy MySQL — do- stĊpnej za darmo pod adresem internetowym http://www.mysql.com — widzimy zapytanie. Rysunek 11.3. Wynik zapytania SQL widoczny w programie MySQL Query Browser PĊtlĊ tworzymy za pomocą sáowa kluczowego while. Wykonuje siĊ ona, dopóki z bazy da- nych nie otrzymamy poprawnego wiersza. MoglibyĞmy skorzystaü z pĊtli for i uĪyü funkcji mysql_num_rows(), aby sprawdziü, ile wierszy zostaáo zwróconych przez serwer. Funkcja mysql_fetch_array() pobiera jeden wiersz z tabeli bazy w postaci tablicy aso- cjacyjnej, którą przypisujemy zmiennej $row. PĊtla zostaáa napisana w taki sposób, Īe gene- ruje wĊzáy XML, zawierające dane wiadomoĞci, o których wspominaliĞmy juĪ w tym rozdziale: while ($row = mysql_fetch_array($result)) { $xmlData .= message id= . $row[ id ] . \n ; $xmlData .= name . $row[ username ] . /name \n ; $xmlData .= msg . $row[ message ] . /msg \n ; $xmlData .= /message \n ; } 260 Czúħè IV  Tworzymy aplikacje WáaĞnie uporaliĞmy siĊ z odwoáaniem do serwera MySQL oraz z pĊtlą generującą wiado- moĞü w formacie XML, którą zwracamy do skryptu we Flashu. Przesyáanie danych z powro- tem do ActionScripta jest bardzo proste; umieszczamy dane jako argument wyraĪenia print: print $xmlData; Za wyraĪeniem print kryje siĊ dziaáanie caáego skryptu getMessages.php, który prezentujĊ poniĪej w caáoĞci: ?php include dbconn.php ; $sql = SELECT * FROM flashChat WHERE dateAdded . (time() - (60 * 15)); $result = mysql_query($sql); $xmlData = messages \n ; while ($row = mysql_fetch_array($result)) { $xmlData .= message id= . $row[ id ] . \n ; $xmlData .= name . $row[ username ] . /name \n ; $xmlData .= msg . $row[ message ] . /msg \n ; $xmlData .= /message \n ; } $xmlData .= /messages ; print $xmlData; ? Teraz zajmijmy siĊ skryptem messages.php, który wstawia nowe wiadomoĞci do bazy danych MySQL. Początek pliku wygląda tak samo jak poprzednio — doáączamy plik dbconn.php, który obsáuguje poáączenie z serwerem MySQL oraz logowanie: include dbconn.php ; NastĊpnie sprawdzamy, czy ciąg znaków przysáany z ActionScripta przypadkiem nie ma zerowej dáugoĞci, co oznaczaáoby, Īe jest pusty. W PHP dáugoĞü ciągu otrzymujemy jako wynik funkcji strlen(), podając ciąg jako jej argument: if (strlen($_POST[ msg ]) 0) { ... } Gdy przekonamy siĊ, Īe wiadomoĞü rzeczywiĞcie ma poprawną dáugoĞü, deklarujemy trzy zmienne; pierwsza zawieraáa nazwĊ uĪytkownika, druga — samą wiadomoĞü, a trzecia — czas w formacie uniksowym: $username = $_POST[ user ]; $message = $_POS
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

Adobe Flash i PHP. Biblia
Autor:

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: