Clonk
Messages postés278Date d'inscriptionmardi 22 janvier 2002StatutMembreDernière intervention29 août 2006
-
13 avril 2005 à 20:41
Clonk
Messages postés278Date d'inscriptionmardi 22 janvier 2002StatutMembreDernière intervention29 août 2006
-
14 avril 2005 à 18:24
Bonjour,
bon ça fait 2 jours que je me suis mis à Flash et j'ai un petit
problème. Je veux faire communiquer 2 swf entre eux, le princip est
simple : login + mot de passe pour avoir accès à certaines parties du
site. J'interface tout ça avec php (me demandez pas de changer ça, jme
base sur une archi déjà existante et qui marche très bien comme ça )
Alors, dans mon premier swf, l'ai un calque que j'ai nommé "script" ou j'ai le code suivant :
//creation de l'objet loader
var my_mcl = new MovieClipLoader();
var nb = 0;
//création d'un canal de communication entre les swf :
reception = new LocalConnection();
reception.login = function() {
lireLogin();
};
fichierLogin = "login.php";
chargement = new LoadVars();
chargement.onLoad = function() {
if (this["message"] == "nologin") {
_root.login.htmlText = "";
my_mcl.loadClip("login.swf", login_mcl);
} else {
_root.login.htmlText = this["message"];
}
};
//lecture du fichier de login :
function lireLogin() {
chargement.load(fichierLogin);
}
lireLogin();
//connection au canal
reception.connect("CanalA");
et dans mon autre swf, celui qui doit envoyer la demande de relancer lireLogin(), pour un bouton (je précise) :
on(release) {
chargement = new LoadVars();
//on va déjà relancer le fichier login.php avec les
//valeur de login et pass (méthode POST, c'est plus
//secure :) --> http://developpeur.journaldunet.com/tutoriel/fla/021011fla_phplivredor1a.shtml
if (login != "" && pass !="") {
//ATTENTION! le nom des variables
doivent être celles utilisées dans le fichier php avec le $_POST[]
chargement.login = _root.login.text;
chargement.pass = _root.pass.text;
chargement.sendAndLoad("login.php", chargement);
//on n'a plus qu'à demander au main (back.swf) de recharger sa fonction de vérification :
//on crée un canal de communication avec le swf principal (cf : back.fla)
emetteur = new LocalConnection();
if (_root.login != "" && _root.pass != ""){
emetteur.send("CanalA", "login");
}
else
_root.login.htmlText= "ca va pas";
}
}
mais la communication ne passe pas... que faire?
Pour ceux qui en font depuis + de 2 jours c'est peut être évident, mais pas pour moi
_benjy
Messages postés1575Date d'inscriptionvendredi 23 avril 2004StatutMembreDernière intervention21 février 20112 14 avril 2005 à 02:34
a premiere vu ton prob vient de tes appel php, je m'explique
en php il n'y a pas persistence de variables (si ce n'est les var server)
or tu appel un script php depuis un swf (swf1 on va dire)
php execute le code et renvois les resultats (si t'avais utilisé sendAndLoad et non juste send)
et tu dis a un second swf de chargé ce que php a écrit
mais les données généré par ton premier appel (LoadVar.send) disparaisent kan t'appel a nouveau ton php dans swf2 (LoadVar.load)
c'est comme si tu voulais affiché la page http://tralala.com/php.php?login=aaa&mdp=zzz et affiché comme résultat http://tralala.com/php.php
understand ?
je pense que ca viens plutot de là.
test en degugant (un petit trace(..)) pour vérifier tes appel interSwf (LocalConnexion), mais j'y vois pas d'erreurs.
Clonk
Messages postés278Date d'inscriptionmardi 22 janvier 2002StatutMembreDernière intervention29 août 2006 14 avril 2005 à 18:24
Je suis d'accord sur ce que tu viens de me dire, mais justement, j'utilise des sessions.
Si mes login et mot de passe sont bons, je crée une session : $_SESSION['user'] = $_GET['login'];
et je la récupère par l'autre swf avec : echo $_SESSION['user'];
Mias en fait j'ai capté que je n'avais pas besoin de LocalConnexion(),
le 2eme swf est dans le premier, mais je conaissais pas la technique
pour les faire bosser en encapsulation