Formulaire d'envoie de email dans un swf grace a un fichier php

Formulaire d'envoie de email dans un swf grace a un fichier php - Flash/ActionScript - Programmation

Marsh Posté le 16-01-2008 à 05:57:29    

Bonjours, je réalise en ce moment mon portfolio personnel, et je voulais mettre un formulaire perméttant à l'internaute de m'envoyer un email directement de mon site sans avoir à utiliser outlook ou tout autre programme du genre. J'ai suivit un tutoriel me perméttant de faire ce que je cherchais à faire
(voici l'adresse:http://www.kirupa.com/developer/ac [...] _email.htm)
Cependant, je suis conscient que si le swf n'est pas sur un serveur, l'envoi ne se ferra pas, mais après l'avoir uploadé sur mon serveur, je me rend compte que l'envoie ne se fait jamais. Les fichiers en questions peuvent être trouvés à ces adresses:
 
fichier swf contenant le formulaire dans la secion contact : http://www.elsantodesigns.com/lalala/version_43.swf
fichier php qui prend la valeur des champs et fait l'envoi avec la méthode POST: http://www.elsantodesigns.com/lalala/email.php
 
Mon hébergeur est plutot "cheap", (3IX, http://www.3ix.org/) mais ça m'étonnerais beaucoup qu'il ne supporte pas l'envoie de courriels!
 
En gros, c'est très simple: J'ai un mc nommé form qui contient les champs textes statiques (nom, email, message) et les champs textes input (desolé je ne connais pas l'équivalent en francais). Au input texte Nom la variable nom lui est attachée (dans le champ var), au input texte Email la variable email lui est attachée et au input texte message la variable message lui est attachée. En dehors du mc, sur la scène, un bouton que j'ai simplement pris de la bibliothèque des components qui a sur lui meme le code suivant:
 
on (release) {
 form.loadVariables("email.php", "POST" );
}
 
 
Et sur le mc form lui est attaché le code suivant:
 
onClipEvent(data){
   trace("transfert complete" );
   this.nom_txt.text = "";
   this.email_txt.text = "";
   this.message_txt.text = "Message envoyé avec succès!";
}
 
Le fichier PHP très simple, contient le code suivant:
 
<?php
 
$sendTo = "xxxxxx@hotmail.com";
$subject = "El_Santo Designs Contact";
 
$headers = "From: " . $_POST["nom"];
$headers .=  "<" . $_POST["email"] . ">\r\n";
$headers .= "Reply-To: " . $_POST["email"] . "\r\n";
$headers .= "Return-Path: " . $_POST["email"];
$message = $_POST["message"];
 
mail($sendTo, $subject, $message, $headers);
?>
 
Or, quand je test mon fichier version_43.swf, rien ne se passe, les champs ne se vident pas et aucun email ne m'est envoyé!
 
En passant, j'utilise Flash CS3, mais le codage n'est pas en AS3.  
 
Si quelqu'un de meilleur que moi pouvait m'aider, ce serait grandement aprécié! Ça fait plus de 2h que je n'arrive pas à faire marcher ce formulaire et ca me frustre au plus haut point!  
 
Merci beaucoup, Carl

Reply

Marsh Posté le 16-01-2008 à 05:57:29   

Reply

Marsh Posté le 17-01-2008 à 06:46:00    

Tu devrais commencer par debbuguer méthodiquement :
- Est-ce que PHP fonctionne sur ton host
- Est-ce que la fonction mail est activé
(pour ces 2 tu utilises phpinfo())
- Est-ce que je peux faire fonctionner une communication simple Flash>PHP>Flash
 
Quand tu as vérifié tout ca, je te filerais un code que j'ai fait et qui est en AS2 par ce que la ton truc il date de AS1 et c'est pas jojo.
 
D'ailleurs le résultat tu peux le voir sur mon site, rubrique contact, mais je suppose que tu n'as pas vraiment besoin d'exemple ;)


---------------
Jeu de simulation Boursière - Version BETA - https://www.facebook.com/wildstocks
Reply

Marsh Posté le 17-01-2008 à 10:14:48    

Bon voila j'ai mis un fichier php sur le serveur avec la commande phpinfo(). Par contre je ne trouve pas ou ca dit si le serveur supporte ou non l'envoie de mail ni s'il supporte php (bien sur puique le fichier est .php). Sous quelle rubrique ca dit ces informations?
 
Voici ladresse du fichier en question.
 
http://elsantodesigns.com/lalala/test.php
 
Pour l'instant puisque je n'ai toujours pas trouvé de solution, le formulaire est utilisé pour lancer outlook avec les infos rentrés dans les champs. C'est pas aussi bien, mais c'est quand même mieux que rien.
 
www.elsantodesigns.com    section contact
 
Merci pour l'aide

Reply

Marsh Posté le 17-01-2008 à 10:40:12    

Donc il y a php.
Maintenant fait un fichier avec juste
<?php
mail(TONADRESSE, "TEst", "ton message" );
echo $mail;
?>
et vois si tu recois qque chose et si ca t'affiches 1 ou 0.

 

Si il affiche 1 la fonction mail fonctionne. ATTENTION je suis pas top en php, alors y'a surement une meilleur methode pour voir ca mais bon ... hein ... celui qu'est pas content :P

 

Donc dans ton fichier, tu te fais 3 champs textes avec comme nom d'occurence (et non pas nom de variable)
name_txt pour le nom du gars
mail_txt pour son mail
body_txt pour le message

 

Et sur la frame 1 du calque action tu colles ca :

 
Code :
  1. name_txt.text = " Enter your name"
  2. mail_txt.text = " Your Email address"
  3. body_txt.text = " Your message ...."
  4. // Pour vider les champs quand tu clic dedans et le fait qu'une fois
  5. name_txt.onSetFocus = body_txt.onSetFocus = mail_txt.onSetFocus = function (Void) : Void
  6. {
  7. this.text = "";
  8. delete this.onSetFocus;
  9. }
  10. send_btn.onRelease = function ()
  11. {
  12. var recup = new LoadVars ();
  13. recup.onLoad = function (success : Boolean)
  14. {
  15.  if (success)
  16.  {
  17.   msg_txt.text = recup.var0;
  18.  }else
  19.  {
  20.   msg_txt.text = "Host problem, please retry";
  21.  }
  22.  name_txt.text = " Enter your name"
  23.  mail_txt.text = " Your Email address"
  24.  body_txt.text = " Your message ...."
  25. };
  26. var envoi = new LoadVars ();
  27. // Cette proprieté sécurise un peu ton script
  28. envoi.verif = "Go";
  29. envoi.name = name_txt.text;
  30. envoi.sender = mail_txt.text;
  31. envoi.body = body_txt.text;
  32. envoi.sendAndLoad ("script_mail.php", recup, "POST" );
  33. //---
  34. }
 

quand c'est fait tu te crées un fichier PHP script_mail.php avec ca dedans :

Code :
  1. <?php
  2. extract($_POST);
  3. if($verif == "Go" ){
  4. $emailaddress = "ggg@free.fr";
  5. $emailsubject = $name." + from mywebsite +";
  6. # Is the OS Windows or Mac or Linux
  7. if (strtoupper(substr(PHP_OS,0,3)=='WIN')) {
  8.   $eol="\r\n";
  9. } elseif (strtoupper(substr(PHP_OS,0,3)=='MAC')) {
  10.   $eol="\r";
  11. } else {
  12.   $eol="\n";
  13. }
  14. $sender = ($sender =="Your Email address" || $sender =="" ) ? "zou@tre.info" : $sender ;
  15. # Common Headers
  16. $headers = "";
  17. $headers .= 'From: '.$sender.$eol;
  18. $headers .= 'Reply-To: '.$sender.$eol;
  19. $headers .= 'Return-Path: '.$sender.$eol;    // these two to set reply address
  20. $headers .= "Message-ID: <".date("Y/m/d H:i:s" )." TheSystem@".$_SERVER['SERVER_NAME'].">".$eol;
  21. $headers .= "X-Mailer: PHP v".phpversion().$eol;          // These two to help avoid spam-filters
  22. # Boundry for marking the split & Multitype Headers
  23. $mime_boundary=md5(time());
  24. $headers .= 'MIME-Version: 1.0'.$eol;
  25. $msg = $body;
  26. # SEND THE EMAIL
  27. ini_set(sendmail_from, $sender);  // the INI lines are to force the From Address to be used !
  28. $mail =  mail($emailaddress, $emailsubject, $msg, $headers);
  29. ini_restore(sendmail_from);
  30. //Cette partie renvoie un message a Flash pour lui dire si ca c'est bien passé ou pas
  31. if($mail){
  32.  echo "&var0=Message sent !";
  33. }else{
  34.  echo "&var0=There is an error. Can you retry, please ?";
  35. }
  36. }
  37. ?>
 

Penses a changer les adresses mails dans le script et c'est bon  :hello:


Message édité par Zedlefou le 17-01-2008 à 10:41:19

---------------
Jeu de simulation Boursière - Version BETA - https://www.facebook.com/wildstocks
Reply

Marsh Posté le 17-01-2008 à 10:57:15    

Génial, j'essaye ca tout de suite :)
 
Merci encore

Reply

Marsh Posté le 17-01-2008 à 11:01:56    

Bon, je viens de le faire, et j'ai bien recu un mail, mais je ne vois aucun 1 ou 0. Quest-ce que c'est sencé faire? Donc j'imagine que mon serveur supporte l'envoie de mail!!!!! Merci beaucoup, moi je vais me coucher (il est 5h du matin ici), et j'essayerai demain matin tout le code que tu viens de me donner.
 
Merci encore

Reply

Marsh Posté le 19-01-2008 à 22:14:59    

Bon tu vas me trouver fatiguant Zed, mais je ne me souviens plus ce que j'ai bien pu changer à mon code, mais il ne marche plus...  
 
Nom alors comme tu m'as dis, j'ai bien trois champs, avec les noms d'instance name_txt, mail_txt et body_txt. J'ai vérifié ils ont bien ces noms, ce n'est pas le problème.  
 
Voici le code que j'ai sur la frame ou mon formulaire est:
 

Code :
  1. /////////////////////// Formulaire //////////////////////////
  2. // nom
  3. name_txt.onSetFocus = function (Void):Void {
  4. if (this.text == " Votre nom ..." ){
  5. this.text = "";
  6. }
  7. if (body_txt.text == "" || body_txt.text == " Message envoyé avec succès ..." || body_txt.text == " Un ou plusieurs champs n'ont pas été remplis. Veuillez remplir tous les champs avant d'envoyer." || body_txt.text == " Host problem, please retry later" ){
  8. body_txt.text = " Votre message ...";
  9. }
  10. if (mail_txt.text == "" ){
  11. mail_txt.text = " Votre adressse courriel ...";
  12. }
  13. };
  14. // body
  15. body_txt.onSetFocus = function (Void):Void {
  16. if (this.text == " Votre message ..." || this.text == " Message envoyé avec succès ..." || this.text == " Un ou plusieurs champs n'ont pas été remplis. Veuillez remplir tous les champs avant d'envoyer." || this.text == " Host problem, please retry later" ){
  17. this.text = "";
  18. }
  19. if (name_txt.text == "" ){
  20. name_txt.text = " Votre nom ...";
  21. }
  22. if (mail_txt.text == "" ){
  23. mail_txt.text = " Votre adressse courriel ...";
  24. }
  25. };
  26. // mail
  27. mail_txt.onSetFocus = function (Void):Void {
  28. if (this.text == " Votre adressse courriel ..." ){
  29. this.text = "";
  30. }
  31. if (name_txt.text == "" ){
  32. name_txt.text = " Votre nom ...";
  33. }
  34. if (body_txt.text == "" || body_txt.text == " Message envoyé avec succès ..." || body_txt.text == " Un ou plusieurs champs n'ont pas été remplis. Veuillez remplir tous les champs avant d'envoyer." || body_txt.text == " Host problem, please retry later" ){
  35. body_txt.text = " Votre message ...";
  36. }
  37. };
  38. send_btn.onRelease = function() {
  39. if (name_txt.text == "" || mail_txt.text == "" || body_txt.text == "" || name_txt.text == " Votre nom ..." || mail_txt.text == " Votre adressse courriel ..." || body_txt.text == " Votre message ..." ){
  40. body_txt.text = " Un ou plusieurs champs n'ont pas été remplis. Veuillez remplir tous les champs avant d'envoyer.";
  41.  }else{
  42. var recup = new LoadVars();
  43. recup.onLoad = function(success:Boolean) {
  44.  if (success) {
  45.   msg_txt.text = recup.var0;
  46.  } else {
  47.   body_txt.text = " Host problem, please retry later";
  48.  }
  49.  name_txt.text = " Votre nom ...";
  50.  mail_txt.text = " Votre adressse courriel ...";
  51.  body_txt.text = " Message envoyé avec succès ...";
  52. };
  53. var envoi = new LoadVars();
  54. // sécurise un peu le script
  55. envoi.verif = "Go";
  56. envoi.name = name_txt.text;
  57. envoi.sender = mail_txt.text;
  58. envoi.body = body_txt.text;
  59. envoi.sendAndLoad("script_mail.php",recup,"POST" );
  60. }
  61. };


 
 
J'ai modifié un peu tes fonctions de onSetFocus. Je doute que le problème vient de là, mais on ne sait jamais.
 
Voici le code que j'ai dans le fichier script_mail.php qui se trouve dans le même repertoire que le fichier swf:
 

Code :
  1. <?php
  2. extract($_POST);
  3. if($verif == "Go" ){
  4. $emailaddress = "carldufourm@gmail.com";
  5. $emailsubject = "El_Santo Designs ".$name;
  6. # Is the OS Windows or Mac or Linux
  7. if (strtoupper(substr(PHP_OS,0,3)=='WIN')) {
  8. $eol="\r\n";
  9. } elseif (strtoupper(substr(PHP_OS,0,3)=='MAC')) {
  10. $eol="\r";
  11. } else {
  12. $eol="\n";
  13. }
  14. $sender = ($sender =="Your Email address" || $sender =="" ) ? "zou@tre.info" : $sender ;
  15. # Common Headers
  16. $headers = "";
  17. $headers .= 'From: '.$sender.$eol;
  18. $headers .= 'Reply-To: '.$sender.$eol;
  19. $headers .= 'Return-Path: '.$sender.$eol;    // these two to set reply address
  20. $headers .= "Message-ID: <".date("Y/m/d H:i:s" )." TheSystem@".$_SERVER['SERVER_NAME'].">".$eol;
  21. $headers .= "X-Mailer: PHP v".phpversion().$eol;          // These two to help avoid spam-filters
  22. # Boundry for marking the split & Multitype Headers
  23. $mime_boundary=md5(time());
  24. $headers .= 'MIME-Version: 1.0'.$eol;
  25. $msg = $body;
  26. # SEND THE EMAIL
  27. ini_set(sendmail_from, $sender);  // the INI lines are to force the From Address to be used !
  28. $mail =  mail($emailaddress, $emailsubject, $msg, $headers);
  29. ini_restore(sendmail_from);
  30. //Cette partie renvoie un message a Flash pour lui dire si ca c'est bien passé ou pas
  31. if($mail){
  32. echo "&var0=Message sent !";
  33. }else{
  34. echo "&var0=There is an error. Can you retry, please ?";
  35. }
  36. }
  37. ?>


 
Je suis désolé de te redemander de l'aide, c'est que ce matin g enfin terminé mon site, j'upload la version finale sur mon serveur, et question de vérifier que tout marche bien, j'essaye mon formulaire d'envoie, et je ne recois rien!!!! Une fois ce bug reglé, je pourrai enfin avoir terminé mon site. Du moins d'ici à ce qu'il y ai des updates.
 
Merci, Carl


Message édité par carldufourm le 19-01-2008 à 22:16:33
Reply

Marsh Posté le 19-01-2008 à 22:25:35    

Je viens de faire un trace de la variable envoie à la toute fin du code, quand le fichier php est appelé, et il me retourne:
 

Code :
  1. body=lalala&sender=lol&name=carl&verif=Go


 
donc les infos sont bien envoyées du côté de flash, je soupsonne que le probléme est dans le fichier script_mail.php, mais bon je vais attendre de voir si quelqu'un à une réponse.
 
Merci

Reply

Marsh Posté le 20-01-2008 à 09:37:39    

NVM je l'ai resolu, c'étais une erreur stupide.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed