Formulaire de contact et recaptcha de Google

Formulaire de contact et recaptcha de Google - Javascript/Node.js - Programmation

Marsh Posté le 08-07-2017 à 22:39:44    

Bonjour à tous,

 

J'ai depuis pas mal de temps un problème sur mon site, le formulaire de contact ne fonctionne pas.
En effet, il s'agit d'un modèle que j'ai téléchargé d'internet et qui avait une vérification javascript et après php.
Pour plus de sécurité j'ai voulu rajouter le recaptcha de Google et la impossible je bloque je suis incapable de le faire fonctionner.
D'après ce que j'ai compris, il manque dans la requête Ajax du Javascript les paramètre du recaptcha mais malgré toutes mes tentatives ... impossible.
J'ai constamment un message du script PHP, qui me dit que mon recaptcha n'est pas coché.
Et depuis peu mon bouton reset ne fait plus rien du tout !?

 

Je vous montre tous ça:
D'abord mon formulaire

Code :
  1. <!-- form -->
  2.                <form action="" method="post" id="contactForm" name="contactForm">
  3.     <fieldset>
  4.                   <div>
  5.         <label for="contactName">Nom <span class="required">*</span></label>
  6.         <input required class="plume" type="text" value="" size="50" maxlength="150" id="contactName" name="contactName" placeholder="  Veuillez entrer votre pseudo">
  7.                   </div>
  8.                   <div>
  9.         <label for="contactEmail">Email <span class="required">*</span></label>
  10.         <input required class="plume" type="email" value="" size="50" maxlength="300" id="contactEmail" name="contactEmail" placeholder="  Veuillez indiquer votre mail">
  11.                   </div>
  12.                   <div>
  13.         <label for="contactSubject">Sujet <span class="required">*</span></label>
  14.         <input required class="plume" type="text" value="" size="50" maxlength="150" id="contactSubject" name="contactSubject" placeholder="  Veuillez indiquer le sujet de votre message">
  15.                   </div>
  16.     <div>
  17.     <label for="contactMessage">Message <span class="required">*</span></label>
  18.      <textarea required class="plume" cols="50" rows="15" id="contactMessage" name="contactMessage" maxlength="5000" placeholder=" Veuillez écrire ici votre message"></textarea>
  19.     </div>
  20.                   <div class="center">     
  21.      <label for="contactMessage"></label>
  22.     <div class="g-recaptcha" data-sitekey="Clé Publique">
  23.      </div>
  24.                   </div>
  25.     </br>
  26.                   <div class="divbotton">
  27.      <label for="contactMessage"></label>
  28.     <button class="submit cancel" type="reset">Annuler</button> <button class="submit accept">Envoyer</button>
  29.                      <span id="image-loader">
  30.                         <img alt="" src="../images/loader.gif">
  31.                      </span>
  32.                   </div>
  33.     </fieldset>
  34.       </form> <!-- Form End -->
 

Ensuite mon Javascript:

Code :
  1. $('form#contactForm button.submit').click(function() {
  2.       $('#image-loader').fadeIn();
  3.   var contactName     = $('#contactForm #contactName').val();
  4.   var contactEmail     = $('#contactForm #contactEmail').val();
  5.   var contactSubject    = $('#contactForm #contactSubject').val();
  6.   var contactMessage    = $('#contactForm #contactMessage').val();
  7.   var g_recaptcha_response  = $('#contactForm #g_recaptcha_response').val();
  8.  
  9.   var data        = {contactName:contactName ,
  10.              contactEmail:contactEmail , 
  11.              contactSubject:contactSubject ,
  12.              contactMessage:contactMessage ,
  13.              g_recaptcha_response:g_recaptcha_response};
  14.       $.ajax({
  15.       type: "POST",
  16.       url: "inc/sendEmail.php",
  17.       data: data,
  18.       success: function(msg) {
  19.             // Message was sent
  20.             if (msg == 'OK') {
  21.                $('#image-loader').fadeOut();
  22.                $('#message-warning').hide();
  23.                $('#contactForm').fadeOut();
  24.                $('#message-success').fadeIn(); 
  25.             }
  26.             // There was an error
  27.             else {
  28.                $('#image-loader').fadeOut();
  29.                $('#message-warning').html(msg);
  30.             $('#message-warning').fadeIn();
  31.             }
  32.       }
  33.       });
  34.       return false;
  35.    });
 

et enfin mon php:

