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

  FORUM HardWare.fr
  Programmation
  Javascript/Node.js

  Formulaire de contact et recaptcha de Google

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Formulaire de contact et recaptcha de Google

n°2303113
Aton2323
Posté le 08-07-2017 à 22:39:44  profilanswer
 

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
mood
Publicité
Posté le 08-07-2017 à 22:39:44  profilanswer
 

n°2303116
MaybeEijOr​Not
but someone at least
Posté le 09-07-2017 à 14:45:54  profilanswer
 

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.
n°2303117
Aton2323
Posté le 09-07-2017 à 16:46:41  profilanswer
 

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


---------------
Xpredator white edition
n°2303136
Aton2323
Posté le 10-07-2017 à 11:11:57  profilanswer
 

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
n°2303160
MaybeEijOr​Not
but someone at least
Posté le 10-07-2017 à 18:48:24  profilanswer
 

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.
n°2303362
Aton2323
Posté le 14-07-2017 à 09:15:26  profilanswer
 

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
n°2303366
MaybeEijOr​Not
but someone at least
Posté le 14-07-2017 à 12:59:56  profilanswer
 

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.
n°2303371
Aton2323
Posté le 14-07-2017 à 13:51:48  profilanswer
 

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


---------------
Xpredator white edition
n°2303377
MaybeEijOr​Not
but someone at least
Posté le 14-07-2017 à 15:50:00  profilanswer
 

É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.
n°2303380
Aton2323
Posté le 14-07-2017 à 16:07:54  profilanswer
 

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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Javascript/Node.js

  Formulaire de contact et recaptcha de Google

 

Sujets relatifs
AMP formulaire - Send Mail[RESOLU] PHP $_POST vide après envoi de formulaire
image formulaireFormulaire de calcul en HTML/JavaScript
Champs email en code qui renvoi vers formulaire d'inscriptionrécupérer texte d'un formulaire pour une fonction javascript
Enregistrer les données contenues dans un formulaire excel (textbox) vFormulaire créé en javascript limité à 90 "lignes"
Expires headers pour Google ApiAvis Google my business
Plus de sujets relatifs à : Formulaire de contact et recaptcha de Google


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