Formulaire de contact

Formulaire de contact - PHP - Programmation

Marsh Posté le 09-10-2016 à 22:44:22    

Bonsoir,  
 
Je suis en train de faire un site mais le formulaire de contact ne fonctionne pas et je ne vois vraiment pas pourquoi ...
 
voici le code :  
 

Code :
  1. <!--MAIN FORM-->
  2.                     <form id="contactForm" name="sentMessage" action="mailer.php" method="post">
  3.                         <div class="form-group">
  4.                             <input aria-invalid="false" class="form-control" data-validation-required-message="Entrer votre nom." id="name" name="name" placeholder="Nom* :" required="" type="text">
  5.                             <p class="help-block text-danger"></p>
  6.                         </div>
  7.                         <div class="form-group">
  8.                             <input class="form-control" data-validation-required-message="Entrer votre email." name="email" id="email" placeholder="E-mail* :" required="" type="email">
  9.                             <p class="help-block text-danger"></p>
  10.                         </div>
  11.                         <div class="form-group">
  12.                             <input class="form-control" data-validation-required-message="Entrer votre numéro de téléphone." name="Subject" id="number" placeholder="Numéro de téléphone* :" required="" type="tel">
  13.                             <p class="help-block text-danger"></p>
  14.                         </div>
  15.                         <div class="form-group">
  16.                             <textarea class="form-control" cols="40" data-validation-required-message="Entrer votre message." name="Message" id="message" placeholder="Message* :" required="" rows="3"></textarea>
  17.                             <p class="help-block text-danger"></p>
  18.                         </div>
  19.                         <div id="success"></div>
  20.                         <button type="submit" class="btn btn-chos hvr-shutter-in-horizontal" title="Buy Now">Envoyer</button>
  21.                     </form>
  22.                     <!--END Main form-->
  23.                 </div>
  24.                 <!-- END contact FORM-->


 

Code :
  1. <?php
  2.     // Only process POST reqeusts.
  3.     if ($_SERVER["REQUEST_METHOD"] == "POST" ) {
  4.         // Get the form fields and remove whitespace.
  5.         $name = strip_tags(trim($_POST["name"]));
  6.                 $name = str_replace(array("\r","\n" ),array(" "," " ),$name);
  7.         $email = filter_var(trim($_POST["email"]), FILTER_SANITIZE_EMAIL);
  8.         $message = strip_tags(trim($_POST["message"]));
  9.                 $message = str_replace(array("\r","\n" ),array(" "," " ),$message);
  10.         // Check that data was sent to the mailer.
  11.         if ( empty($name) OR empty($message) OR !filter_var($email, FILTER_VALIDATE_EMAIL)) {
  12.             // Set a 400 (bad request) response code and exit.
  13.             echo "Oops! There was a problem with your submission. Please complete the form and try again.";
  14.             exit;
  15.         }
  16.         // Set the recipient email address.
  17.         // FIXME: Update this to your desired email address.
  18.         $recipient = "adressemail@gmail.fr";
  19.         // Set the email subject.
  20.         $subject = "New contact from $name";
  21.         // Build the email content.
  22.         $email_content = "Name: $name\n";
  23.         $email_content .= "Email: $email\n";
  24.         $email_content .= "Message: $message\n";
  25.         // Build the email headers.
  26.         $email_headers = "From: $name <$email>";
  27.         // Send the email.
  28.         if (mail($recipient, $subject, $email_content, $email_headers)) {
  29.             // Set a 200 (okay) response code.
  30.             echo "Vos informations et votre message ont bien été envoyés.";
  31.             $_POST=array();
  32.         } else {           
  33.             // Set a 500 (internal server error) response code.
  34.             echo "Oops! L'envoi n'a pas fonctionné.";
  35.         }
  36.     } else {
  37.         // Not a POST request, set a 403 (forbidden) response code.
  38.         header("HTTP/1.0 404 Not Found" );
  39.         echo "Il y a eu un problème d'envoi, s'il vous plait reessayez.";
  40.     }
  41. ?>


 
Avez vous une idée d'où peut venir le probleme ?  
Merci d'avance


Message édité par stefifi211 le 10-10-2016 à 14:18:17
Reply

Marsh Posté le 09-10-2016 à 22:44:22   

Reply

Marsh Posté le 10-10-2016 à 12:16:36    

Bonjour,
 
Le "ne fonctionne pas" est un peu léger pour vous aider de manière efficace. Bien que certaines choses me paraissent bizarres, un message d'erreur ou une description de ce qui se déroule permettrait de mettre le doigt sur le problème plus rapidement (que ce passe t-il lorsque vous validez le formulaire? êtes-vous redirigez? Avez-vous tester le contenu de vos variables? Avez-vous reçu un mail? etc.)


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
Reply

Marsh Posté le 10-10-2016 à 12:27:07    

Bonjour,  
 
Lorsque je clique sur "Envoyer", je suis redirigée sur une page blanche avec écrit "Oops! There was a problem with your submission. Please complete the form and try again.", la ligne 15 du code php,  
 
Je ne reçois aucun mail


Message édité par stefifi211 le 10-10-2016 à 12:28:29
Reply

Marsh Posté le 10-10-2016 à 13:56:42    

Et donc tous les champs ont été remplis correctement avant d'effectuer l'envoi?
Si oui, alors le problème pourrait venir d'un problème de config du serveur mais vu que ça passe le premier If je pense que les requêtes POST passent bien.


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
Reply

