Ik was van de week gezellig aan het experimenteren met het inlezen van mysql data (via php) in flash. Momenteel heb ik pas 2 methodes uitgeprobeerd:
1. Via PHP een stuk Xml parsen, en dat dan inlezen in flash.
2. Doormiddel van Amfphp direct het resultaat van een query als array doorpasen naar flash.
Dit werkt allemaal prima, echter loop ik behoorlijk te klooien met de security sandbox van Flash.
Wat doe ik:
In het geval van amfphp, maak ik de verbinding tussen flash, en amfphp doormiddel van:
Met het connect commando, geef ik nu dus de locatie van de gateway.php mee (uiteraard via het 'webadres', en niet via het filesystem (c:\blabla\gateway.php) zodat de php file ook daadwerkelijk geparsed wordt.
Dit werkt prima. Mits ik in mijn browser de swf file (of de html file die de swf embed bevat) ook maar de boel aanroep via http:// 127.0.0.1 (wanneer ik zelfs al http://localhost gebruik, begint de security sandbox van flash te miepen...)
Nu benader ik mijn thuisservertje van een andere computer hier in het netwerk, (bijvoorbeeld in de zin van: http:// 192.168.1.11/flashapp.html, krijg ik weer een security sandbox fout....
Logisch, want mijn flash applicatie wil verbinden naar http:// 127.0.0.1/amfphp/gateway.php
Dus zou je zeggen: verander deze regel naar http:// 192.168.1.11/amfphp/gateway.php en het probleem is opgelost...
Maar dit is niet de manier hoe ik wil dat mijn flash applicatie verbindt met de amfphp gateway...
Ik wil namelijk dat mijn flash applicatie gewoon via 127.0.0.1 verbindt met mijn amfphp gateway (net zoals php gewoon via localhost met een database verbindt.
(bijwerking is namelijk ook, dat als je je flash filetje verhuisd naar een andere server, je deze regel weer moet aanpassen in flash)
Nou zou een crossdomain.xml bestand hiervoor de oplossing zijn, maar wat blijkt.... Ik krijg dit totaal niet werkend.
Ik maak heb het volgende crossdomain.xml bestand in de root van mijn server gezet:
Maar helaas, zelfs met deze xml file krijg ik nog een security fout...
Tevens heb ik ook de boel via flash aan de gang proberen te krijgen doormiddel van het commando:
Security.allowDomain
Maar dat werkte helaas ook al niet....
Mijn vraag: Zie ik nu iets compleet over het hoofd? (moet ik nog tegen flash zeggen dat die crossdomain.xml bestaat?) Is het incorrect om via de localhost verbinding te maken met een php/xml/whatever file?
Alvast bedankt
Dikke Edit:
Nu eens zo snugger geweest om het op de volgende manier te doen:
En, het werkt! woeh!.... Wel raar... want ik had verwacht dat mijn php file nou niet zou parsen.. maar dat doettie natuurlijk wel omdat deze eigenlijk via "http://servernaam/amfphp/gateway.php wordt aangeroepen...
1. Via PHP een stuk Xml parsen, en dat dan inlezen in flash.
2. Doormiddel van Amfphp direct het resultaat van een query als array doorpasen naar flash.
Dit werkt allemaal prima, echter loop ik behoorlijk te klooien met de security sandbox van Flash.
Wat doe ik:
In het geval van amfphp, maak ik de verbinding tussen flash, en amfphp doormiddel van:
code:
1
2
3
4
| // ---------------------- Maak een amf verbinding met Amfphp var gw:NetConnection = new NetConnection(); gw.connect("http://127.0.0.1/amfphp/gateway.php"); var res:Responder = new Responder(onResult, onFault); |
Met het connect commando, geef ik nu dus de locatie van de gateway.php mee (uiteraard via het 'webadres', en niet via het filesystem (c:\blabla\gateway.php) zodat de php file ook daadwerkelijk geparsed wordt.
Dit werkt prima. Mits ik in mijn browser de swf file (of de html file die de swf embed bevat) ook maar de boel aanroep via http:// 127.0.0.1 (wanneer ik zelfs al http://localhost gebruik, begint de security sandbox van flash te miepen...)
Nu benader ik mijn thuisservertje van een andere computer hier in het netwerk, (bijvoorbeeld in de zin van: http:// 192.168.1.11/flashapp.html, krijg ik weer een security sandbox fout....
Logisch, want mijn flash applicatie wil verbinden naar http:// 127.0.0.1/amfphp/gateway.php
Dus zou je zeggen: verander deze regel naar http:// 192.168.1.11/amfphp/gateway.php en het probleem is opgelost...
Maar dit is niet de manier hoe ik wil dat mijn flash applicatie verbindt met de amfphp gateway...
Ik wil namelijk dat mijn flash applicatie gewoon via 127.0.0.1 verbindt met mijn amfphp gateway (net zoals php gewoon via localhost met een database verbindt.
(bijwerking is namelijk ook, dat als je je flash filetje verhuisd naar een andere server, je deze regel weer moet aanpassen in flash)
Nou zou een crossdomain.xml bestand hiervoor de oplossing zijn, maar wat blijkt.... Ik krijg dit totaal niet werkend.
Ik maak heb het volgende crossdomain.xml bestand in de root van mijn server gezet:
code:
1
2
3
4
5
| <?xml version="1.0"?> <!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd"> <cross-domain-policy> <allow-access-from domain="*" /> </cross-domain-policy> |
Maar helaas, zelfs met deze xml file krijg ik nog een security fout...
Tevens heb ik ook de boel via flash aan de gang proberen te krijgen doormiddel van het commando:
Security.allowDomain
Maar dat werkte helaas ook al niet....
Mijn vraag: Zie ik nu iets compleet over het hoofd? (moet ik nog tegen flash zeggen dat die crossdomain.xml bestaat?) Is het incorrect om via de localhost verbinding te maken met een php/xml/whatever file?
Alvast bedankt
Dikke Edit:
Nu eens zo snugger geweest om het op de volgende manier te doen:
code:
1
| gw.connect("/amfphp/gateway.php"); |
En, het werkt! woeh!.... Wel raar... want ik had verwacht dat mijn php file nou niet zou parsen.. maar dat doettie natuurlijk wel omdat deze eigenlijk via "http://servernaam/amfphp/gateway.php wordt aangeroepen...
[ Voor 5% gewijzigd door Verwijderd op 28-09-2009 14:55 ]