ReCaptcha et PHP - Page 2

Précédent
  • 1
  • 2
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
jordane45 Messages postés 30651 Date d'inscription   Statut Modérateur Dernière intervention   4 816
 
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
jordane45 Messages postés 30651 Date d'inscription   Statut Modérateur Dernière intervention   4 816 > jordane45 Messages postés 30651 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
yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 586 > jordane45 Messages postés 30651 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
jordane45 Messages postés 30651 Date d'inscription   Statut Modérateur Dernière intervention   4 816 > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
 
Oui erreur de copier coller
0
valttt Messages postés 321 Statut Membre 15 > jordane45 Messages postés 30651 Date d'inscription   Statut Modérateur Dernière intervention  
 
OK, je fais les modifs.
Merci encore...
0
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
jordane45 Messages postés 30651 Date d'inscription   Statut Modérateur Dernière intervention   4 816
 
Ancien!
$recaptcha = !empty($_POST['g-recaptcha-response']) ? $_POST['g-recaptcha-response'] : NULL;

Nouveau
$recaptcha = !empty($_POST['grecaptcharesponse']) ? $_POST['grecaptcharesponse'] : NULL;
0
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
jordane45 Messages postés 30651 Date d'inscription   Statut Modérateur Dernière intervention   4 816
 
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
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