[Flash][PHP] Jak zapisać dane pochodzące z animacji do pliku lub do bazy danych?
Chcesz zapisać dane pochodzące z pól tekstowych lub zmiennych w animacji Flash do pliku tekstowego lub bazy danych. Może to być podobne rozwiązanie, jak w poniższym przykładzie (rysunek). Kod źródłowy przykładu możesz pobrać na dysk, na końcu porady.
Zapisywanie danych jest ważną i przydatną czynnością, szczególnie w takich aplikacjach, które mają przechować ustawienia użytkownika, zapisać wynik gry, tworzyć rankingi, księgi gości czy też służyć do zapamiętywania loginu i hasła. Możesz zapisać dane wpisywane przez użytkownika, parametry programu, zmienne, itp.
Stwórzmy prosty przykład, gdzie dane wpisane do dwóch pól tekstowych we Flashu zapiszemy do pliku .txt na serwerze. W tym celu utwórz dwa pola tekstowe i nazwij je np. pole1 oraz pole2. Wykonaj guzik (obiekt typu Button), który zapisze dane i w tym celu przypnij do niego poniższą akcję:
on (release) {
txt1 = escape(_root.pole1);
txt2 = escape(_root.pole2);
loadVariables("http://serwer.pl/index.php?p1="+txt1+"&p2="+txt2,"");
}
Po kliknięciu w guzik (on release), zmienne txt1 i txt2 pobiorą zawartość pól, a więc dane, jakie do nich wpiszemy. Znaki specjalne w zmiennych, za pomocą funkcji escape(), zostaną przekształcone do postaci, która umożliwia przesłanie ich w adresie URL. A więc np. przecinek zostanie zakodowany jako %2C.
Niestety, escape() powoduje problemy z polskimi znakami, więc jeżeli będziesz z polskich znaków korzystać, musisz napisać własną funkcję, która zakoduje znaki specjalne do ich reprezentacji szesnatkowej, bezpiecznej do przesłania w adresie URL.
Funkcja loadVariables() służy do pobierania danych i pozwala wywołać dowolną stronę, która przekaże dane do animacji. W jej wywołaniu musisz podać adres strony i poziom (level), na który zostaną wpisane dane. Ponieważ nie chcemy pobierać danych, poziom nie ma znaczenia, stąd po przecinku na końcu znajduje się pusty parametr.
Wykorzystując tą funkcję nie będziemy nic pobierać do animacji. Użyjemy jej do wysłania danych, a dokładniej do przekazania danych do wybranego skryptu PHP, który odbierze dane umieszczone w parametrach i zapisze je do pliku lub w bazie danych. Po prostu uruchomimy w ten sposób jakiś skrypt, podobnie jakbyśmy wpisali mu parametry ręcznie, w przeglądarce.
Ponieważ wywołujemy adres strony WWW, dane przesyłane są metodą GET. Skrypt pobierze dane i umożliwi dowolne przetworzenie ich do własnych celów. Wystarczy, że wewnątrz strony index.php, do której się odwołujemy, umieścisz skrypt:
<?
$f=fopen("dane.txt","a");
fputs($f,$HTTP_GET_VARS["p1"]." - ");
fputs($f,$HTTP_GET_VARS["p2"]."\n");
fclose($f);
?>
Zapisze on do pliku dane.txt pola z pochodzące z animacji Flash i przekazane do skryptu w adresie URL. Nic nie stoi na przeszkodzie aby dane zapisać do bazy danych lub wysłać je mailem do dowolnego adresata. Możesz w ten sposób przekazywać dane pochodzące z pól lub inne zmienne użyte w animacji Flash.
Ważne jest to, że udało się przekazać dane między animacją Flash i skryptem PHP, który z tymi danymi może zrobić wszystko, podobnie jakbyśmy przekazali do skryptu PHP dane z formularza metodą GET.