[PHP : Fonction mail à problème ?] Oui oui, j'ai un problème...

Oui oui, j'ai un problème... [PHP : Fonction mail à problème ?] - PHP - Programmation

Marsh Posté le 07-04-2004 à 15:38:48    

Tout d'abord bonjour... Pfiou, ca faisait longtemps que j'étais pas venu ici (normal, je faisais plus de prog...). Mais maintenant, je fais de nouveau de la prog, et là j'ai un problème (et le gérant de ma société qui me met des coups de pieds au... enfin, on m'a compris).
 
Bref, après avoir arpenté les manuels et faq php, fait consulté mon code par un pote, je ne trouve pas la solution. Je ne suis pas un champion, donc il se peut qu'une erreur pourrie se soit glissée dans mon code...
 
J'explique la situation.
Tout se passe sur le site "xxx" (adresse cachée parce que pb résolu) dans la page "Nous contacter". Si certains veulent tester, indiquez le dans "requete" (c'est pas de la pub hein, c'est un vrai problème...).
 
Cette page contient un formulaire et du code php (avec une base de données mysql derrière, bien évidemment).
Certains champs sont rendus obligatoires, pour des raisons commerciales, grâce à :  
 

Code :
  1. if ($champ == "" )
  2. {
  3.    header("location: ./blabla.php?param1=$truc&param2=$troc" );
  4. }


 
En théorie, lorsque le formulaire est envoyé, le serveur examine les champs obligatoires, s'il en trouve un vide, il retourne à la même page et fait passer en paramètre les données précédemment saisies (méthode détournée parce que le javascript history.go(-1) ne marchait pas, je ne sais pas pourquoi).
 
Le seul problème est qu'il y a dans le code la fonction mail().
Cette fonction mail ne devrait fonctionner que si tous les champs sont correctement remplis (aucun oubli). Mais, comble du comble, le mail est envoyé meme s'il manque un champ (sauf le champ email evidemment...).  
J'ai essayé toutes sortes de vérifications. Si je met la fonction mail() dans un if{} avec les conditions qu'il faut pour que ca ne marche pas, ben ca marche quand meme... Alors à moins que mon serveur ne soit possédé par le démon, je l'explique pas...
Note : hébergement OVH.
 
