Contournement du problème de sécurité crossdomain de flash pour le chargement de données !

0/5 (13 avis)

Snippet vu 13 840 fois - Téléchargée 34 fois

Contenu du snippet

Bonjour tout le monde !!!

Bon voici la problèmatique :
On voudrait pouvoir charger des données issues de fichiers txt, xml ou autre depuis des sites vers le site où se trouve le flash.
C'est à dire que par exemple un flash situé sur toto.com voudrait lire les données d'un fichier xml se trouvant sur tonsite.com.

Si depuis votre machine en local, tout fonctionne bien, il en est tout autrement lorsque votre appli est sur votre site internet.
En effet, la politique de sécurité de macromedia interdit de charger des données depuis d'autres site.
Pour que cela fonctionne, il suffit de mettre un fichier XML du nom de crossdomain.xml qui contient dans ses balises, le nom du domaine du site appelant.
On voit de suite que c'est pas très pratique.

Ma solution :
Elle est hyper simple, il suffit de passer par un PHP !

Source / Exemple :


Voilà comment tout cela se passe.

Côté flash :

data_xml  = new XML();
var_xml    = new LoadVars();
data_xml.ignoreWhite = true; // pas toujours utile selon ce qu'on veut faire.

// on passe la variable urls à php avec l'url du site distant
var_xml.urls="http://www.tonsite.com/fichier.xml";

//on envoi cette variable et on attends en retour le fichier complet avec balises et tout et tout ....
var_xml.sendAndLoad("http://www.monsite.com/parse.php",data_xml);	

data_xml.onLoad = function() {
                                                 Noeud1 = this.firstChild;
                                                 //affichage du contenu du 1er noeud
                                                 trace(Noeud1);
                                                 //traitement des données du xml de votre choix
if (this.loaded) {
                        // affichage du code de status du xml (voir la doc de flasj pour les codes de retour)
                        trace(data_xml.status);
                        trace(" voilà c'est chargé, si vos données sont dans des tableaux vous pouvez travailler avec :!!!");
                        }//loaded
}// onload

//****************************************************
Maintenant voyons le PHP : (parse.php)

<?php
function global_var($var) {

global $HTTP_POST_VARS, $HTTP_GET_VARS;
if (!empty($HTTP_POST_VARS[$var])) {
                                    return $HTTP_POST_VARS[$var];
                                   }elseif (!empty($HTTP_GET_VARS[$var]))
				 	    {
                                    return $HTTP_GET_VARS[$var];
                                    }else{
                                          return '';
                                          }
                                   }

$urls = global_var('urls');
$fcontents = join( '', file( $urls ) );
echo $fcontents;
?>		
---->>>>>>
Voilà ya pas plus simple au niveau du php.

Maintenant vous pouvez transposer cela avec des fichiers txt ou autre en utilisant le meme principe, mais avec LoadVars pour des fichiers TXT. Il me semble que loadvars n'a pas ce problème de sécurité mais sait-on jamais ce que macromédia nous réserve dans sa version prochaine de flash.

Enfin pour le problème de XML c'est ma solution et ça fonctionne bien.

Conclusion :


Sinon j'ai vu que les webmasters ont ajouté la rubrique CLASS c'est classe !

Bon je ne maitrise pas encore bien les class alors si ToP30 (qui me les a fait découvrir) ou un autre codeur, avait envie et surtout le temps de faire de ma source une class, ce serait trop Classe ... arf non Top ! (lol)

A voir également

Ajouter un commentaire Commentaires
legurou Messages postés 1 Date d'inscription lundi 25 juin 2007 Statut Membre Dernière intervention 22 août 2008
22 août 2008 à 23:57
Je vois pas comment on utilise ce script !
Enfaite, j'utilise un truc flash deja fait qui prend directement le fichier xml ou le lien du flux. Je fait comment pour lui assigné de passer par le php?
okaneganai Messages postés 47 Date d'inscription mercredi 10 novembre 2004 Statut Membre Dernière intervention 23 mai 2006
28 août 2005 à 14:35
Merveilleux!!!!
C'est exactement ce que je cherchais!!!
bravo et merci!!!
cs_alexblue Messages postés 6 Date d'inscription samedi 28 mai 2005 Statut Membre Dernière intervention 6 juin 2005
6 juin 2005 à 16:29
J'ai changé d'hébergeur (iFrance --> Multimania), et ça ne renvoit toujours rien.... :(
Loubiou Messages postés 150 Date d'inscription mercredi 26 juin 2002 Statut Membre Dernière intervention 5 décembre 2008
6 juin 2005 à 10:40
oui ! en effet, il faut que tu retouches le code PHP.
Me demande quelle version de php ils ont mis en ligne chez ifrance ???
Enfin tu es bien le 1er à avor un pb avec mon script ! arff
Regardes si tu mets bien tout en minuscules partout ....
Allez bon courage tu vas y arriver
cs_alexblue Messages postés 6 Date d'inscription samedi 28 mai 2005 Statut Membre Dernière intervention 6 juin 2005
6 juin 2005 à 10:22
Le PHP fonctionne sur mon site... j'ai déjà plusieurs fichiers PHP. Je suis chez iFrance et j'ai Flash MX 6.0.
En local ça ne fonctionne pas non plus... il me sort du texte correspondant à du javascript.
J'ai l'impression que ça vient du fichier PHP... lorsque je le lis, il m'écrit :
Warning: join(): Bad arguments. in /www/.........../site/parse.php on line 16
Afficher les 13 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.