Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1649 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Formulaire de contact

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Formulaire de contact

n°2289781
stefifi211
Posté le 09-10-2016 à 22:44:22  profilanswer
 

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
mood
Publicité
Posté le 09-10-2016 à 22:44:22  profilanswer
 

n°2289800
MaybeEijOr​Not
but someone at least
Posté le 10-10-2016 à 12:16:36  profilanswer
 

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.
n°2289801
stefifi211
Posté le 10-10-2016 à 12:27:07  profilanswer
 

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
n°2289806
MaybeEijOr​Not
but someone at least
Posté le 10-10-2016 à 13:56:42  profilanswer
 

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.
n°2289807
stefifi211
Posté le 10-10-2016 à 14:00:52  profilanswer
 

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
 

n°2289808
mechkurt
Posté le 10-10-2016 à 14:08:02  profilanswer
 

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
n°2289810
rufo
Pas me confondre avec Lycos!
Posté le 10-10-2016 à 14:18:22  profilanswer
 

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
n°2289811
stefifi211
Posté le 10-10-2016 à 14:19:49  profilanswer
 

Je suis paumée  :whistle:

n°2289846
MaybeEijOr​Not
but someone at least
Posté le 10-10-2016 à 19:12:48  profilanswer
 

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.
n°2289851
stefifi211
Posté le 10-10-2016 à 19:54:23  profilanswer
 

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
mood
Publicité
Posté le 10-10-2016 à 19:54:23  profilanswer
 

n°2289852
MaybeEijOr​Not
but someone at least
Posté le 10-10-2016 à 20:07:50  profilanswer
 

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.
n°2289853
stefifi211
Posté le 10-10-2016 à 20:35:13  profilanswer
 

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.

n°2289854
MaybeEijOr​Not
but someone at least
Posté le 10-10-2016 à 21:42:38  profilanswer
 

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.
n°2289855
stefifi211
Posté le 10-10-2016 à 21:47:47  profilanswer
 

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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Formulaire de contact

 

Sujets relatifs
Aide formulaire de contact[PHP]Aide Débutant Ajouter Captcha formulaire de contact existant
PHP formulaire de contactFormulaire de contact + traitement
[Résolu] Formulaire de contactFormulaire de contact
Prestashop bouton "envoyer" 2ème formulaire de contactFormulaire de Contact - message non reçu
erreur dans php pour formulaire de contactFormulaire de contact HTML/PHP
Plus de sujets relatifs à : Formulaire de contact


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR