Flash rychle a snadno 11. - Jak propojit webové databázové rozhraní s Flashem?

Tak na to se dnes podíváme s naším seriálem a využijeme k tomu velmi jednoduchý skript v jazyce php v rámci dílu o načítání a odesílání dat z a do Flashe.
Na úvod jednu žhavou novinku: od tohoto dílu bude na vaše četná přání možno stáhnout si přímo v rámci jednotlivých lekcí některé zdrojové kódy, což ale nijak neovlivní stávající „náhledo-mánii“, protože názornosti není nikdy dost. Pro tentokrát se také lehce odkloníme od tvorby her, ale celá dnešní kapitola je poměrně důležitá, a proto ji na naši hru aplikujeme až příště.

Flash a databáze?

Možná vás napadá, proč se vůbec něčím takovým zabývat? Je to přece jenom dosti specifické a pro „obyčejné“ flashaře takřka nepoužitelné propojení. Ovšem pozor!:) Představme si následující případ. Klient chce zobrazovat v rámci reklamního proužku na svou stránku aktuální cenu draženého výrobku, na který tato reklama upozorňuje. Úplně stejně může chtít zobrazit aktuální počet zákazníků své firmy, nebo třeba počet přístupů na svou stránku. Možností využití už bychom zde rozhodně našli. Ovšem jak na to? Pokud nechceme z Flashe volat pouze URL, ale musíme zpracovat výsledek našeho volání, máme k tomu určenu třeba následující funkci:

loadVariables

Tato funkce načte proměnné z určitého souboru do určité úrovně nebo movie klipu. V praxi to znamená, že pokud máme na webu někde třeba uložen textový soubor s aktuálními daty, které má Flash využít, načteme je do Flashe coby proměnné a můžeme s nimi dále pracovat. Začneme rovnou názorným příkladem, kterým zároveň opět nahlédneme na události onClipEvent.

Načítání dat ze souboru TXT

Celý postup načtení je poměrně jednoduchý, proto si ho budeme demonstrovat tak, že vložíme na scénu movie klip, který – když jsou do něj načtena data – začne být aktivní. Ovládacím tlačítkem poté spustíme načtení dat. Výsledný náhled na scénu na prvním snímku bude tedy tento:

Klepněte pro větší obrázek

Jak z něho vyplývá, použijeme jedno tlačítko a jeden prázdný movie klip, který bude instancí. Začneme tedy stavbou scény.

  • Vytvoříme 4 vrstvy, pro jména snímků, akce, movie klip a tlačítko.
  • Vytvoříme 3 klíčové snímky, 2. a 3. se jmény pokracovat a skoncit.
  • Na každý klíčový snímek vložíme akci stop();.
  • Vytvoříme si tlačítko pro načtení dat a umístíme ho do prvního klíčového snímku na scénu.
  • Vytvoříme si prázdný movie clip.
  • Vložíme prázdný klip na scénu a pojmenujeme ho dataClip.
  • Do vrstvy s movie clipem vložíme na druhém a třetím snímku místo něj nápisy pro informaci o výsledku načtení dat, třeba ANO/NE.
Nyní by scéna měla vypadat takto:

Klepněte pro větší obrázek

Dalším krokem je přiřadit akci našemu tlačítku; řekněme tedy, že budeme načítat data ze souboru data.txt, a tak použijeme následující akce:

Klepněte pro větší obrázek

Z toho lze vyvodit, že bychom měli vytvořit soubor data.txt a mít ho uložen ve stejném adresáři jako výsledný swf produkt. Prozatím do něj vložíme pouze 2 proměnné, s nimiž budeme poté operovat. Bude vypadat takto:

neco1=1&neco2=1

Jak vidíte, zůstává zachován tvar jako při odesílání dat pomocí metody GET v adresním řádku prohlížeče, a proto je snadné nastavovat tímto způsobem data do Flashe z externích zdrojů.

Posledním krokem stavby našeho prvního modelu pro načítání dat je vytvoření kódu pro zpracování událostí po aktivování movie clipu pro data. K tomu využijeme funkce onClipEvent(data), jež je aktivována přesně ve chvíli, kterou nyní potřebujeme, tedy při přijetí dat. Nejprve proto zkontrolujeme, že se načetla data v pořádku, a pokud ano, pokračujeme na další klíčový snímek, jinak jdeme až na ten poslední.

Klepněte pro větší obrázek

Jak vidíte, na načítání dat z externího souboru nic moc není:), ale jak bylo předesláno, ZDE je možnost stáhnout si ještě zdrojový kód celého příkladu (3,49 kB).

Jak načíst data ze souboru?

Pokud chceme načíst nějaká aktuální data a nepotřebujeme načtení nijak zvlášť ovlivňovat, tedy pokud náš skript potřebné údaje získá bez jakékoliv pomoci sám, může pro tento účel použít stejný model jako před chvílí. Představme si, že chceme načíst aktuální výrobek dne a jeho cenu. Pro to si nejprve změníme odkaz na snímku jedna na data.php (tento příklad potom bude fungovat pouze na webu nebo domácím serveru, protože skript nezpracovává browser, ale server). Dále si do snímku dva přidáme vypsání položek neco1 (výrobek) a neco2 (cena). K tomu použijeme dynamické textové pole se jmény neco1 a neco2.

Klepněte pro větší obrázek

Ještě zbývá upravit načítání proměnných, aby se načetly i globálně:

Klepněte pro větší obrázek

Nyní již k samotnému skriptu:

Data.php

<?
mysql_connect("localhost","root","heslo"); /* Připojení k serveru */
$db=MySQL_Select_DB("test"); /* Připojení k databázi */

$query=MySQL_Query("Select Vyrobek, Cena from Tabulka order by ID DESC limit 1"); /* Zvolení nejaktuálnějších polí Vyrobek a Cena z tabulky Tabulka podle identifikačního čísla ID */
$fetch=MySQL_Fetch_Array($query); /* Zpracování výsledku do pole */

$neco1=$fetch["Vyrobek"]; /* Uložení Vyrobku do proměnné neco1 */
$neco2=$fetch["Cena"]; /* Uložení Ceny do proměnné neco2 */
?>
neco1=<?echo $neco1;?>&neco2=<?echo $neco2;?>

Celý skript jsme si zdokumentovali a na jeho konci můžete vidět HTML kód a vypsání proměnných. Pouze tyto údaje jsou odeslány Flashi. Náš nový příklad si můžete stáhnout ZDE.

Odesílání proměnných skriptu

Představme si další modelový příklad: Chceme odeslat dotaz našemu serveru, ale spolu s ním chceme připojit uživatelské proměnné, které jsou načteny ve Flashi, coby ověřovací klíč. Vytvoříme si tedy další modifikaci úvodního příkladu dnešní lekce. Na snímku 1 si definujeme dvě proměnné, user a password.

Klepněte pro větší obrázek

Dále je odešleme na náš nový skript info.php takto:

Klepněte pro větší obrázek

Poskládali jsme tedy jednoduchý řetězec pro odeslání dat, A nyní nám již stačí náš skript rozšířit třeba takto:

Info.php

<?
if(($user==“root“)and($password==“heslo“)):
mysql_connect("localhost","root","heslo"); /* Připojení k serveru */
$db=MySQL_Select_DB("test"); /* Připojení k databázi */

$query=MySQL_Query("Select Vyrobek, Cena from Tabulka order by ID DESC limit 1"); /* Zvolení nejaktuálnějších polí Vyrobek a Cena z tabulky Tabulka podle identifikačního čísla ID */
$fetch=MySQL_Fetch_Array($query); /* Zpracování výsledku do pole */

$neco1=$fetch["Vyrobek"]; /* Uložení Vyrobku do proměnné neco1 */
$neco2=$fetch["Cena"]; /* Uložení Ceny do proměnné neco2 */
else:
$neco1=0;
$neco2=0;
endif;
?>
neco1=<?echo $neco1;?>&neco2=<?echo $neco2;?>

Výsledek si opět můžete stáhnout TADY. Tím bychom pro dnešek zanechali komunikace Flash – web tak jak je, příště si díky tomu vyřešíme v naší hře formulář pro odeslání hráčských údajů na web. Dnes se na závěr ještě stručně zmíním o bezpečnosti Flashe.

Bezpečnost Flashe?

