Résolu Problème avec mon formulaire de contact simple.

Solutions (10)
Tags :
  • Html
  • Email
  • Copier coller
  • Programmation
|
Salut à tous,

voilà je suis en train de créer un formulaire de contact simple pour mon site web mais le problème c'est que ça ne fonctionne pas.

Voici le code que j'ai utilisé, je l'ai pris à partir du lien suivant: http://www.commentcamarche.net/faq/4516-webmaster-un-fo...
j'ai fais du copier/coller et j'ai modifié juste l'adresse e-mail

lorsqu'on envoi un message ça affiche "un problème est survenu durant l'envoi du mail"
Essayez d'envoyer un message. http://westtravel.biz/WESTTRAVEL.BIZ/envoi.php

J'aimerais savoir où se trouve le problème s'il vous plait.


  1. <?php
  2. //Ecrivez votre adresse e-mail entre les guillemets
  3. $destinataire='webmaster@westtravel.biz';
  4. ?><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Strict//EN" "http://www.w3.org/TR/html4/strict.dtd">
  5. <html lang="fr">
  6. <head>
  7. <title>Contact</title>
  8. <style type="text/css">
  9. form#contact{border:2px solid red;width:70%;padding:1em}
  10. p#msg,p#adr,p#obj{border:2px solid green;margin-right:10%;padding:10px}
  11. p#msg textarea{border:2px solid blue;height:30em;width:80%}
  12. p#adr input,p#obj input{border:2px solid blue}
  13. p.bt{text-align:center}
  14. p.bt input{border:1px red solid;width:50%}
  15. </style>
  16. <meta http-equiv="content-type" content="Content-type:text/html;charset=iso-8859-1">
  17. </head>
  18. <body style="direction: ltr;">
  19. <h1>Contact</h1>
  20. <?php
  21. $Previsualiser='<p class="bt">
  22. <input type="submit" name="previsualiser" tabindex="3" value="Prévisualiser"></p>';
  23. $Envoi="\n".'<p class="bt">
  24. <input name="envoi" tabindex="4" value="Envoyer" type="submit"></p>';
  25. if (isset($_POST['message']))
  26. {
  27. // La variable $verif va nous permettre d'analyser si la sémantique de l'email est bonne
  28. $verif='#^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,5}$#';
  29. //quelques remplacements pour les specialchars
  30. $message=preg_replace('#(<|>)#', '-', $_POST['message']);
  31. $message=str_replace('"', "'",$message);
  32. $message=str_replace('&', 'et',$message);
  33. $objet=preg_replace('#(<|>)#', '-', $_POST['objet']);
  34. $objet=str_replace('"', "'",$objet);
  35. $objet=str_replace('&', 'et',$objet);
  36. // On assigne et/ou protège nos variables
  37. $votremail=stripslashes(htmlentities($_POST['votremail']));
  38. $message=stripslashes(htmlspecialchars($message));
  39. $objet=stripslashes(htmlspecialchars($objet));
  40. //input envoi/previsualiser
  41. $envoi=htmlentities($_POST['envoi']);
  42. $previsualiser=htmlentities($_POST['previsualiser']);
  43. //on enlève les espaces
  44. $votremail=trim($votremail);
  45. $message=trim($message);
  46. $objet=trim($objet);
  47.  
  48. $apercu_resultat='<p>Aperçu du résultat :</p>';
  49.  
  50. /*On vérifie si l'e mail et le message sont pleins, et on agit en fonction.
  51. (on affiche Apercu du resultat, tel ou tel champ est vide, etc...*/
  52. //Si ca ne vas pas (mal rempli, mail non valide...)
  53. if((empty($message))or(empty($objet))or(!preg_match($verif,$votremail)))
  54. {
  55. //les 3 champs sont vides
  56. if(empty($votremail)and(empty($message))and(empty($objet)))
  57. {
  58. echo '<p>Tous les champs sont vides.</p>';
  59. $message='';$votremail='';$objet='';$apercu_resultat='';
  60. }
  61. //un des champs est vide
  62. else
  63. {
  64. if(!preg_match($verif,$votremail))
  65. echo'<p>Votre adresse e-mail n\'est pas valide.</p>';
  66. else
  67. {
  68. echo'<p>Il faut remplir tous les champs !</p>';
  69. if(empty($message))
  70. $apercu_resultat='';
  71. }
  72. }
  73. }
  74. //Si les deux sont pleins et que l'adresse est valide, on envoie on on prévisualise sans envoi
  75. else
  76. {
  77. $domaine=preg_replace('#[^@]+@(.+)#','$1',$votremail);
  78. $DomaineMailExiste=checkdnsrr($domaine,'MX');
  79. if(!$DomaineMailExiste)
  80. echo'<p>Le nom de domaine de l\'adresse e-mail que vous avez donné n\'existe pas.</p>';
  81. elseif(!empty($previsualiser))
  82. {
  83. $apercu_resultat='<p>Votre message et votre adresse e-mail sont valides et prêts à être envoyés.
  84. <br>Vous n\'avez plus qu\'à cliquer sur le bouton "Envoyer".<br>Prévisualisation :</p>';
  85. $Previsualiser='';
  86. }
  87. elseif(!empty($envoi))
  88. {
  89. $objet='[SITE] : '.$objet;
  90. $headers='From:'.$votremail."\r\n".'To:'.$mail."\r\n".'Subject:'.$objet."\r\n".'Content-type:text/plain;charset=iso-8859-1'."\r\n".'Sent:'.date('l, F d, Y H:i');
  91. if(mail($destinataire,$objet,$message,$headers))
  92. {
  93. echo '<p>Votre message a bien été envoyé. Merci.</p><p><a href="/">Retour à la page d\'accueil</a></p>';
  94. $Envoi='';
  95. $Previsualiser='';
  96. }
  97. else
  98. echo'<p>Un problème est survenu durant l\'envoi du mail.</p>';
  99. }
  100. else
  101. echo'<p>Une condition innatendue est survenue lors de l\'exécution du script.</p>';
  102. }
  103. echo $apercu_resultat;
  104. }
  105. else
  106. {
  107. echo '<p>Vous pouvez utiliser ce formulaire pour me contacter.</p>';
  108. $votremail='';$message='';
  109. }
  110. $bas_formulaire=$Previsualiser.$Envoi;
  111. ?>
  112. <form id='contact' method="post" action="<?php echo $_SERVER['PHP_SELF'];?>" enctype="multipart/form-data">
  113. <p id='obj'><label for='objet'>Objet de votre message :<br>
  114. <input type='text' name='objet' id='objet' tabindex='10' size='30'></label></p>
  115.  
  116. <p id="adr"><label for="mail">Votre Adresse E-mail<br>
  117. <input name="votremail" tabindex="20" size="30" type="text" id="mail" value="<?php echo $votremail; ?>"></label></p>
  118.  
  119. <p id="msg"><label for="message">Votre message<br>
  120. <textarea tabindex="30" rows="20" cols="120" name="message" id="message"><?php echo $message; ?></textarea>
  121. </label></p>
  122. <?php echo $bas_formulaire;?>
  123. </form>
  124. </body>
  125. </html>
Contenus similaires
Meilleure solution
partage
|
vois ceci :
http://www.commentcamarche.net/faq/4516-webmaster-un-fo...
ou mieux selon les options que tu veux mettre, des générateurs en ligne (testés ET approuvés):
http://www.unesourisetmoi.info/pages/formulaires.php
fais ton choix selon les options que tu veux mettre ;) 
  • Commenter cette solution |
Score
0
òh
òi
|
merci à toi et si problèmes, ne pas hésiter ;) 
  • Commenter cette réponse |
Score
0
òh
òi
|
Meilleure réponse sélectionnée par safraxater.
  • Commenter cette réponse |
Score
0
òh
òi
|
merci à vous tous pour votre aide.
  • Commenter cette réponse |
Score
0
òh
òi
|
salut,
Commence par tester avec un message simple sans les headers .


Cela validera le bon fonctionnement de la fonction mail.
suite a ca modifie ta fonction en insérant les headers un a un.

Tu devrais isoler le problème assez rapidement.
90% du temps ce sont les headers qui posent problèmes.
  • Commenter cette réponse |
Score
0
òh
òi
, Programmation (collector) |
salut,
@nels77 : cela na rien a voir !

Voila le header que j'utilise :
  1. $headers = 'MIME-Version: 1.0' . "\r\n";
  2. $headers .= 'Content-type: text/html; charset=utf-8'."\r\n";
  3. $headers .= 'From: Contact <contact@xxxxxxx.org>' . "\r\n";
  4. $headers .= "\r\n";


  • Commenter cette réponse |
Score
0
òh
òi
|
je crois aussi que c'est cette ligne qui pose probleme. ca devrait marcher je crois si tu remplaes toutes les doubles cotes (") par des cotes simples (').
de même que sur cette ligne
Citation :
$Envoi="\n".'<p class="bt">

fais signe si a marche
  • Commenter cette réponse |
Score
0
òh
òi
|
Alors revois cette ligne:
  1. $headers='From:'.$votremail."\r\n".'To:'.$mail."\r\n".'Subject:'.$objet."\r\n".'Content-type:text/plain;charset=iso-8859-1'."\r\n".'Sent:'.date('l, F d, Y H:i');

Pour ma part, je mettrais:
  1. $headers = "Content-type: text/plain; charset=iso-8859-1\r\nFrom: " . $votremail . "\r\nTo: " . $destinataire . "\r\n");

(note bien le "To :" qui a changé)
  • Commenter cette réponse |
Score
0
òh
òi
|
elle est bien configurée et activée.
  • Commenter cette réponse |
Score
0
òh
òi
|
A priori, cela signifie que soit la fonction mail est désactivée chez ton hébergeur, soit elle est mal configurée.
  • Commenter cette réponse |

Ce n'est pas ce que vous cherchiez ?

Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS