Problème de caractère avec flash

Résolu
Bonjour,

Voila cela fait quelques mois que je programme en flash et donc j'en suis rendu a faire un formulaire d'inscription en flash avec un script PHP lors de l'envoi.

Le problème réside dans le fait que lorsque j'essaye de faire un @, il apparait à, ayant lus quelques forum a ce sujet j'ai donc séparé en deux partie l'adresse mail... Mais la en testant tous les champs je me rend compte que lorsque je veux taper un . il m'affiche :, ou encore lorque c'est un ? il m'affiche < donc j'avoue ne rien comprendre, j'ai regardé l'intégration des composant testé avec des composant mx...

Merci de votre aide...
Configuration: Macromedia Flash 8.02

9 réponses

  • Votes
  • Date
  • Date décroissante
  1. C'est bon j'ai trouvé le problème.

    De mon côté, ça marchait sur IE mais pas sur Firefox.
    Le problème vient de l'intégration dans le document html, il suffit juste d'enlever les lignes suivantes:

    <param name="wmode" value="transparent" />


    Et il faut aussi enlever
    wmode="transparent"
    dans la balise embed qui se trouve juste en dessous (si comme moi tu avais fait une intégration automatique avec dreamweaver ou flash)
    C'est con si on veut vraiment le parametre transparent, ce qui était mon cas, mais même en enlevant ces paramètres, mon anim était toujours "transparente", allez comprendre...

    Apparemment c'est un bug récurrent.

    Voilà, j'espère que je vous aurai éclairés.
    1. Merci beaucoup pour cette solution.
      Après une bonne prise de tête sur action script et php, ça m'apprendra à chercher tout seul, tiens.
      Flash, c'est que porte le nain desfois quand même !!!
  2. J'ai exactement le même problème, c'est à ne rien comprendre.

    Si quelqu'un a une solution...
    1. en fait je pense contourner le problème en utilisant les composant mx (du genre mx.textarea.$$$)...

      J'ai abandonner de mon coté mais je chercherai de ce coté ^^
      1. J'ai exactement le même soucis, mais moi j'ai absolument besoin de la transparence (et quand j'enlève les balises de transparence, l'anim s'affiche sur fond blanc...).

        J'ai fait un formulaire flash/php (méthode POST) qui marche parfaitement seul, mais quand je l'intègre à mon site:
        - Firefox refuse de taper certains caractères (chiffres, @, etc.)
        - Internet Explorer n'arrive pas à envoyer le mail ("erreur php").

        J'ai tout essayé, ça fait 4 jours complets que je tente les solutions trouvées sur les forums ou les tutos, et RIEN ne résouds mon soucis!!! Apparemment ça viendrait des balises html ou xml de la page qui accueille le formulaire (utf-8, etc.) mais je ne suis même pas sûre puisque même ces changements ne fonctionnent pas, donc je suis ouverte à toute tentative.
        Pitié, aidez-moi!

        Pour voir le soucis: http://kom-personne.com/ rubrique "contact".

        Voici la page qui accueille le formulaire (dans l'animation Flash) (je pense que le soucis vient de cette page puisque sans elle le formulaire fonctionne):
        <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
        <html>
        <head>
        <script src="http://obscurantisorder.free.fr/kompersonne/Scripts//AC_RunActiveContent.js" type="text/javascript"></script>
        </head>
        <body>
        <table border="0" align="center" cellpadding="0" cellspacing="0" margintop="1px">
          <tr>
            <td valign="top"><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
        codebase="http://fpdownload2.macromedia.com/get/shockwave/cabs/flash/swflash.cab#3,0,0,0"
        width="850" height="800" align="center" margintop="20px">
              <param name="SRC" value="http://obscurantisorder.free.fr/kompersonne/labo/site.swf" />
              <param name="QUALITY" value="high"/>
              <param name="SCALE" value="exactfit" />
              <param name="wmode" value="transparent">
              <embed src="http://obscurantisorder.free.fr/kompersonne/labo/site.swf" width="850" height="800" align="center" pluginspage="https://helpx.adobe.com/shockwave/shockwave-end-of-life-faq.html"
        type="application/x-shockwave-flash" quality="high" wmode="transparent" scale="exactfit"> </embed>
            </object></td>
          </tr>
        </table>
          </tr>
        </table>
        </body>
        </html>
        


        Voici mon php:
        <?php
        function decoder($texte){
                $texte = utf8_decode($texte); // converti en iso-8859-1
                $texte = stripslashes($texte); // élimine les anti-slashs d'échappement
                $texte = nl2br($texte); // converti les retours  en <br />
                $texte = trim($texte); // élimine les '\n', '\r', '\t' etc
                return $texte;
        }
         
        $erreurPHP="";
        
        /* Paragraphe à decommenter pour tester le script php seul, sans le fla
        $_POST['sujet'] = 'formulaire Test';
        $_POST['messageHtml'] = '<html><body>Salut<br /> mon cher<br /><br />Bye</body></html>';
        $_POST['messageText'] = "Salut  mon cher  Bye";
        $_POST['expediteur'] = "expediteur@fai.fr";
        $_POST['mailReponse'] = "expediteur@fai.fr";
        */
        
        if(isset($_POST['sujet']))$sujet = $_POST['sujet'];
        else $erreurPHP .= "Variable 'sujet' non transmise\n";
         
        if(isset($_POST['messageHtml']))$messageHtml = $_POST['messageHtml'];
        else $erreurPHP .= "Variable 'message' non transmise\n";
        
        if(isset($_POST['messageText']))$messageTexte = $_POST['messageText'];
        else $erreurPHP .= "Variable 'message' non transmise\n";
         
        if(isset($_POST['expediteur']))$expediteur = $_POST['expediteur'];
        else $erreurPHP .= "Variable 'expediteur' non transmise\n";
         
        if(isset($_POST['mailReponse']))$mailReponse = $_POST['mailReponse'];
        else $erreurPHP .= "Variable 'mailReponse' non transmise\n";
         
        if($erreurPHP != "") echo "erreurPHP=".urlencode(utf8_encode($erreurPHP));
        else
        {
            $to = "anais@kom-personne.com";
            $sujet = decoder($sujet);
            $expediteur = decoder($expediteur);
            $messagehtml = decoder($messageHtml);
            $messageTexte = utf8_decode($messageTexte);
           
             //-----------------------------------------------
             //GENERE LA FRONTIERE DU MAIL ENTRE TEXTE ET HTML
             //-----------------------------------------------
        
             $frontiere = '-----=' . md5(uniqid(rand()));
        
             //-----------------------------------------------
             //HEADERS DU MAIL
             //-----------------------------------------------
        
             $headers = 'From: '.$expediteur.' <'.$mailReponse.'>'."\n";
             $headers .= 'Return-Path: <'.$mailReponse.'>'."\n";
             $headers .= 'MIME-Version: 1.0'."\n";
             $headers .= 'Content-Type: multipart/alternative; boundary="'.$frontiere.'"'."\n";
             $headers .= 'Content-Transfer-Encoding: 8bit';
        
             //-----------------------------------------------
             //MESSAGE TEXTE
             //-----------------------------------------------
             $message = "This is a multi-part message in MIME format\n\n";
        
             $message = "--$frontiere\n";
             $message .= "Content-Type: text/plain; charset=UTF-8\n";
             $message .= "Content-Transfer-Encoding: 8bit\n\n";
             $message .= $messageTexte."\n\n";
        
            
             //-----------------------------------------------
             //MESSAGE HTML
             //-----------------------------------------------
             $message .= "--$frontiere\n";
             $message .= "Content-Type: text/html; charset=UTF-8\n";
             $message .= "Content-Transfer-Encoding: 8bit\n\n";
             $message .= $messageHtml."\n\n";
        
             $message .= "--$frontiere--\n";
        
            $mail_OK = mail($to, $sujet, $message, $headers) ;
           
         
            if (!$mail_OK)
            {
                $erreurPHP .= "Problème lors de l'envoi du mail";
               
            }
            echo "erreurPHP=".urlencode(utf8_encode($erreurPHP));
        }
        ?>
        


        Et enfin, mon Action Script:
        import mx.controls.TextInput;
        import mx.controls.TextArea;
        import mx.controls.CheckBox;
        import mx.controls.Button;
        
        // On référence les occurences de compos pour profiter du typage strict
        var tiEmail:TextInput = this.email_ti;
        var taCommentaire:TextArea = this.commentaire_ta;
        var taSortie:TextArea = this.sortie_ta;
        var cbLettre:CheckBox = this.lettre_cb;
        var mcEnvoyer:Button = this.envoyer_mc;
        
        // Initialisation des compos
        taSortie["depthChild0"]._visible = false; // hack pour remplacer les 4 lignes ci-dessus
        taSortie.setStyle("color", "0xffffff");
        taSortie.setStyle("fontStyle", "italic");
        taSortie.setStyle("textAlign", "center");
        taSortie.label.selectable = false;
        cbLettre.label = "Recevoir la lettre d'information";
        
        // Ordres de tabulation
        tiEmail.tabIndex = 3;
        cbLettre.tabIndex = 4;
        taCommentaire.tabIndex = 5;
        mcEnvoyer.tabIndex = 6;
        
        
        var email:String;
        var recevoirLettre:Boolean;
        var commentaire:String;
        
        // Fonctions outils
        
        function afficherEnSortie(pChaine:String):Void
        {
            taSortie.text = pChaine;
        }
        
        function reinitFormulaire():Void
        {
            tiNom.text = tiPrenom.text = tiEmail.text = taCommentaire.text = "";
            cbLettre.selected = false;
        }
        
        function validerFormulaire ():String
        {
           
            email = tiEmail.text;
            commentaire = taCommentaire.text;
            recevoirLettre = cbLettre.selected;
           
            var erreurs:String = "";
           
           
        
            if (email == "") erreurs += "Merci de remplir le champ 'email'" + newline;
            else
            {
                var atIndex:Number = email.indexOf("@");
                var dotIndex:Number = email.indexOf(".", atIndex);
                trace(atIndex + " " + dotIndex);
                if (atIndex == -1 || dotIndex == -1 || dotIndex - atIndex <= 1)
                    erreurs += "L'email n'est pas valide" + newline;
            }
            return erreurs;
        }
        
        function formerMessageText ():String
        {
            var message:String = "Formulaire :";
            message += "Origine : " + this._url + "\r\n";
            message += "Adresse email : " + email +"\r\n";
            if (recevoirLettre)
                message += "Personne souhaitant recevoir la lettre d'information.\r\n";
            if (commentaire != "")
                message += "Commentaire :\r\n";
                message += commentaire;
           
            return message;
        }
        
        function formerMessageHtml ():String
        {
            var message:String = "<html><head><style type='text/css'> p{font: 12px Arial} </style></head><body>";
            message += "<h4>Formulaire : </h4>";
            message += "<p>Origine : " + this._url + "</p>";
            message += "Adresse email : <a href='mailto:" + email + "'>" + email +"</a></p>";
            if (recevoirLettre)
                message += "<p>Personne souhaitant recevoir la lettre d'information.</p>";
            if (commentaire != "")
                message += "<p><u>Commentaire :</u><br />";
                message += commentaire;
            message += "</p></body></html>";
           
            return message;
        }
        
        function envoyerMail ():Void
        {
            mcEnvoyer.enabled = false;
           
            var envoyeur:LoadVars = new LoadVars();
            var receveur:LoadVars = new LoadVars();   
           
            envoyeur.sujet = "Formulaire";
            envoyeur.messageText = formerMessageText ();
            envoyeur.messageHtml = formerMessageHtml ();
            envoyeur.expediteur = email;
            envoyeur.mailReponse = email;
           
            receveur.onLoad = onMailEnvoye;
           
            envoyeur.sendAndLoad("formulaireTEST3.php", receveur, "POST");
            afficherEnSortie("Envoi en cours...");
        }
        
        function onMailEnvoye (pSuccess:Boolean):Void
        {
            mcEnvoyer.enabled = true;
            if (!pSuccess)
            {
                afficherEnSortie("Problème avec le script PHP.");
            }
            else if (this.erreurPHP == "")
            {
                afficherEnSortie("L'envoi s'est terminé avec succès.");
                reinitFormulaire();
            }
            else
            {
                afficherEnSortie("Erreurs PHP : \n" + this.erreurPHP);
            }
        }
        


        Merci!!!
        1. il n'existe pas de solution apparente or, deezer qui lui utilise du flash y arrive... (lors du login) problème est lié a firefox
          1. J'ai trouvé une solution qui fonctionne très bien également, il suffit de remplacer vos champs texte de saisie par le composant TextInput de Flash.
            Pour le trouver, allez dans Fenêtre - Composants - User Interface.