Na úvod je slušné říci, že tento krátký popis nevýhod bezpečnosti Flashe mu nijak zvlášť neubírá na kráse, spíše na komerčním využití. Veškerou bezpečnost Flashe, který nedovoluje zobrazit zdrojový action script ve formě swf souboru, totiž prolomil program, který přesně toto dovedl. Tím se rapidně změnily všechny poměry ochrany Flashe, nestačilo už totiž ve Flashi zakódovat data před odesláním na server, protože „hacker“ (nebo lammer – nezkušený hacker) by si mohl zobrazit kódovací algoritmus a napodobit ho ve svém vlastním vytvořeném filmu. Takto by šly v podstatě obejít všechny bariéry, ale pokud chceme jít cestou mírného odporu, postačí nám jeden základní tip: totiž monitorovat v průběhu běhu flashového filmu, před ním i po něm, že jsou načteny správné stránky a ve správných časových intervalech +-. Dále je důležité ošetřovat stránky proti možném reloadu s načteným Flashem, pokud má jeho obsah být generován pouze jednou (například hraní her na počet nejlepšího průměrného hráčského skóre), k tomu stačí při vstupu na tuto stránku otevřít v databázi hráči nový herní údaj, a pokud se nedoplní po řádném dohraní hry, prostě mu bude započítáno skóre 0. Na závěr si dnes ukážeme část kódovacího algoritmu:

Klepněte pro větší obrázek

A co příště?

Příští týden si naši hru upravíme do konečné podoby díky formuláři pro odeslání hráčských dat a ukážeme si možnosti Debuggeru.
Diskuze (6) Další článek: KSCM.cz hacknuto, opět

Témata článku: Software, Programování, Flash, Stejný závěr, Důležitá událost, Root, Základní tip, Order, Uložená data, Movie, Textové pole, Jak, Echo, Klíčový snímek


Určitě si přečtěte

Výmluvy filmových pirátů jsou stejně ostudné jako český autorský zákon (komentář)

Výmluvy filmových pirátů jsou stejně ostudné jako český autorský zákon (komentář)

** Autorský zákon vůbec nerespektuje internet a současnou realitu. ** Je stahování filmů legální a jaké se na to vztahují výjimky? ** Proč a za co všechno platíme výpalné?

Lukáš Václavík | 361

Lukáš Václavík
PirátstvíHudba, filmy, seriály
Konec modrých obrazovek smrti? Microsoft vydává mimořádnou aktualizaci pro Windows 10
Karel Kilián
Windows UpdateAktualizaceWindows 10
Google vymyslel technologii superpřesného GPS. Už ji podporuje Pixel 5 a dorazí i na ostatní telefony

Google vymyslel technologii superpřesného GPS. Už ji podporuje Pixel 5 a dorazí i na ostatní telefony

** Kvalita GPS ve městech občas stojí za starou bačkoru ** Mohou za to odrazy signálu od okolních budov ** Google má jejich 3D model, a tak spolupracuje s výrobci GPS čipů

Jakub Čížek | 44

Jakub Čížek
NavigaceTechnologieGoogle
Fedora 33 prostě funguje. Linux si zaslouží dobýt laptop, je to ale asi opět marné

Fedora 33 prostě funguje. Linux si zaslouží dobýt laptop, je to ale asi opět marné

** Desktopový Linux funguje a vypadá stále lépe ** Fedora 33 není výjimkou ** Ve stínu Windows a macOS tu vyrostly skvělé alternativy

Jakub Čížek | 167

Jakub Čížek
FedoraOperační systémyLinux
Volitelná aktualizace Windows 10 opravila několik chyb, způsobila ale další problémy
Karel Kilián
Windows UpdateAktualizaceWindows 10
Čekali jsme skoro šest let. Android Auto jede do Česka i na Slovensko
Lukáš Václavík
Android AutoNavigaceGoogle
Týden Živě: On fakt dnes ještě někdo stahuje filmy z Ulož.to?

Týden Živě: On fakt dnes ještě někdo stahuje filmy z Ulož.to?

** Kauza Ulož.to a proč my dva už (moc) newarezíme ** Windows 10X existují, ale nabízí se otázka proč ** Nissan ukázal vizi kanceláře v podobě karavanu

Jakub Čížek, Vladislav Kluska | 152

Jakub ČížekVladislav Kluska
Týden ŽivěVideo

Aktuální číslo časopisu Computer

Megatest rychlých Wi-Fi 6 routerů

Jak ztišit počítač

Velký test mATX skříní