Marsh Posté le 10-10-2016 à 14:00:52    

Oui tous les champs sont remplis, sinon si ce n'est pas rempli il dit qu'il faut remplir ce champ.
 
Je ne sais pas, je ne suis pas trop callée la dedans, je suis chez ovh pour l'hébergement et nom de domaine
 

Reply

Marsh Posté le 10-10-2016 à 14:08:02    

Si $name & $message ne sont pas empty, c'est que c'est filter_var($email, FILTER_VALIDATE_EMAIL) qui renvoie false...
 
Tu devrais aussi enlever ton adresse email du code source pour pas te faire ramasser par un robot à spam ! ^^


---------------
D3
Reply

Marsh Posté le 10-10-2016 à 14:18:22    

La condition ne devrait-elle pas être plutôt :
if ((empty($name)) || (empty($message)) || (!filter_var($email, FILTER_VALIDATE_EMAIL))) {
...
}
 
:??:


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 10-10-2016 à 14:19:49    

Je suis paumée  :whistle:

Reply

Marsh Posté le 10-10-2016 à 19:12:48    

Rufo propose de remplacer les lignes suivantes :

Code :
  1. if ( empty($name) OR empty($message) OR !filter_var($email, FILTER_VALIDATE_EMAIL)) {
  2.             // Set a 400 (bad request) response code and exit.
  3.             echo "Oops! There was a problem with your submission. Please complete the form and try again.";
  4.             exit;
  5.         }
 

Par :

Code :
  1. if ((empty($name)) || (empty($message)) || (!filter_var($email, FILTER_VALIDATE_EMAIL))) {
  2.             // Set a 400 (bad request) response code and exit.
  3.             echo "Oops! There was a problem with your submission. Please complete the form and try again.";
  4.             exit;
  5.         }
 

Perso, je ne vois pas la différence si ce n'est au niveau de la syntaxe mais je pense que dans ce cas là une erreur de syntaxe aurait été retournée par le serveur. Mais ça ne coûte rien d'essayer.

 

Si ce que propose Rufo n'améliore pas la situation, il faudrait nous retourner le contenu des variables en remplaçant le même bout de code par :

Code :
  1. if ( empty($name) OR empty($message) OR !filter_var($email, FILTER_VALIDATE_EMAIL)) {
  2.             // Set a 400 (bad request) response code and exit.
  3.             var_dump($name, $message, $email);
  4.             exit;
  5.         }


Puis en relançant le formulaire nous dire ce qui apparaît.


Message édité par MaybeEijOrNot le 10-10-2016 à 19:14:13

---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
Reply

Marsh Posté le 10-10-2016 à 19:54:23    

Quand je remplace par ce que tu as dit MaybeEijOrNot il apparaît :  
 
string(17) "REBOUL Stéphanie" string(0) "" string(25) "adressemail@orange.fr"


Message édité par stefifi211 le 10-10-2016 à 20:27:30
Reply

Marsh Posté le 10-10-2016 à 19:54:23   

Reply

Marsh Posté le 10-10-2016 à 20:07:50    

Ok, donc là il apparaît que la variable $message est vide, du coup l'envoi est stoppé car il n'y a pas de message à envoyer.
La raison est que les variables php sont sensibles à la casse or dans votre HTML vous utilisez le nom de champ :

Code :
  1. name="Message"
 

Et dans votre code php vous récupérer la variable :

Code :
  1. $_POST["message"]
 

Il vous donc choisir si c'est avec une majuscule ou non, personnellement je vous conseille sans, et donc de corriger la partie HTML en :

Code :
  1. <textarea class="form-control" cols="40" data-validation-required-message="Entrer votre message." name="message" id="message" placeholder="Message* :" required="" rows="3"></textarea>
 


PS : comme dit précédemment, vous devriez éditer vos messages ici pour modifier votre adresse mail qui apparaît plusieurs fois en clair, ceci évitera qu'un robot passe dans le coin, récupère votre adresse et vous la spam.


Message édité par MaybeEijOrNot le 10-10-2016 à 20:09:11

---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
Reply

Marsh Posté le 10-10-2016 à 20:35:13    

Merci ,  
 
L'envoi fonctionne, lorsque l'on clique sur "Envoyer", le message "Vos informations et votre message ont bien ete envoyes." s'affichent mais je ne reçois pas le mail sur ma boîte mail.

Reply

Marsh Posté le 10-10-2016 à 21:42:38    

Il est possible que le mail arrive dans les mails indésirables ou le dossier de spam, il faut donc penser à le vérifier.
 
J'avais peur au début que le header déclaré soit incomplet mais a priori ça ne pose pas de problème pour un mail uniquement en texte, si ce n'est que votre appli mail peut filtrer le mail mais j'ose espérer qu'à ce moment là elle le place au moins dans un dossier spam/indésirable.
 
Je penche vraiment vers les possibilités suivantes :
- mail arrivé dans un dossier spam/indésirable
- mail bloqué dans la tuyauterie, attendre jusqu'à demain voire s'il ne met pas un peu de temps à arriver


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
Reply

Marsh Posté le 10-10-2016 à 21:47:47    

Ah effectivement ils sont dans les spams !!
 
Merci beaucoup pour votre aide !!
 
Bonne soirée ! ;)

Reply

Sujets relatifs:

Leave a Replay

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