Voici le code (avec certaines parties masquées, mais c'est normal hein) :  
 

Code :
  1. <?php
  2. if ($passage=="1" )
  3. {
  4. //connexion à la base de données
  5. $login="..";
  6. $mdp="..";
  7. $serveur="..";
  8. $base="..";
  9. mysql_connect($serveur,$login,$mdp);
  10. if (mysql_errno() != 0)
  11. {
  12.  header("location: ./Contact.php?message=serveur&passage=0&nom=$nom&prenom=$prenom&societe=$societe&fonction=$fonction&activite=$activite&adresse=$adresse&codepostal=$codepostal&ville=$ville&telephone=$telephone&fax=$fax&titre=$titre&demande=$demande&requete=$requete&website=$website&email=$email&connexion=$connexion" );
  13. }
  14. mysql_select_db($base);
  15. if (mysql_errno() != 0)
  16. {
  17.  header("location: ./Contact.php?message=base&passage=0&nom=$nom&prenom=$prenom&societe=$societe&fonction=$fonction&activite=$activite&adresse=$adresse&codepostal=$codepostal&ville=$ville&telephone=$telephone&fax=$fax&titre=$titre&demande=$demande&requete=$requete&website=$website&email=$email&connexion=$connexion" );
  18. }
  19. /* Vérification des champs : J'ai testé, chaque oubli est détecté*/
  20. if ($nom == "" )
  21. {
  22.  header("location: ./Contact.php?message=nom&passage=0&nom=$nom&prenom=$prenom&societe=$societe&fonction=$fonction&activite=$activite&adresse=$adresse&codepostal=$codepostal&ville=$ville&telephone=$telephone&fax=$fax&titre=$titre&demande=$demande&requete=$requete&website=$website&email=$email&connexion=$connexion" );
  23. }
  24. if ($prenom == "" )
  25. {
  26.  header("location: ./Contact.php?message=prenom&passage=0&nom=$nom&prenom=$prenom&societe=$societe&fonction=$fonction&activite=$activite&adresse=$adresse&codepostal=$codepostal&ville=$ville&telephone=$telephone&fax=$fax&titre=$titre&demande=$demande&requete=$requete&website=$website&email=$email&connexion=$connexion" );
  27. }
  28. if ($societe == "" )
  29. {
  30.  header("location: ./Contact.php?message=societe&passage=0&nom=$nom&prenom=$prenom&societe=$societe&fonction=$fonction&activite=$activite&adresse=$adresse&codepostal=$codepostal&ville=$ville&telephone=$telephone&fax=$fax&titre=$titre&demande=$demande&requete=$requete&website=$website&email=$email&connexion=$connexion" );
  31. }
  32. if ($adresse == "" )
  33. {
  34.  header("location: ./Contact.php?message=adresse&passage=0&nom=$nom&prenom=$prenom&societe=$societe&fonction=$fonction&activite=$activite&adresse=$adresse&codepostal=$codepostal&ville=$ville&telephone=$telephone&fax=$fax&titre=$titre&demande=$demande&requete=$requete&website=$website&email=$email&connexion=$connexion" );
  35. }
  36. if ($codepostal == "" )
  37. {
  38.  header("location: ./Contact.php?message=codepostal&passage=0&nom=$nom&prenom=$prenom&societe=$societe&fonction=$fonction&activite=$activite&adresse=$adresse&codepostal=$codepostal&ville=$ville&telephone=$telephone&fax=$fax&titre=$titre&demande=$demande&requete=$requete&website=$website&email=$email&connexion=$connexion" );
  39. }
  40. if ($ville == "" )
  41. {
  42.  header("location: ./Contact.php?message=ville&passage=0&nom=$nom&prenom=$prenom&societe=$societe&fonction=$fonction&activite=$activite&adresse=$adresse&codepostal=$codepostal&ville=$ville&telephone=$telephone&fax=$fax&titre=$titre&demande=$demande&requete=$requete&website=$website&email=$email&connexion=$connexion" );
  43. }
  44. if ($telephone == "" )
  45. {
  46.  header("location: ./Contact.php?message=telephone&passage=0&nom=$nom&prenom=$prenom&societe=$societe&fonction=$fonction&activite=$activite&adresse=$adresse&codepostal=$codepostal&ville=$ville&telephone=$telephone&fax=$fax&titre=$titre&demande=$demande&requete=$requete&website=$website&email=$email&connexion=$connexion" );
  47. }
  48. if ($email == "" )
  49. {
  50.  header("location: ./Contact.php?message=email&passage=0&nom=$nom&prenom=$prenom&societe=$societe&fonction=$fonction&activite=$activite&adresse=$adresse&codepostal=$codepostal&ville=$ville&telephone=$telephone&fax=$fax&titre=$titre&demande=$demande&requete=$requete&website=$website&email=$email&connexion=$connexion" );
  51. }
  52. if ($requete == "" )
  53. {
  54.  header("location: ./Contact.php?message=requete&passage=0&nom=$nom&prenom=$prenom&societe=$societe&fonction=$fonction&activite=$activite&adresse=$adresse&codepostal=$codepostal&ville=$ville&telephone=$telephone&fax=$fax&titre=$titre&demande=$demande&requete=$requete&website=$website&email=$email&connexion=$connexion" );
  55. }
  56. /*Requete d'insertion : L'insertion ne marche que si un seul champ a été oublié. Si on en oublie un, qu'on rerempli et qu'on renvoie, ca fait une erreur d'insertion (testé pas par moi) */
  57. $requete_insert="insert into formulaire values ('$titre','$nom','$prenom','$fonction','$activite','$societe','$adresse','$codepostal','$ville','$telephone','$fax','$email','$website','$requete','$demande','$connexion')";
  58. $result_insert=mysql_query($requete_insert);
  59. //et on enleve les slashs
  60. $nom = stripslashes($nom);
  61. $prenom = stripslashes($prenom);
  62. $societe = stripslashes($societe);
  63. $ville = stripslashes($ville);
  64. $requete = stripslashes($requete);
  65. $adresse = stripslashes($adresse);
  66. //traitement d'erreurs
  67. if (mysql_errno() != 0)
  68. {
  69.  header("location: ./Contact.php?message=insert&passage=0&nom=$nom&prenom=$prenom&societe=$societe&fonction=$fonction&activite=$activite&adresse=$adresse&codepostal=$codepostal&ville=$ville&telephone=$telephone&fax=$fax&titre=$titre&demande=$demande&requete=$requete&website=$website&email=$email&connexion=$connexion" );
  70. }
  71.         //Voila le passage mail.
  72. /* Deux mails sont envoyés, un pour moi et un de confirmation pour la personne qui s'inscrit. */
  73. $destinataire="xxx@xxx.xx";
  74. $titremessage="Formulaire";
  75. $contenu="Expéditeur : $titre $prenom $nom
  76. Société : $societe
  77. Fonction : $fonction
  78. Activité : $activité
  79. Adresse : $adresse
  80.    $codepostal $ville
  81. Téléphone : $telephone
  82. Fax : $fax
  83. Email : $email
  84. Site Web : $website
  85. requete : $requete\n
  86. Connexion Internet : $connexion\n";
  87. if ($demande == "interesse" )
  88. {
  89.  $contenu .= "\nEst interesse par un rendez-vous.";
  90. }
  91. else
  92. {
  93.  $contenu .= "\nSouhaite recevoir une documentation.";
  94. }
  95. //fonction mail : ca c'était le mail qui m'était destiné, et il est envoyé ci-dessous
  96.        
  97.         mail($destinataire,$titremessage,$contenu);
  98. /* Mail numéro 2, destiné au client */
  99. $destinataireconfirm = $email;
  100. $titremessageconfirm = "xxxx - Votre inscription est un succès !";
  101. $contenuconfirm="  Bonjour,
  102. Merci d'avoir visité notre site et laissé vos coordonnées.
  103. Ces coordonnées ont été correctement transmises à nos services, et nous répondrons rapidement à votre demande.
  104. Nous avons pris soin de vous rappeler ci-dessous les informations que vous avez saisies. Merci de les vérifier,
  105. et, le cas échant de nous envoyer un e-mail à l'adresse suivante contact@xxx.xx (avec les informations à corriger),
  106. afin que nous rectifions ces informations immédiatement. Merci, et à très bientôt. \n
  107. Expéditeur : $titre $prenom $nom
  108. Société : $societe
  109. Fonction : $fonction
  110. Activité : $activité
  111. Adresse : $adresse
  112.    $codepostal $ville
  113. Téléphone : $telephone
  114. Fax : $fax
  115. Email : $email
  116. Site Web : $website
  117. requete : $requete
  118. Connexion Internet : $connexion
  119. \n
  120.  -------, Webmaster pour xxxxxxx.";
  121. //fonction mail de confirmation(à activer si nécessaire)
  122. mail($destinataireconfirm,$titremessageconfirm,$contenuconfirm);
  123. $passage="0";
  124. ?>
  125. <script language="javascript">
  126. alert("Le formulaire a été correctement rempli et transmis.\nVous allez recevoir un e-mail de confirmation. Merci." );
  127. location.href="./main.php";
  128. </script>
  129. <?
  130. }
  131. else
  132. {
  133. $passage="0";
  134. switch($message)
  135. {
  136.  case "nom":
  137.  ?>
  138.  <script language="javascript">
  139.  alert("Vous n'avez pas rempli le champ nom." );
  140.  </script>
  141.  <?
  142.  break;
  143.  case "prenom":
  144.  ?>
  145.  <script language="javascript">
  146.  alert("Vous n'avez pas rempli le champ prénom." );
  147.  </script>
  148.  <?
  149.  break;
  150.  case "societe":
  151.  ?>
  152.  <script language="javascript">
  153.  alert("Vous n'avez pas rempli le champ société." );
  154.  </script>
  155.  <?
  156.  break;
  157.  case "adresse":
  158.  ?>
  159.  <script language="javascript">
  160.  alert("Vous n'avez pas rempli le champ adresse." );
  161.  </script>
  162.  <?
  163.  break;
  164.  case "codepostal":
  165.  ?>
  166.  <script language="javascript">
  167.  alert("Vous n'avez pas rempli le champ code postal." );
  168.  </script>
  169.  <?
  170.  break;
  171.  case "ville":
  172.  ?>
  173.  <script language="javascript">
  174.  alert("Vous n'avez pas rempli le champ ville." );
  175.  </script>
  176.  <?
  177.  break;
  178.  case "telephone":
  179.  ?>
  180.  <script language="javascript">
  181.  alert("Vous n'avez pas rempli le champ téléphone." );
  182.  </script>
  183.  <?
  184.  break;
  185.  case "email":
  186.  ?>
  187.  <script language="javascript">
  188.  alert("Vous n'avez pas donné votre adresse e-mail." );
  189.  </script>
  190.  <?
  191.  break;
  192.  case "requete":
  193.  ?>
  194.  <script language="javascript">
  195.  alert("Vous n'avez pas rempli le champ concernant votre requete." );
  196.  </script>
  197.  <?
  198.  break;
  199.  case "insert":
  200.  ?>
  201.  <script language="javascript">
  202.  alert("Une erreur est survenue (N°01 : Requete invalide).\n Merci de recommencer." );
  203.  </script>
  204.  <?
  205.  break;
  206.  case "base":
  207.  ?>
  208.  <script language="javascript">
  209.  alert("Une erreur est survenue (N°02 : Erreur de séléction de base).\n Merci de recommencer." );
  210.  </script>
  211.  <?
  212.  break;
  213.  case "serveur":
  214.  ?>
  215.  <script language="javascript">
  216.  alert("Une erreur est survenue (N°03 : Le serveur ne répond pas).\n Merci de recommencer." );
  217.  </script>
  218.  <?
  219.  break;
  220. }
  221. }
  222. ?>
  223. // Voila... je comprends pas... Merci de votre aide ;)


Message édité par backdafuckup le 12-04-2004 à 18:26:28
Reply

Marsh Posté le 07-04-2004 à 15:38:48   

Reply

Marsh Posté le 07-04-2004 à 16:12:05    

Utiliser un header() n'est pas suffisant pour arrêter l'exécution du script en cas d'erreur?

Reply

Marsh Posté le 07-04-2004 à 17:27:13    

Freekill a écrit :

Utiliser un header() n'est pas suffisant pour arrêter l'exécution du script en cas d'erreur?


C'est un script inclus dans la page html...
 
Alors comment faire ?
 
Comment arrêter l'envoi des mails ?
Je vais quand meme pas faire un goto !!! (c'est maaaaaal)...

Reply

Marsh Posté le 07-04-2004 à 17:40:43    

die() ou exit() ?

Reply

Marsh Posté le 07-04-2004 à 17:47:18    

Freekill a écrit :

die() ou exit() ?


 
ok, je vais regarder l'utilisation de ces fonctions... merci

Reply

Marsh Posté le 07-04-2004 à 17:55:16    

La question que je me pose c'est :  
 
Dans un fichier html contenant plusieurs balises <? ?>, si je place exit() (ou die(), ce qui est pareil), le but va-t-il être la sortie de la balise en cours ?
 
genre :  
 

Code :
  1. <?php
  2. mysql_connect($truc,$troc,$trac);
  3. mysql_select_db($trucmuche);
  4. if( $variable == "0" )
  5. {
  6.     header("location: ./page2.php?var1=$ouah&var2=$ouahouah" );
  7. }
  8. else
  9. {
  10.    exit();
  11. }
  12. ?>
  13. <html>
  14. <head>
  15. <title></title>
  16. </head>
  17. <body>
  18. <form action=... method=post>
  19. <input type= text name=.. value=<? echo $var1 ?>>
  20. <input type=hidden name=variable>
  21. <input type=submit etc etc>
  22. </form>
  23. </body>
  24. </html>
  25. ?>


 
Quel sera l'effet du exit() ?
(J'arrive pas à trouver ca de manière explicite dans les manuels).
exit() va t il tout de même permettre l'execution du code html (ca, ca parait logique) et le reste du code php (balises echo $var1) ?
 
Merci.

Reply

Marsh Posté le 07-04-2004 à 18:01:20    

Ce n'est pas bien dur à tester?
 

Code :
  1. tutu
  2. <?php
  3. die();
  4. ?>
  5. toto


 
Ce qui est avant s'affiche, ce qui est après non.
 
Quand le serveur tombe sur un die(), il arrête tout, c'est logique? ( pour plus de sécurité tu peux aussi remplacer le contenu html par des echo() )

Reply

Marsh Posté le 07-04-2004 à 18:06:21    

Donc si je fais
 

Code :
  1. <?
  2. if {$champ1=="" )
  3. {
  4.    header("location: ./blabla.php" );
  5.    exit();
  6. }
  7. ?>
  8. code html


 
Il va revenir à la page indiquée par le header, mais n'executera pas l'html qu'il y a après ?

Reply

Marsh Posté le 07-04-2004 à 18:09:26    

Exact, mais je trouve que ça serait quand même plus propre de mettre ton code html dans un else{} avec echo.  

Reply

Marsh Posté le 07-04-2004 à 18:12:06    

Freekill a écrit :

Exact, mais je trouve que ça serait quand même plus propre de mettre ton code html dans un else{} avec echo.  
 


C'est sur, mais je t'avoue que j'ai une flemme immense de mettre tout ça en echo  [:violito]  [:gunblade] .  
Je vais tester cette fonction tout à l'heure (besoin de recharges de tabac  [:aras qui rit] )
 
Merci en tout cas de m'avoir aidé. [:tekways]

Reply

Sujets relatifs:

Leave a Replay

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