Flash_i_php.doc

(485 KB) Pobierz
W tym ćwiczeniu wykonamy prostą przykładową aplikację, na którą będzie się składać wspomagany językiem PHP film Flasha zbierający nazwiska i adresy poczty elektronicznej odwiedzających przed zapisaniem ich w jednym pliku tekstowym o stronie serwera:

W tym ćwiczeniu wykonamy prostą przykładową aplikację, na którą będzie się składać wspomagany językiem PHP film Flasha zbierający nazwiska i adresy poczty elektronicznej odwiedzających przed zapisaniem ich w jednym pliku tekstowym o stronie serwera:


 

 

Omówimy ten projekt bardzo szczegółowo, gdyż zastosowaliśmy w nim główne techniki łączenia Flasha z PHP.

Wpisywanie tekstu do pliku po stronie serwera

Interfejs użytkownika dla tej niewielkiej aplikacji jest bardzo prosty:


 

 

Zabierzmy się do pracy.

1. Otwórz nowy film i wybierz dla niego rozmiar odpowiedni dla prostego interfejsu użytkownika — my wybraliśmy 300 na 150 pikseli.

2. Teraz dodaj dwa statyczne pola tekstowe, które posłużą jako etykiety dla pól wejściowych:


 

 

 

Następnie będziemy potrzebować dwa wejściowe pola tekstowe dla danych użytkownika.

3. Dodaj dwa wejściowe pola tekstowe, nadając górnemu polu nazwę zmiennej n, a dolnemu e. Przypisz im odpowiednio wartości Max Char 20 i 30. upewnij się, że pole wyboru Border/BG jest zaznaczone, dzięki czemu pole wejściowe będzie widoczne na ekranie:


 

 

 

Właśnie przygotowaliśmy środowisko wejściowe dla użytkownika. Następnym etapem będzie nadanie filmowi możliwości przetwarzania danych wejściowych poprzez wywołanie skryptu PHP na serwerze. Dodamy tą funkcjonalność do przycisku Submit, do którego przyłączony został kod ActionScript.

4. Sam utwórz przycisk Submit i nadaj mu odpowiedni stan Hit. 5. Aby zawartość była zawsze widoczna, do jedynego ujęcia filmu dodaj akcję stop.

Skoro masz już elementy interfejsu gotowe....


 

 

 

.. "_self" — ten parametr instruuje Flash, gdzie ma wysłać wartości zwrócone

ze skryptu PHP. W tym przykładzie wartości zostaną odesłane do

wywołującego okna dokumentu HTML.

... dodajmy kod ActionScript, który ożywi film. Cała funkcjonalność filmu mieści się w przycisku Submit, lecz nawet to jest stosunkowo proste. Kod ActionScript wymagany do wywołania zewnętrznego modułu PHP i przesłania zmiennych n i e (włącznie z ich wartościami) oparty jest na akcji getURL. 6. Zaznacz przycisk na scenie i wpisz poniższy kod w okno Object Actions: on (release) { getURL ("write_to_file.php", "_self", "POST"); } W tym kodzie funkcja getURL służy do przesłania zmiennych z filmu do skryptu PHP o nazwie write_to_file.php. A oto trzy parametry pobrane przez akcję getURL: "write_to_file.php" — jest to, jak już powiedzieliśmy, nazwa skryptu PHP, który przetworzy dane, jakie wyślemy na serwer. W tym celu podaliśmy nazwę skryptu i powiedzieliśmy Flashowi (i serwerowi), że skrypt PHP znajduje się w tym samym folderze co film (plik SWF), który skrypt ten wywołuje. "POST" –ten parametr określa metodę, jaka zostanie zastosowana do przekazania zmiennych pomiędzy przeglądarką i serwerem. Wybór pomiędzy GET i POST określi, czy zmienne mają być wysłane jako część nazwy adresu URL, czy też jako oddzielny fragment danych strumieniowany pomiędzy przeglądarką i serwerem. Rekomendujemy zastosowanie metody POST do przesyłania dużej liczby zmiennych w obydwu kierunkach. Najlepiej stosować metodę POST jako ustawienie domyślne, dlatego też użyliśmy jej tutaj.

 

Gdy omówiony kod ActionScript zostanie uruchomiony po wciśnięciu przycisku Submit, przesyłane jest wywołanie do serwera i centrum wykonawcze przechodzi wówczas do kodu PHP (który, przypadkiem, potrafi skierować użytkownika do innych zasobów filmu Flasha, jeśli tylko zdecydujesz, że tak ma być). Zauważ, że ponieważ zastosowaliśmy _self jako właściwość docelową w wywołaniu getURL, film Flasha zostanie umieszczony w oknie przeglądarki i zastąpiony danymi wyjściowymi wygenerowanymi przez skrypt PHP. Zamiast tego mogliśmy jako parametr docelowy wybrać właściwość _blank, co spowodowałoby wyświetlenie danych wyjściowych ze skryptu PHP w nowym oknie przeglądarki, opuszczając wywołujący uruchomiony film. Kolejną opcją, jeślibyśmy chcieli, aby film Flasha nadal był odtwarzany po wysłaniu informacji do skryptu PHP, byłoby zastosowanie akcji loadVariables.

 

Przygotujmy teraz plik skryptu PHP, który zostanie wywołany przez kod ActionScript –write_to_file.php.

7. Utwórz nowy plik tekstowy i wpisz w nim poniższy kod PHP, a następnie zapisz plik pod nazwą write_to_file.php:

<?php

$f=fopen("text_file.txt","a");

fwrite($f,"***************************************\r\n\r\n");

fwrite($f," Name:\t\t\t$n\r\n");

fwrite($f," E-Mail:\t\t$e\r\n\r\n");

fclose($f);

echo "<BR><BR><B>Submit successful!</B>";


?>


Nie przejmuj się składnią — zaraz ją wytłumaczymy.

8. Opublikuj film, a następnie umieść plik HTML, plik SWF i plik skryptu PHP w folderze domyślnej przeglądarki, którą wybrałeś na hosta — jak pamiętasz, mój folder nosi nazwę Flash 5 Studio Testing, a wyżej wymienione pliki zostaną umieszczone w domyślnym katalogu instalacyjnym serwera Apache, C:\Program Files\Apache Group\Apache\htdocs. 9. W przeglądarce wpisz adres URL strony HTML przechowującej plik SWF i wpisz w pola żądane dane zanim wciśniesz przycisk Submit:

 

Jeśli wszystko działa jak należy, w oknie przeglądarki powinna pojawić się poniższa wiadomość:

 

10. Teraz zajrzyj do foldera twojej macierzystej przeglądarki. Powinien się w nim zajmować nowy plik o nazwie text_file.txt:


 

 

11. Dwukrotnie kliknij na tym pliku aby obejrzeć owoce pracy języka PHP (i twojej):

 

Jak widać, skrypt PHP naprawdę wykonał swoje zadanie, poprzez przesłanie informacji z Flasha do pliku testowego na serwerze. Teraz dokładnie wyjaśnimy, jak do tego doszło...

No dobrze, Flash wydał polecenie getURL i za pomocą metody POST przekazała zmienne wpisane przez użytkownika na serwer. Po powrocie, uruchomiony zostaje skrypt PHP i przesyła nazwy zmiennych, jakie zdefiniowaliśmy dla wejściowych pól tekstowych (czyli n i e), plus wartości wpisane przez użytkownika — w tym przypadku były to Andy Corsham dla zmiennej n i andyc@foed.com dla zmiennej e.


Wyposażony w te zmienne skrypt PHP przystąpił do przetworzenia informacji za pomocą skryptu umieszczonego w pliku write_to_file.php. Przypomnijmy, jak wygląda ten skrypt w całości:

 

<?php fwrite($f,"***************************************\r\n\r\n");

fwrite($f," Name:\t\t\t$n\r\n");

fwrite($f," E-Mail:\t\t$e\r\n\r\n");

fclose($f);

echo "<BR><BR><B>Submit successful!</B>";

?>

Podobnie jak cały kod w języku PHP, ten fragment kodu rozpoczyna się znacznikiem otwierającym, który identyfikuje blok kodu jak skrypt PHP:

<?php

Pierwszy wiersz kodu w skrypcie otwiera plik tekstowy na serwerze, abyśmy mogli w

nim umieścić zmienne wysłane z Flasha:

$f=fopen("text_file.txt","a");

