ReCaptcha et PHP - Page 2

Précédent
  • 1
  • 2
  1. valttt Messages postés 321 Statut Membre 15
     
    $(function() {

    $("input,textarea").jqBootstrapValidation({
    preventSubmit: true,
    submitError: function($form, event, errors) {
    // additional error messages or events
    },
    submitSuccess: function($form, event) {
    // Prevent spam click and default submit behaviour
    $("#btnSubmit").attr("disabled", true);
    event.preventDefault();

    // get values from FORM
    var sex = $("select#sex").val();
    var name = $("input#name").val();
    var email = $("input#email").val();
    var message = $("textarea#message").val();
    var phone = $("input#phone").val();
    $.ajax({
    url: "././mail/mail.php",
    type: "POST",
    data: {
    name: name,
    email: email,
    message: message,
    phone: phone,
    sex: sex
    },
    cache: false,
    success: function() {
    // Enable button & show success message
    $("#btnSubmit").attr("disabled", false);
    $('#success').html("<div class='alert alert-success'>");
    $('#success > .alert-success').html("<button type='button' class='close' data-dismiss='alert' aria-hidden='true'>×")
    .append("</button>");
    $('#success > .alert-success')
    .append("<strong>Votre message a bien été envoyé. Je reviendrai vers vous dans les plus brefs délais.</strong>");
    $('#success > .alert-success')
    .append('</div>');

    //clear all fields
    $('#contactForm').trigger("reset");
    },
    error: function() {
    // Fail message
    $('#success').html("<div class='alert alert-danger'>");
    $('#success > .alert-danger').html("<button type='button' class='close' data-dismiss='alert' aria-hidden='true'>×")
    .append("</button>");
    $('#success > .alert-danger').append("<strong>Désolé " + name + ", on dirait que le serveur mail ne répond pas... :( Veuillez réessayer plus tard.");
    $('#success > .alert-danger').append('</div>');
    //clear all fields
    $('#contactForm').trigger("reset");
    },
    })
    },
    filter: function() {
    return $(this).is(":visible");
    },
    });

    $("a[data-toggle=\"tab\"]").click(function(e) {
    e.preventDefault();
    $(this).tab("show");
    });

    });
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Ah ben tout s'explique .. tu fais de l'ajax ...

      Donc, dans le code php que je t'ai donné...
      commence par modifier la ligne :
      $recaptcha = !empty($_POST['g-recaptcha-response']) ? $_POST['g-recaptcha-response'] : NULL;
      

      par
      $recaptcha = !empty($_POST['grecaptcharesponse']) ? $_POST['grecaptcharesponse'] : NULL;
      


      Puis dans ton js :
      $(function() {
      
          $("input,textarea").jqBootstrapValidation({
              preventSubmit: true,
              submitError: function($form, event, errors) {
                  // additional error messages or events
              },
              submitSuccess: function($form, event) {
                  // Prevent spam click and default submit behaviour
                  $("#btnSubmit").attr("disabled", true);
                  event.preventDefault();
                  
                  // get values from FORM
                  var sex = $("select#sex").val();
                  var name = $("input#name").val();
                  var email = $("input#email").val();
                  var message = $("textarea#message").val();
                  var phone = $("input#phone").val();
                  $.ajax({
                      url: "././mail/mail.php",
                      type: "POST",
                      data: {
                          name: name,
                          email: email,
                          message: message,
                          phone: phone,
                          sex: sex,
                          grecaptcharesponse:$("input#g-recaptcha-response").val();
                      },
                      cache: false,
                      success: function(reponse) {
                          console.log(reponse);
                        
                          // Enable button & show success message
                          $("#btnSubmit").attr("disabled", false);
                          $('#success').html("<div class='alert alert-success'>");
                          $('#success > .alert-success').html("<button type='button' class='close' data-dismiss='alert' aria-hidden='true'>×")
                              .append("</button>");
                          $('#success > .alert-success')
                              .append("<strong>Votre message a bien été envoyé. Je reviendrai vers vous dans les plus brefs délais.</strong>");
                          $('#success > .alert-success')
                              .append('</div>');
      
                          //clear all fields
                          $('#contactForm').trigger("reset");
                      },
                      error: function(errormsg) {
                        console.log(errormsg);
                          // Fail message
                          $('#success').html("<div class='alert alert-danger'>");
                          $('#success > .alert-danger').html("<button type='button' class='close' data-dismiss='alert' aria-hidden='true'>×")
                              .append("</button>");
                          $('#success > .alert-danger').append("<strong>Désolé " + name + ", on dirait que le serveur mail ne répond pas... :( Veuillez réessayer plus tard.");
                          $('#success > .alert-danger').append('</div>');
                          //clear all fields
                          $('#contactForm').trigger("reset");
                      },
                  })
              },
              filter: function() {
                  return $(this).is(":visible");
              },
          });
      
          $("a[data-toggle=\"tab\"]").click(function(e) {
              e.preventDefault();
              $(this).tab("show");
          });
      
      });
      


      Ensuite, affiche la CONSOLE de ton navigateur et valide ton formulaire puis dis nous ce qui s'affiche dans la console.

      EDIT : correction du php (erreur de copier/coller)
      0
      1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
         
        Si ça ne marche toujours pas ( comme je pense .... ) ... il nous faudrait également le code HTML généré de ta page ( c'est à dire, tu affiches ta page dans ton navigateur puis tu fais un clic-droit "Afficher le code source" ou "afficher la source" selon le navigateur utilisé))
        0
      2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
         
        bonjour, ne faut-il pas plutôt ceci:
        $recaptcha = !empty($_POST['grecaptcharesponse']) ? $_POST['grecaptcharesponse'] : NULL;
        0
      3. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Oui erreur de copier coller
        0
      4. valttt Messages postés 321 Statut Membre 15 > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
         
        OK, je fais les modifs.
        Merci encore...
        0
  2. valttt Messages postés 321 Statut Membre 15
     
    Je ne vois pas de différence entre les 2 premiers codes
    $recaptcha = !empty($_POST['g-recaptcha-response']) ? $_POST['g-recaptcha-response'] : NULL;
    .
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Ancien!
      $recaptcha = !empty($_POST['g-recaptcha-response']) ? $_POST['g-recaptcha-response'] : NULL;

      Nouveau
      $recaptcha = !empty($_POST['grecaptcharesponse']) ? $_POST['grecaptcharesponse'] : NULL;
      
      0
  3. valttt Messages postés 321 Statut Membre 15
     
    J'ai la réponse suivante, et toujours pas de mail reçu :

    POST :
    Array
    (
    [sex] => Mm
    [name] => aqzs
    [email] => aqzs@free.fr
    [phone] => 0231456987
    [g-recaptcha-response] => 03AIezHSbN9xwNYIbLey0so3VPqc-sDKsdFDzevxEB_PkajfBwANZ1UqBsfzax67jkuArze2-Br5PzrXIRbGqDqNElXTDqL6xI0RQLpG9ImwrhP6AGUacYdrjHJ7ASVCH59HgNOPSoHm6Tp88zuO586vpU4EPoAmAhfH1MikqoNcp6UxW721K_ZIaCvqcwexdapixv06DSC4qG_uHQ9KbTGOUgh48vcBsF69Hi9v6dfc89ksiUw9UIGp88Kbd8A74Ps-1hUzRMxeJxkRZu8iigUc8qunIadtljbeOux2Fzg3QCoTw_zOvSCTANqJLJ9em8TxXqGcGNalKs
    [message] => aqzs
    )

    recaptcha est vide !
    Notice: Undefined variable: result in /htdocs/mail/mail.php on line 68
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Tu as cette réponse où ça ?
      Peux tu nous dire ce qui s'affiche dans la console de ton navigateur ?


      Puis une petite correction du code php :
      <?php
      //------------------------------------------------------------------
      //activation affichage des erreurs
      //------------------------------------------------------------------
      error_reporting(E_ALL);
      ini_set('display-errors','on');
      
      //------------------------------------------------------------------
      //le temps des tests:
      //affichage des variables POST
      //------------------------------------------------------------------
        echo "<pre> POST :<br>";
        print_r($_POST);
        echo "</pre>";
      
      //------------------------------------------------------------------
      //récupération PROPRE des variables AVANT de les utiliser
      //------------------------------------------------------------------
      $name = !empty($_POST['name']) ? $_POST['name'] : NULL;
      $email_address = !empty($_POST['email']) && filter_var($_POST['email'],FILTER_VALIDATE_EMAIL) ? $_POST['email'] : NULL;
      $message = !empty($_POST['message']) ? $_POST['message'] : NULL;
      $phone = !empty($_POST['phone']) ? $_POST['phone'] : NULL;
      $sex = !empty($_POST['sex']) ? $_POST['sex'] : NULL;
      
      $recaptcha = !empty($_POST['grecaptcharesponse']) ? $_POST['grecaptcharesponse'] : (!empty($_POST['g-recaptcha-response']) ? $_POST['g-recaptcha-response'] : NULL);
       if(!$name  ||!$email_address || !$message  || !$phone  ||  !$sex){
          echo "Pas de données envoyées!";
          $result =  false;
        }
          
       
       //------------------------------------------------------------------
       // Traitement du formulaire
       //------------------------------------------------------------------
       $result = "";
       if($recaptcha){
          //your site secret key
          $secret = 'ma clé secrète';
          //get verify response data
          $verifyResponse = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='.$secret.'&response='.$recaptcha);
          $responseData = json_decode($verifyResponse);
          
          //pour tester :
           print_r($responseData);
          
          if($responseData->success){  
         
           //Envoi du mail
           $to = 'Mon adresse mail';
           $email_subject = "Site web";
           $email_body = "Site web.\n\n$sex $name\n\nEmail: $email_address\n\nTéléphone: $phone\n\nMessage:\n$message";
           $headers = "From: robot@adresse de mon site web\n";
           if(mail($to,$email_subject,$email_body,$headers)){
             echo "email envoyé";
             $result =  true;  
           }else{
             echo "Erreur lors de l'envoie de l'email ";
             $result =  false;
           }
             
         }else{
           
            echo "Merci de cocher la case.";
           $result =  false;
         } 
       }else{
         echo " recaptcha est vide !";
       } 
       
       return $result;
      ?>
      
      0
  4. valttt Messages postés 321 Statut Membre 15
     
    Je commence par le début:
    J'ai tout modifier comme demandé.

    Après avoir envoyer le mail, j'ai le code source (remplacement de la page formulaire par une page blanche avec des infos):
    <html><head><link rel="stylesheet" type="text/css" href="moz-extension://eae674a8-10f2-40b3-acdf-aa155024fb8e/skin/socialwidgets.css"></head><body><pre> POST :<br>Array
    (
    [sex] => Melle
    [name] => aqzsed
    [email] => aqzsed@free.fr
    [phone] => 0987456321
    [g-recaptcha-response] => 03AIezHSZbykT_f01_s54Sde1KWmUoUs22H9TqPo5HqldMCD8xGf55sFshx-DtAAhPuY52ofZAhQ6Bx9_7QlIIDNFdgk8xCyhA9uaL_MWiXlqORC1XcqvUOsyVQ8MO7duPio-rnb2fkiYpV6N_IT8IuhtdNmXKMEkx1OnJirqeLIPwcK7uzeI3IJDjk2Z6LgCo_hl6IWYTi-e_kHdEYSB_IVZbfccAKlqA-SjURqyIEZj2rIx6-OAU0usvSevYSNLodxsv9BWQE_xH9fcCqsF4gkBFAwVdkaFyi48RGo9Q2m7LWPGaxEcsmxQZIOI-d--2nG1aOs4ZXVSz
    [message] => 9876543210
    )
    </pre><br>
    <b>Warning</b>: file_get_contents(): https:// wrapper is disabled in the server configuration by allow_url_fopen=0 in <b>/htdocs/mail/mail.php</b> on line <b>40</b><br>
    <br>
    <b>Warning</b>: file_get_contents(http://www.google.com/... failed to open stream: no suitable wrapper could be found in <b>/htdocs/mail/mail.php</b> on line <b>40</b><br>
    <br>
    <b>Notice</b>: Trying to get property of non-object in <b>/htdocs/mail/mail.php</b> on line <b>46</b><br>
    Merci de cocher la case.</body></html>
    0
Précédent
  • 1
  • 2