Caricare dati in flash da un dominio esterno
Per motivi di sicurezza da flash non è possibile caricare variabili o files che risiedono su un altro dominio. Questa limitazione è dovuta al "Security Sandbox" che è stato implementato nella versione 6 del FlashPlayer per assicurare un certo livello di sicurezza sia per il nostro filmato che per la macchina dell'utente.In pratica il security sandbox definisce le fonti da cui il filmato falsh può ricevere dati.
Il security sandbox consente di accedere a:
1) tutto ciò che è contenuto
nel file .swf
2) files ospitati da servers compresi nello
stesso dominio del filmato.
3) Local SharedObjects scritti da filmati
flash compresi nello stesso dominio
4 alcune informazioni sulla macchina su cui
sta girando il filmato.
5) azione dell'utene rivolte al
filmato, eventi di mause e tastiera.
Nella security sandbox non sono compresi files e variabili
allocati su altri domini ma usando la funzione readfile di
php è possibile raggirare facilmente questa
limitazione.
Esempio 1 - Caricare file XML da dominio esterno
In questo esempio vogliamo caricare da macromedia.com il "Macromedia XML Resource Feed" , ovvero un file xml sempre aggiornato che fornisce informazioni sugli ultimi tutorials e risorse pubblicati su MM.com.
http://www.macromedia.com/devnet/resources/macromedia_resources.xml
per prima cosa dobbiamo creare il file .php che farà da proxy tra il nostro filmato flash e il file xml. Questo semplice script php, tramite la funzione readfile(), legge il contenuto del file remoto e restituisce i dati in output. Dato che la pagina php risiede sullo stesso dominio del filmato flash questo non si accorgerà di aver ricevuto dati da un dominio esterno.
<?php $xmlFeed = "http://www.macromedia.com/desdev/resources/macromedia_resources.xml"; readfile($xmlFeed); ?>
in flash invece di passare al metodo load l'url del file
xml , passiamo l'url della pagina php
myXml = new XML();
myXml.onLoad = function(success)
{
if(success)
{
trace("xml feed:
" +this);
} else {
trace("errore");
}
}
myXml.load("http://percorso/proxy.php");
abbastanza semplice no?
usando questa tecnica potete facilmente caricare da domini
esterni , variabili, suoni e immagini :)
Esempio 2 - Caricare immagini da dominio esterno
in questo esempio usiamo la stessa tecnica per caricare immagini.