Code :
  1. <?php
  2.     if ($_SERVER['REQUEST_METHOD'] === 'POST'){
  3.      $key  = 'Clé Privé';
  4.      $response   = $_POST['g_recaptcha_response'];
  5.      $ip   = $_SERVER['REMOTE_ADDR'];
  6.      $gapi ='https://www.google.com/recaptcha/api/siteverify?secret='.$key.'&response='.$response.'&remoteip='.$ip;
  7.      $json = json_decode(file_get_contents($gapi), true);
  8.      if (!$json['success']) {
  9.       foreach($json['error-codes'] as $error)
  10.       {
  11.        echo "<p style=\"text-align:center;padding-top:5%;font-size:18px; color:#048B9A;\">Vous n'avez pas cliquez sur :</p><p style=\"text-align:center;padding-top:5%;\"><img src='.../Img/Article/fr-recaptcha.PNG' alt='recaptcha.png' title='Vous avez oubli&eacute; de cliquer l&aacute;'/></p>";
  12.       }
  13.      } else{
  14. // Replace this with your own email address
  15. $siteOwnersEmail = '------------';
  16. if($_POST) {
  17.    $name = trim(stripslashes($_POST['contactName']));
  18.    $email = trim(stripslashes($_POST['contactEmail']));
  19.    $subject = trim(stripslashes($_POST['contactSubject']));
  20.    $contact_message = trim(stripslashes($_POST['contactMessage']));
  21.    // Check Name
  22. if (strlen($name) < 2) {
  23.  $error['name'] = "Veuillez saisir votre nom.";
  24. }
  25. // Check Email
  26. if (!preg_match('/^[a-z0-9&\'\.\-_\+]+@[a-z0-9\-]+\.([a-z0-9\-]+\.)*+[a-z]{2}/is', $email)) {
  27.  $error['email'] = "Veuillez saisir adresse éléctronique valide.";
  28. }
  29. // Check Message
  30. if (strlen($contact_message) < 15) {
  31.  $error['message'] = "Veuillez saisir votre message. Il doit avoir au moins 15 caratères.";
  32. }
  33.    // Subject
  34. if ($subject == '') { $subject = "Contact Form Submission"; }
  35.    // Set Message
  36.    $message .= "Email from: " . $name . "<br />";
  37. $message .= "Email address: " . $email . "<br />";
  38.    $message .= "Message: <br />";
  39.    $message .= $contact_message;
  40.    $message .= "<br /> ----- <br /> Ce courrier électronique a été envoyer depuis votre site web<br />";
  41.    // Set From: header
  42.    $from =  $name . " <" . $email . ">";
  43.    // Email Headers
  44. $headers = "From: " . $from . "\r\n";
  45. $headers .= "Reply-To: ". $email . "\r\n";
  46.  $headers .= "MIME-Version: 1.0\r\n";
  47. $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
  48.    if (!$error) {
  49.       ini_set("sendmail_from", $siteOwnersEmail); // for windows server
  50.       $mail = mail($siteOwnersEmail, $subject, $message, $headers);
  51.  if ($mail) { echo "OK"; }
  52.       else { echo "Un problème est survenu lors de l'envoi du mail. Veuillez réessayer."; }
  53. } # end if - no validation error
  54. else {
  55.  $response = (isset($error['name'])) ? $error['name'] . "<br /> \n" : null;
  56.  $response .= (isset($error['email'])) ? $error['email'] . "<br /> \n" : null;
  57.  $response .= (isset($error['message'])) ? $error['message'] . "<br />" : null;
  58.  echo $response;
  59. } # end if - there was a validation error
  60. }
  61.      }
  62.      }
  63.    ?>
 


J’espère sincèrement que quelqu'un pourra m'aider car je suis une bille en php et javascript et je ne sais plus quoi faire

 

Je remercie d'avance, les gens qui auront la patience de se pencher sur mon souci.


Message édité par Aton2323 le 08-07-2017 à 22:56:51

---------------
Xpredator white edition
Reply

Marsh Posté le 08-07-2017 à 22:39:44   

Reply

Marsh Posté le 09-07-2017 à 14:45:54    

D'après https://developers.google.com/recaptcha/docs/verify la variable est :
 

Code :
  1. g-recaptcha-response


 
et non :
 

Code :
  1. g_recaptcha_response


 
Peut-être que c'est simplement aussi con.


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

Marsh Posté le 09-07-2017 à 16:46:41    

Je te remercie d'avoir regardé,  
J'essaie dès que je peut et je te tiens au courant


---------------
Xpredator white edition
Reply

Marsh Posté le 10-07-2017 à 11:11:57    

Non ce n'est pas ça.
Plusieurs tentatives hier et rien.
 
Edit: je suis pas super calé en javascript mais je crois qu'il aime pas les traits d'union "-".


Message édité par Aton2323 le 10-07-2017 à 12:52:48
Reply

Marsh Posté le 10-07-2017 à 18:48:24    

Tu obtiens quoi dans ton php à cette variable ?
 

Code :
  1. $response = $_POST['g_recaptcha_response'];


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

Marsh Posté le 14-07-2017 à 09:15:26    

Bonjour à tous,
 
Je suis désolé mais je n'ai pas pu revenir vers vous avant
 
Le PHP je le domine pas encore et donc je ne comprends pas la question désolé


---------------
Xpredator white edition
Reply

Marsh Posté le 14-07-2017 à 12:59:56    

Je demande juste quelle valeur est retournée par $_POST['g_recaptcha_response'] pour savoir où se situe le problème (en amont ou en aval).


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

Marsh Posté le 14-07-2017 à 13:51:48    

et ça je le vois ou ?
 
Je m'excuse d'avance pour mon ignorance


---------------
Xpredator white edition
Reply

Marsh Posté le 14-07-2017 à 15:50:00    

Étant donné que tu utilises les requêtes Ajax, le plus simple c'est peut-être de l'ajouter au message d'erreur renvoyé par le page php vers la page d'appel.


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

Marsh Posté le 14-07-2017 à 16:07:54    

Ce script n'est pas de moi, il fonctionnait sans le recaptcha je voulais juste l'améliorer en le rajoutant mais même si j'adorerai apprendre ces 2 langages (Javascript et php) en ce moment je n'est pas le temps.
Toi tu le ferais comment ?
Merci pour ton temps


Message édité par Aton2323 le 14-07-2017 à 16:18:07

---------------
Xpredator white edition
Reply

Sujets relatifs:

Leave a Replay

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