probleme execution script php avec formulaire flash

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : probleme execution script php avec formulaire flash

par damaskinos » 06 mai 2009, 16:08

Ah la j'avoue que j'ai aussi du mal a comprendre. Regarde les configs du serveur sur le quel ça fonctionne et compare avec l'autre. Ça peut être aussi un problème côté flash avec sa sendBox. Si j'étais à ta place je ferais des traces à plusieurs endroits dans le flash et dans le php je ferais juste un echo pour voir si la communication se passe bien, car c'est la ca bloque selon moi. Essaye aussi de mettre l'adresse complete de ton script, genre http://tonsite.com/tonscript.

Bonne chance si y a qq de douer en flash/php une aide serait appréciée. :lol:

re

par Invité » 06 mai 2009, 14:46

je viens de tester le même formulaire avec le même script php ( je suis chez hosteur pour les 2 sites) sur un 2nd site et tout fonctionne j'avoue ne pas trop savoir quoi faire ...

merci pour votre aide !

par damaskinos » 05 mai 2009, 18:26

j'ai testé chez moi sans erreur. Assure toi d'appeler la fonction envoyerMail. Est-ce tout ton code ou tu en as d'autre quelque part dans ta timeline ou dans un autre layer?? Ou appelles-tu la fonction envoyerMail?

suite

par Invité » 05 mai 2009, 17:53

merci pour ton aide
mais en mettant ton code à la place de celui d'origine je ne peux plus valider le formulaire le bouton ne fonctionne plus de + flash m'indique des erreurs comme la méthode nommée n'existe pas etc..

merci en tout cas de m'aider

par damaskinos » 05 mai 2009, 16:45

Je t'ai rajouté une fonction qui va tracer tout ce qui vient du serveur. je te remet le code au complet de flash. Dis moi ce que tu vois dans la trace.

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 tiNom:TextInput = this.nom_ti;
var tiPrenom:TextInput = this.prenom_ti;
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", "0xB13501");
taSortie.setStyle("fontStyle", "italic");
taSortie.label.selectable = false;
cbLettre.label = "Recevoir la lettre d'information";

// Ordres de tabulation
tiNom.tabIndex = 1;
tiPrenom.tabIndex = 2;
tiEmail.tabIndex = 3;
cbLettre.tabIndex = 4;
taCommentaire.tabIndex = 5;
mcEnvoyer.tabIndex = 6;

var nom:String;
var prenom:String;
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
{
   nom = tiNom.text;
   prenom = tiPrenom.text;
   email = tiEmail.text;
   commentaire = taCommentaire.text;
   recevoirLettre = cbLettre.selected;
   
   var erreurs:String = "";
   
   if (nom == "") erreurs += "Merci de remplir le champ 'nom'" + newline;
   if (prenom == "") erreurs += "Merci de remplir le champ 'prénom'" + newline;

   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 += "Nom : " + nom + "\r\n";
   message += "Prénom : " + prenom + "\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 += "<p>Nom : " + nom + "<br />";
   message += "Prénom : " + prenom + "<br />";
   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 = prenom + " " + nom;
   envoyeur.mailReponse = email;
   
   receveur.onLoad = onMailEnvoye;
   receveur.onData   = verifierSortieServer;
   envoyeur.sendAndLoad("envoyer_mail.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);
   }
} 

function verifierSortieServer(s:String){

	trace(s);

}


De plus dans ton php quand tu fais:


if (!$mail_OK)
{
$erreurPHP .= "Problème lors de l'envoi du mail";

}

je crois crois que les espaces dans ton text pourraient causer le problème. Essaye de juste mettre Problème pour voir.

par AB » 05 mai 2009, 16:26

Oui en même temps, t'aurais pas pu le faire en html ton formulaire ? parce que là tu cherche les complications...

code dans flash d'ou provient peut etre le probleme

par Invité » 05 mai 2009, 16:18

bonjour et merci pour ton aide !

voici le code de flash il s'agit du code donnée par un tuto pris sur wiki flash :

Code : Tout sélectionner

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 tiNom:TextInput = this.nom_ti; var tiPrenom:TextInput = this.prenom_ti; 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", "0xB13501"); taSortie.setStyle("fontStyle", "italic"); taSortie.label.selectable = false; cbLettre.label = "Recevoir la lettre d'information"; // Ordres de tabulation tiNom.tabIndex = 1; tiPrenom.tabIndex = 2; tiEmail.tabIndex = 3; cbLettre.tabIndex = 4; taCommentaire.tabIndex = 5; mcEnvoyer.tabIndex = 6; var nom:String; var prenom:String; 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 { nom = tiNom.text; prenom = tiPrenom.text; email = tiEmail.text; commentaire = taCommentaire.text; recevoirLettre = cbLettre.selected; var erreurs:String = ""; if (nom == "") erreurs += "Merci de remplir le champ 'nom'" + newline; if (prenom == "") erreurs += "Merci de remplir le champ 'prénom'" + newline; 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 += "Nom : " + nom + "\r\n"; message += "Prénom : " + prenom + "\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 += "<p>Nom : " + nom + "<br />"; message += "Prénom : " + prenom + "<br />"; 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 = prenom + " " + nom; envoyeur.mailReponse = email; receveur.onLoad = onMailEnvoye; envoyeur.sendAndLoad("envoyer_mail.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); } }

par damaskinos » 05 mai 2009, 16:12

Salut,

Je vois même pas dans ton script un echo avec comme message '' problème avec le script php ''. Tu es sur que se message provient pas de flash. Dans ce cas faudrait voir le code du côté flash pour pouvoir voir ce qui déclanche ce message.

probleme execution script php avec formulaire flash

par Invité » 05 mai 2009, 16:01

Bonjour à tous,

voila j'utilise un formulaire flash puis un script php pour l'envoie des données. Or le script marque à chaque fois " problème avec le script php".
Or je ne vois pas trop car j'utilise le même script pour un autre site est tout fonctionne.

voici le script :
<?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'] = "[email protected]";
$_POST['mailReponse'] = "[email protected]";
*/

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 utf8_encode("erreurPHP=".$erreurPHP);
else
{
$to = "[email protected]";
$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 utf8_encode("erreurPHP=".$erreurPHP);
}
?>

merci beaucoup pur votre aide