volgur Posté(e) le 16 avril 2008 Partager Posté(e) le 16 avril 2008 Bonjour tout le monde, Voila j'ai un énorme soucis puisque je ne comprends absolument pas comment j'obtiens une boucle infinie lors de l'exécution de mon programme, sachant que cela vient d'un simple if. Voici le code en question : stop(); fenetre.annuler._visible=true; fenetre.ok._visible=true; //Fonction d'authentification function authentification(){ var envoie=new LoadVars(); var retour=new LoadVars(); envoie.login=fenetre.login.text; envoie.passwd=fenetre.passwd.text; envoie.sendAndLoad("authentification.asp", retour, "POST"); retour.onLoad=function(succes) { fenetre._visible=false; if(succes==true){ if(retour.rep=="OK") { //Authentification réussie fenetre.login.text=""; fenetre.passwd.text=""; aok._visible=true; }else{ //Authentification refusée pour cause de mauvais login/password anok._visible=true; } }else{ //Erreur de serveur ASP } } } fenetre.ok.onRelease=function(){ authentification(); } Sachant que le if qui fait tout foiré c'est celui-ci if(succes==true){ Si je le vire, le programme ne bloque plus, mais la condition if(retour.rep=="OK") { //Authentification réussie n'est jamais validée... Si quelqu'un voit d'où vient le problème, merci de m'aider. Bonne journée Lien vers le commentaire Partager sur d’autres sites More sharing options...
Eagle1 Posté(e) le 16 avril 2008 Partager Posté(e) le 16 avril 2008 je ne connais pas AS2 déjà tu ne peux pas avoir une boucle infini avec un if, if n'étant pas une boucle... si ça : if(succes==true){ ne marche pas c'est à mon avis à cause de ça : retour.onLoad=function(succes) { que je ne comprend pas et si ça : if(retour.rep=="OK") { //Authentification réussie n'est jamais validé c'est une erreur dans l'asp on dirait ou alors c'est que le programme n'y va jamais, et donc c'est à cause du problème cité au-dessus mais comme je te dit je connais pas l' AS2 Lien vers le commentaire Partager sur d’autres sites More sharing options...
volgur Posté(e) le 16 avril 2008 Auteur Partager Posté(e) le 16 avril 2008 Je suis d'accord avec toi, étant un if, ça ne peut normalement pas faire de boucle infinie. J'ai juste employé le terme pour dire que le programme bloquait, enfin j'ai jamais vu ça avec un if/else quoi Pour ma part je suis débutant en AS2, mais la fonction retour.onLoad=function(succes) permet (normalement) de tester si la variable (ici la variable que renvoie le serveur c'est rep) a bien été récupéré (succes==true) ou pas. Donc en fait quand je test si if(succes==true) c'est uniquement pour savoir si la variable a été récupéré ou pas. Si elle l'est, elle devrait m'afficher un message, et si elle l'était pas, elle devrait m'en afficher un autre. Or là, rien du tout. Le programme se bloque totalement, et je ne sais absolument pas pourquoi Lien vers le commentaire Partager sur d’autres sites More sharing options...
Spaz001 Posté(e) le 16 avril 2008 Partager Posté(e) le 16 avril 2008 Essaye déjà en faisant ton sendAndLoad après avoir défini ta fonction qui gère l'évènement onLoad. Et essaye de voir le code HTTP que tu as recu, peut etre que c est carrément la page qu'il n'arrive pas à trouver retour.onHTTPStatus = function(status) { trace(status); } envoie.sendAndLoad("authentification.asp", retour, "POST"); Lien vers le commentaire Partager sur d’autres sites More sharing options...
volgur Posté(e) le 16 avril 2008 Auteur Partager Posté(e) le 16 avril 2008 Heu j'ai rien qui s'affiche, ça se bloque et aucune sortie texte :( Lien vers le commentaire Partager sur d’autres sites More sharing options...
Spaz001 Posté(e) le 16 avril 2008 Partager Posté(e) le 16 avril 2008 mets le chemin complet pour ta page asp http:// ..... Lien vers le commentaire Partager sur d’autres sites More sharing options...
volgur Posté(e) le 16 avril 2008 Auteur Partager Posté(e) le 16 avril 2008 Même avec le chemin complet, ça bloque, et aucune sortie texte :( Lien vers le commentaire Partager sur d’autres sites More sharing options...
Spaz001 Posté(e) le 16 avril 2008 Partager Posté(e) le 16 avril 2008 bon ben, il te reste l'évènement onData, pour sortir la source de ta page asp affiché '^^ retour.onData = function(src) {trace(src);}; Sinon, est ce que la page est bien appelé ? tu peux vérifier sur le serveur web ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
volgur Posté(e) le 16 avril 2008 Auteur Partager Posté(e) le 16 avril 2008 retour.onData = function(src) {trace(src);}; Ca a affiché le code source de ma page asp, mais j'ai pas compris l'utilité. La page ASP c'est moi qui l'ai crée également, donc le code source je le connais. Par contre, et désolé de passer pour une bille encore, mais je comprends pas quand tu demandes si la page est bien appelée. Enfin je comprends mais je sais pas comment vérifier Lien vers le commentaire Partager sur d’autres sites More sharing options...
Spaz001 Posté(e) le 16 avril 2008 Partager Posté(e) le 16 avril 2008 C était pour savoir si sendAndLoad allait bien chercher ta page, car Flash peut être tatillon sur l'adresse, mais si il t'affiche la source, c'est qu'il va bien chercher la page. Maintenant, faut chercher pourquoi il ne te fait pas le onLoad, mais avant ... tu cherches à faire un "retour.rep=="OK"", c'est quoi "rep" dans ta page asp, comment ta page ASP renvoit elle ce "OK" ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
volgur Posté(e) le 16 avril 2008 Auteur Partager Posté(e) le 16 avril 2008 Ben dnas ma page ASP, je récupère via un Request.Form("login") (et pareil pour passwd) ce que l'utilisateur à taper. login=Request.Form("login") Ensuite je teste voir si ça correspond if login="monLogin" and passwd="monPassword" then rep="OK" else rep="ERREUR" Puis je renvoie rep au client Response.Write(rep) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Spaz001 Posté(e) le 16 avril 2008 Partager Posté(e) le 16 avril 2008 Bon, c est pour ça '^^ Faut que tu passes par onData, et que tu parses la page obtenu pour obtenir le résultat. Du côté client, Flash, rep il sait pas ce que sait, il recoit juste du texte, la page asp que tu fais. A toi de "lire" cette page pour savoir ce que tu as retourné, moi je faisait comme ça (mais pas en asp). essaye donc ceci plutôt : envoie.login=fenetre.login.text; envoie.passwd=fenetre.passwd.text; retour.onData = function(src) { fenetre._visible=false; if(src.indexOf("OK") != -1) { //Authentification réussie fenetre.login.text=""; fenetre.passwd.text=""; aok._visible=true; }else{ //Authentification refusée pour cause de mauvais login/password anok._visible=true; } } envoie.sendAndLoad("authentification.asp", retour, "POST"); Donc, tout bêtement, tu regardes si il y a écrit "OK" dans ta page (vu que tu renvoies "OK" ou "Erreur"). Lien vers le commentaire Partager sur d’autres sites More sharing options...
Spaz001 Posté(e) le 16 avril 2008 Partager Posté(e) le 16 avril 2008 je m'auto réponds parce que j'ais oublié un point ^^ j'avais un peu zappé que c'était bien toi qui faisait la page ASP. je connais pas trop l'asp, mais c'est bien & pour concaténer ? Bon, donc, au lieu de faire "Response.Write(rep)", tu dois faire "Response.Write("rep=" & rep)", pour que ton loadvar interprète correctement la page, et que ton code de ton premier post fonctionne Lien vers le commentaire Partager sur d’autres sites More sharing options...
volgur Posté(e) le 17 avril 2008 Auteur Partager Posté(e) le 17 avril 2008 Avant tout merci pour ton aide :) Pour te répondre (woot pour une fois que c'est moi qui donne une réponse ) effectivement en ASP pour concaténer tu as + et &, les utilisations diffèrent, et j'avoue ne pas mettre attardé sur les différentes subtilités entre les 2 méthodes. Pour en revenir à ton code, le fait de mettre Response.Write("rep="&rep) avec mon 1er script ne le fait pas plus fonctionner malheureusement :( Néanmoins l'autre code que tu m'as donné, avec le onData, fonctionne presque. En effet, si lors du test je laisse if(src.indexOf("OK")!=-1) Peut importe ce que je rentre, il me valide l'authentification :( Et inversement si je mets == 1, il me la refuse tout le temps Vais voir si je peux pas trouver un équilibre entre les 2 ^^ Merci en tout cas pour ton aide précieuse Lien vers le commentaire Partager sur d’autres sites More sharing options...
volgur Posté(e) le 17 avril 2008 Auteur Partager Posté(e) le 17 avril 2008 Voila j'arrive à faire correctement les 2 tests, don c'est un bon point, puisqu'avant les 2 tests entraînaient un blocage du programme. Mais toujours le soucis du peu importe ce que je tape, il ne valide jamais la condition. Voila ce que ça donne : function authentification() { var envoie = new LoadVars(); var retour = new LoadVars(); envoie.login = fenetre.login.text; envoie.passwd = fenetre.passwd.text; envoie.sendAndLoad("authentification.asp", retour, "POST"); retour.onLoad = function(succes) { fenetre._visible = false; if ((succes==false)&&(retour.rep==1)) { //Authentification réussie fenetre.login.text = ""; fenetre.passwd.text = ""; aok._visible = true; } else { // Mauvais login/password anok._visible = true; } }; } PS: j'ai remis le envoie.sendAndLoad avant le retour.onLoad, car sinon ça fonctionnait encore moins Lien vers le commentaire Partager sur d’autres sites More sharing options...
Spaz001 Posté(e) le 17 avril 2008 Partager Posté(e) le 17 avril 2008 Je viens de faire des tests de mon côté, et voici mes conclusions ^^ Le fait de mettre uniquement le nom du fichier le fait LIRE par Flash. Il est donc normal que ça ne marche pas, pour la simple raison que ton code ASP n'est pas EXÉCUTÉ mais LU. Il faut que tu mettes l'adresse complète de ton fichier, qui passe par ton serveur ASP, sinon Flash ne recevra jamais la bonne page, et recevra toujours le code source ASP. C'est pour ça que mon code ne marchais pas, avec onData, parce que "OK", il y est dans ton code SOURCE '^^ Et soit bien en accord entre ton code ASP et ton code Flash, je suppose que tu as changé ton code ASP pour if login="monLogin" and passwd="monPassword" then rep=1 else rep=0 ? Donc, la question, as tu bien un serveur web local qui tourne pour tes pages ASP ? est il configuré correctement ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
volgur Posté(e) le 17 avril 2008 Auteur Partager Posté(e) le 17 avril 2008 Oui j'ai changé mon code ASP avec des nombres, je ne sais plus ce que je voulais tester d'ailleurs... Mais oui le serveur ASP, puisque j'ai déjà fait un script en réponse à un formulaire de Flash pour un envoie automatique d'email, donc normalement il fonctionne :) Donc, j'ai remplacé envoie.sendAndLoad("authentification.asp", retour, "POST"); par envoie.sendAndLoad("http://www.monsite.fr/monchemin/authentification.asp", retour, "POST"); Mais ça ne fonctionne pas plus :( peu importe ce que je tape, le if est toujours pas validé apparemment Lien vers le commentaire Partager sur d’autres sites More sharing options...
Spaz001 Posté(e) le 17 avril 2008 Partager Posté(e) le 17 avril 2008 Et avec mon code sur le onData, et l'adresse complète, tu obtiens quoi en trace ? Ton code source ? PS: Normal que ca marche pas plus, ton code est érroné, j'ai oublié, je l'avais précisé dans mon précédent post, mais je me suis édité; Tu as mis un succes==false ca devrait être : retour.onLoad = function(succes) { fenetre._visible = false; if (succes&&(retour.rep==1)) { //Authentification réussie fenetre.login.text = ""; fenetre.passwd.text = ""; aok._visible = true; } else { // Mauvais login/password anok._visible = true; } }; Lien vers le commentaire Partager sur d’autres sites More sharing options...
volgur Posté(e) le 17 avril 2008 Auteur Partager Posté(e) le 17 avril 2008 Woot ça marche ! *expression au moment de l'exécution* *prends du recule* ^^ Merci d'abord. Ensuite pour te répondre, le trace(src) a renvoyé le code source de la page ASP, comme la dernière fois, et en plus je viens de me rendre compte que le chemin spécifié n'est même pas http//www.monsite.fr/blabla mais juste authentification.asp J'avoue que maintenant je comprends pas pourquoi ça marche :( Je vais essayer de comprendre par moi-même. Une dernière question tout de même. Niveau sécurité c'est pas un peu limite ? Je crois que le peu que j'ai compris, c'est que Flash lit un texte envoyé par le serveur, et s'il y a "OK" dedans, il valide ? En tout cas un gros merci :) je vais pouvoir m'attaquer au plus gros de mon travail maintenant ^^ Lien vers le commentaire Partager sur d’autres sites More sharing options...
Spaz001 Posté(e) le 17 avril 2008 Partager Posté(e) le 17 avril 2008 En fait, Flash va agir comme un navigateur internet. Donc, il recoit le "code" de la page. Toi, sur une page internet, ce code est interprété par ton navigateur, mais tu peux voir le code source. Flash ne voit que le code source, l'interprétation de celui-ci, c'est à toi de le faire. Mais pour éviter de devoir faire trop de chose en Flahs, ils ont prévu une syntaxe spéciale pour faire les pages, pour que Flash remplisse lui-même ton object LoadVars, sans que ce soit à toi de le faire, à coup de regex (enfin, un truc approchant, y a pas regex en flash ^^). Tout ça pour dire que, si ta page est : r1=toto&r2=12&r3=true ton objet LoadVars (retour dans ton cas) aura les membres r1, r2 et r3, qui vaudront respectivement "toto",12,true. Le truc, c'est que effectivement, tu peux, avec n'importe quel navigateur (ou autre programme), accéder à ta page, et pour peu qu'on envoie les bonnes infos en POST, et bien on recevra la même page de confirmation que Flash a reçu. Pour la simple raison que Flash "navigue" sur ton site, comme tout autre navigateur. En espérant t'avoir éclairci Lien vers le commentaire Partager sur d’autres sites More sharing options...
volgur Posté(e) le 17 avril 2008 Auteur Partager Posté(e) le 17 avril 2008 Ouais dis comme ça c'est un peu dur de comprendre ^^ mais je pense que c'est bon oui Par contre, soucis, mais c'est plus Flash là, j'ai changé mon script ASP pour qu'il récupère les logs non plus en dur mais depuis un fichier texte tout bête, et maintenant Flash valide le test, peu importe ce qu'on rentre :( Retour au point de départ ? lol j'espère pas, vais retoucher mon ASP, en tout cas merci pour ton aide :) Lien vers le commentaire Partager sur d’autres sites More sharing options...
volgur Posté(e) le 17 avril 2008 Auteur Partager Posté(e) le 17 avril 2008 Je pense avoir parler trop vite, puisque je viens de retester avec l'ancien fichier ASP, et bizarrement il n'accepte plus rien du tout désormais -_- Lien vers le commentaire Partager sur d’autres sites More sharing options...
volgur Posté(e) le 17 avril 2008 Auteur Partager Posté(e) le 17 avril 2008 C'est bon *ouf* j'ai retrouvé le soucis un caractère était venu se rajouter je sais pas comment. C'est bon parfois de faire des pauses, histoire de lever le nez de l'écran. J'retourne à mon problème avec mes fichiers Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.