Symbol $f oznacza nazwę zmiennej, która stanowi skrót odnoszący się do pełnej nazwy pliku — ten odnośnik nosi również nazwę uchwytu pliku. Wszystkie zmienne w języku PHP identyfikuje się poprzez dodanie prefiksu w formie znaku dolara ($). Funkcja fopen języka PHP przypisuje zmiennej $f wartość i wysyła jej dwa parametry. Funkcja fopen otworzy plik o nazwie podanej w pierwszym parametrze w cudzysłowie — “text_file.txt”. Jeśli skrypt PHP nie może znaleźć nazwanego pliku, utworzy nowy o podanej nazwie. Drugi parametr, w tym przypadku jest to “a”, definiuje atrybuty (odczyt, zapis lub dopisywanie), z którymi plik zostanie otwarty. Tutaj zawsze otwieramy plik w trybie „dołącz”, aby każdą przesłaną parę wartości można było dodać na koniec pliku tekstowego.

Po otwarciu pliku tekstowego na serwerze, umieścimy w nim wartości zdefiniowane

we Flashu. Tutaj kluczową rolę odgrywa funkcja języka PHP, fwrite:

fwrite($f,"***************************************\r\n\r\n");

fwrite($f," Name:\t\t\t$n\r\n");

fwrite($f," E-Mail:\t\t$e\r\n\r\n");

Przeznaczeniem funkcji fwrite jest wpisywanie danych do plików, czyli dokładnie, to, czego potrzebujemy. Musimy wyposażyć tą funkcję dwoma parametrami: uchwytem pliku identyfikującym plik docelowy i ciągiem informacji, który ma zostać w pisany do pliku.

Pierwszy wiersz...

fwrite($f,"***************************************\r\n\r\n"); ...

wywołuje funkcję fwrite i za pomocą uchwytu pliku (odnośnika) $f skierowuje funkcję fwrite na nasz plik tekstowy. Następnie, w cudzysłowie, przekazujemy  funkcji fwrite dane do wpisania. W tym przypadku jest to ciąg gwiazdek, po którym następują znaki zwrotne (\r) i wysuw wiersza (\n). W efekcie utworzony zostaje wiersz „oddzielający” i odstęp w pliku testowym, który oddziela każdą parę wartości zmiennych, jaką przechowamy w pliku.

 

 

 

Następny wiersz faktycznie zajmuje się dostarczonymi przez Flasha zmiennymi:

fwrite($f," Name:\t\t\t$n\r\n");

 

Ponownie zastosowaliśmy tą samą kombinację fwrite($f, po której następuje otwarcie cudzysłowu oznaczające początek ciągu danych. Potem następuje kilka odstępów, a po nich tekst „Name:”; pojawi się on w pliku tekstowym dokładnie tak, jak został wpisany do skryptu. Za nim znajdują się trzy znaczniki (\t) i na koniec bardzo istotny znak $n. Pamiętaj, że w języku PHP symbol dolara oznacza zmienną, a po nim następuje nazwa zmiennej. Zatem zmienne $n w tym wierszu kodu odpowiada zmiennej n zdefiniowanej w pierwszym polu wejściowym filmu Flasha: nazwaliśmy tą zmienną $n skrypcie PHP, abyśmy mogli umieścić wartość ze zdefiniowanej we Flashu zmiennej n bezpośrednio w skrypcie PHP:

 

 

 

Nadanie zmiennych takich samych nazw w PHP i Flashu (bez identyfikatora $) tworzy ukryte łącze umożliwiające przesyłanie danych pomiędzy tymi dwoma programami.

Po wypisaniu wartości zmiennej pobranej z Flasha, wysyłamy znak powrotu karetki i nowego wiersza i jesteśmy już gotowi na napisanie kolejnego wiersza.

Na tym etapie w skrypcie PHP, plik docelowy wygląda w następująco:


 

 

 

Następny wiersz skryptu...

fwrite($f," E-Mail:\t\t$e\r\n\r\n");

...stosuje tą samą zasadę wpisania zmiennej $e (e w drugim polu wejściowym Flasha) w drugi wiersz w pliku testowym:

 

 

 

Następnie, po wysłaniu znaku powrotu karetki i nowego wiersza, zamykamy plik tekstowy za pomocą funkcji języka PHP fclose:

fclose($f);

Na koniec stosujemy polecenie echo do wysłania użytkownikowi wiadomości potwierdzającej uruchomienie skryptu PHP i dodanie danych do pliku tekstowego...


 

echo "<BR><BR><B>Submit successful!</B>";

... zanim zakończymy skrypt odpowiednim znacznikiem:

 

?>

 

Po dwóch wpisach dokonanych przez różnych użytkowników, nasz plik tekstowy będzie wyglądać mniej więcej tak:

 

 


 


 


 


 

 

 

 

 

 

 

 

...
Zgłoś jeśli naruszono regulamin