ReCaptcha et PHP

valttt Messages postés 321 Statut Membre -  
valttt Messages postés 321 Statut Membre -
Bonjour,

Je ne comprends pas comment intégré dans ma page contact.php, le code pour avoir un reCaptcha.
Dans tous les forums, vidéos, site de google, ou l'on parle de reCaptcha et de PHP, on parle de code html (voir image (balise <head>)).



Ma page contact est en php et pas en html.
Pourquoi parle t'on de code html alors que c'est pour du php ?
Quelqu'un pourrait me dire comment mettre les bons codes aux bons endroits (je n'ai pas de page en html sur mon site).

Merci d'avance pour vos conseils...

24 réponses

  • 1
  • 2
Résumé de la discussion

Le sujet porte sur l’intégration de reCAPTCHA dans une page de contact écrite en PHP et sur l’emplacement des codes Google, qui impliquent du JavaScript et du HTML même si la page est PHP. Plusieurs répondants recommandent d’insérer le script JS de Google dans l’head et le code du widget reCAPTCHA dans le formulaire HTML, même si le fichier est en PHP, afin de fonctionner correctement. En pratique, l’insertion concerne d’abord le script côté client dans la balise head, puis l’insertion du champ g-recaptcha-response et la vérification côté serveur via le secret, sans dépendre du type de page. D’autres échanges soulignent aussi les vérifications techniques, notamment le contrôle de la présence du champ g-recaptcha-response dans $_POST et les éventuelles erreurs liées au chemin d’inclusion des fichiers.

Généré automatiquement par IA
sur la base des meilleures réponses
  1. valttt Messages postés 321 Statut Membre 15
     
    J'ai supprimé
    if(isset($_POST['submit']) && !empty($_POST['submit'])):
    else:
    $errMsg = '';
    $succMsg = '';
    endif;


    1) Je ne reçois pas de mail alors qu'un message me dit le contraire (avec ou sans avoir coché le captcha)
    2) Ou dois-je mettre le code
    print_r($responseData);
    ?

    Voici mon code:
    <?php

    if(empty($_POST['name']) ||
    empty($_POST['email']) ||
    empty($_POST['message']) ||
    empty($_POST['phone']) ||
    empty($_POST['sex']) ||
    !filter_var($_POST['email'],FILTER_VALIDATE_EMAIL))
    {
    echo "Pas de données envoyées!";
    return false;
    }
    if(isset($_POST['g-recaptcha-response']) && !empty($_POST['g-recaptcha-response'])):
    //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='.$_POST['g-recaptcha-response']);
    $responseData = json_decode($verifyResponse);
    if($responseData->success):

    //contact form submission code
    $name = $_POST['name'];
    $sex = $_POST['sex'];
    $phone = $_POST['phone'];
    $email_address = $_POST['email'];
    $message = $_POST['message'];

    $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 du site web\n";
    mail($to,$email_subject,$email_body,$headers);

    return true;

    else:
    $errMsg = 'Erreur de vérification, veuillez réessayer.';
    endif;
    else:
    $errMsg = 'Merci de cocher la case.';
    endif;

    ?>
    1
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      peux-tu répondre au #15?
      que fais-tu ensuite (ailleurs) avec $errMsg?
      quel est le message que tu reçois t'indiquant que le mail est envoyé? d'où vient ce message?
      0
  2. Utilisateur anonyme
     
    Alors ça se voit que tu débutes, car le PHP génère du HTMl, enfin plus précisément il génère du texte, qui une fois envoyé, et interprété par défaut par le navigateur comme du HTML, à moins que l'header est changé.

    Donc il suffit de coller les balises comme indiquer sur Google, si tu ne sais pas comment faire, montre nous ton code pour qu'on te l'explique.
    0
  3. valttt Messages postés 321 Statut Membre 15
     
    Merci beaucoup ZeNairolf, mais avant d'avoir posé la question, j'ai fait quelques recherches avant (c'est la moindre des choses).
    Effectivement, je débute.

    Mon soucis est que dans ma page, je n'ai pas de balise <head>, d’où mon soucis pour mettre les lignes de codes de proposés par google...

    <?php 

    include_once('templates/page_head.php');

    ?>
    <section class="contact">

    <div class="container">
    <div class="row">
    <div class="col-md-12">
    <div class="contact-form">
    <div id="success" class="col-md-10"></div>
    <form name="contactForm" id="contactForm" method="POST" action="mail/mail.php">
    <div class="col-md-6">
    <div class="row control-group">
    <div class="form-group col-xs-12">
    <label>Civilité</label>
    <select class="form-control" name="sex" id="sex">
    <option value="Mr">Monsieur</option>
    <option value="Mm">Madame</option>
    <option value="Melle">Mademoiselle</option>
    </select>
    </div>
    <div class="form-group col-xs-12">
    <label>Nom</label>
    <input type="text" name="name" class="form-control" placeholder="Votre Nom" id="name" required>
    </div>
    </div>
    <div class="row control-group">
    <div class="form-group col-xs-12">
    <label>Email</label>
    <input type="email" name="email" class="form-control" placeholder="Votre Adresse Mail" id="email" required>
    </div>
    </div>
    <div class="row control-group">
    <div class="form-group col-xs-12">
    <label>Téléphone</label>
    <input type="text" name="phone" class="form-control" placeholder="Votre téléphone" id="phone" required>
    </div>
    </div>
    </div>
    <div class="col-md-6">
    <div class="row control-group">
    <div class="form-group col-xs-12">
    <label>Message</label>
    <textarea rows="12" name="message" class="form-control" placeholder="Votre Message" id="message" required></textarea>
    </div>
    </div>
    </div><br>
    <div class="row">
    <div class="form-group col-xs-11 text-right">
    <button type="submit" id="btnSubmit" class="btn btn-info">Envoyer</button>
    </div>
    </div>
    <br>
    </form>
    </div>
    </div>
    </div>
    </div>

    </section>

    <?php

    include_once('templates/page_footer.php');

    ?>
    0
    1. Utilisateur anonyme
       
      A vrai dire tu as un head, mais il se trouve sans doute dans templates/page_head.php que tu inclus en début de page, sinon le script tu peux toujours le mettre avant
      <section class="contact">
      , où à la fin, car si je me trompe pas le script se lance après le chargement de la page, donc peut importe.
      0
  4. dugenou Messages postés 6262 Statut Contributeur 1 455
     
    Bonjour,

    Le script JS de Google est à insérer dans la partie <head> de ta page, qu'elle soit en PHP ou en HTML.

    Ensuite, l'autre code est à insérer dans la partie <form> de ton formulaire, qui est probablement en HTML, même au sein d'une page PHP.
    0
    1. dugenou Messages postés 6262 Statut Contributeur 1 455
       
      Le temps d'écrire ma réponse, tu as fourni ton code.
      Il faut commencer par apprendre les bases, c'est à dire la structure d'une page HTML ou en PHP.
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. valttt Messages postés 321 Statut Membre 15
     
    Ce n'est pas moi qui ai créer mon site web, mais mon ami webmaster qui est aujourd'hui décédé. Je me trouve donc tout seul dans ma campagne pour essayer d'apporter des modifs à mon site.
    Effectivement, il y a bien une balise head dans templates/page_head.php.
    Je vais apporter les modifications et reviens vers vous si cela ne fonctionne pas.
    Merci pour votre aide...
    0
  7. valttt Messages postés 321 Statut Membre 15
     
    Je reviens vers vous après avoir mis les codes indiqué par google SAUF celui de la réponse car je ne comprends pas.

    1) J'ai mis le code <script src='https://www.google.com/recaptcha/api.js'></script> avant la balise </head>
    2) J'ai mis le code <div class="g-recaptcha" data-sitekey="ma clé publique"></div> à l'emplacement ou je veux voir le captcha à l'intérieur de la balise <form>
    => le captcha fonctionne.

    N'ayant pas utiliser de réponse (même si la captcha fonctionne), je reçois le message même si je n'ai pas coché la case (et c'est normal).

    Pourriez-vous m'expliquer comment mettre le code réponse dans mon fichier car je ne comprends pas (https://translate.google.fr/translate?sl=en&tl=fr&js=y&prev=_t&hl=fr&ie=UTF-8&u=https%3A%2F%2Fdevelopers.google.com%2Frecaptcha%2Fdocs%2Fverify&edit-text=&act=url%29 ?



    Merci encore pour votre aide ;-)
    0
  8. valttt Messages postés 321 Statut Membre 15
     
    Je précise qu'il faut que le mail soit envoyé qui SI le captcha à été validé...
    0
  9. valttt Messages postés 321 Statut Membre 15
     
    Bonjour à tous et toutes,
    Une idée sur mon problème ?
    Merci
    0
  10. valttt Messages postés 321 Statut Membre 15
     
    Bonjour à tous et toutes,
    Y a t-il quelqu'un qui puisse m'aider ?
    Merci
    0
  11. Utilisateur anonyme
     
    Normalement il y a un champ g-recaptcha-response dans ta variable $_POST, si je me trompe pas la variable c'est $_POST["g-recaptcha-response"], il faut vérifier si il est bon.
    0
  12. valttt Messages postés 321 Statut Membre 15
     
    Merci ZeNairolf, c'est bien mon problème:
    Comment faire pour vérifier et valider l'envoi que si et seulement si le captcha est bien validé.

    Voici mon code d'origine (sans recaptcha):
    <?php

    if(empty($_POST['name']) ||
    empty($_POST['email']) ||
    empty($_POST['message']) ||
    empty($_POST['phone']) ||
    empty($_POST['sex']) ||
    !filter_var($_POST['email'],FILTER_VALIDATE_EMAIL))
    {
    echo "Pas de données envoyées!";
    return false;
    }

    $name = $_POST['name'];
    $sex = $_POST['sex'];
    $phone = $_POST['phone'];
    $email_address = $_POST['email'];
    $message = $_POST['message'];

    $to = 'mon adresse mail';
    $email_subject = "Envoi depuis le site";
    $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";
    mail($to,$email_subject,$email_body,$headers);

    return true;
    ?>


    J'ai essayer plusieurs chose mais mon mail n'est même plus envoyé maintenant.

    Voici le code auquel j'ai apporter modifications:
    <?php

    if(empty($_POST['name']) ||
    empty($_POST['email']) ||
    empty($_POST['message']) ||
    empty($_POST['phone']) ||
    empty($_POST['sex']) ||
    !filter_var($_POST['email'],FILTER_VALIDATE_EMAIL))
    {
    echo "Pas de données envoyées!";
    return false;
    }
    if(isset($_POST['submit']) && !empty($_POST['submit'])):
    if(isset($_POST['g-recaptcha-response']) && !empty($_POST['g-recaptcha-response'])):
    //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='.$_POST['g-recaptcha-response']);
    $responseData = json_decode($verifyResponse);
    if($responseData->success):


    //contact form submission code
    $name = $_POST['name'];
    $sex = $_POST['sex'];
    $phone = $_POST['phone'];
    $email_address = $_POST['email'];
    $message = $_POST['message'];

    $to = 'mon adresse mail';
    $email_subject = "Envoi depuis le site";
    $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";
    mail($to,$email_subject,$email_body,$headers);

    return true;

    else:
    $errMsg = 'Erreur de vérification, veuillez réessayer.';
    endif;
    else:
    $errMsg = 'Merci de cocher la case.';
    endif;
    else:
    $errMsg = '';
    $succMsg = '';
    endif;


    ?>


    Auriez-vous une idée sur les erreurs rencontrés (pas d'envoi et info comme quoi le message est bien envoyé même si le captcha n'est pas coché) ?

    Mil merci pour votre aide...
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      tu as choisi d'utiliser $errMsg et $succMsg.
      avant cela, en cas d'erreur, tu faisais:
      echo "Pas de données envoyées!";
      return false;

      pourquoi changer?
      0
    2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      ceci me semble superflu:
      if(isset($_POST['submit']) && !empty($_POST['submit'])):
      else:
          $errMsg = '';
          $succMsg = '';
      endif;
      0
  13. valttt Messages postés 321 Statut Membre 15
     
    Personne pour me venir en aide ? ;-)
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      bonjour, qu'affiche le php?
      peux-tu faire
      print_r($responseData);
      ?
      0
  14. valttt Messages postés 321 Statut Membre 15
     
    Bonjour,

    Merci pour ton aide.
    Les msg se sont croisés.

    J'ai changé les codes car j'ai essayer 2 tutos différents sur le web.

    Il faut que je mette
    print_r($responseData);
    dans ma page php ? Si oui, à quel endroit ?
    Merci
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      je pense que tu dois suivre ma suggestion en #16.
      0
  15. valttt Messages postés 321 Statut Membre 15
     
    Merci yg_be,

    Désolé mais mon ami webmaster qui à fait le site web est décédé. C'est pour cela que j’essaie de le faire évoluer tant bien que mal et malgré le trop peu de connaissance dans ce domaine.

    J'ai répondu "J'ai changé les codes car j'ai essayer 2 tutos différents sur le web".

    Je reçois le message "Votre message a bien été envoyé. Je reviendrai vers vous dans les plus brefs délais."
    Ce message viens du fichier "script.js".

    Qu'est-ce que fais-tu ensuite (ailleurs) avec $errMsg? Je ne sais pas... :-(
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      Je propose d'éliminer les $errMsg, et de les remplacer par la logique précédente (qui, je suppose, fonctionnait bien):
      donc, remplace (deux fois)
      $errMsg = 'message d'erreur';

      par
      echo "message d'erreur";
      return false;

      Tant que tu y es, ajoute
      print_r($responseData)
      ; quand tu arrives à l'erreur "Erreur de vérification, veuillez réessayer.". Cela permettra d'e savoir plus si cela se produit.
      0
      1. valttt Messages postés 321 Statut Membre 15 > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Merci, je fais les essais ;-)
        0
  16. valttt Messages postés 321 Statut Membre 15
     
    Je n'ai strictement aucun retour.
    Ni mail, ni affichage du $responseData.
    Néanmoins, il faut savoir que le captcha fonctionne bien car tant que je n'ai pas cocher la case, et cocher les bonnes images, celui n'affiche pas sa validation avec son encoche verte.
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      ajoute
      echo "email envoyé";
      avant
      return true;

      teste à nouveau, et envoie ton code modifié.
      le problème est peut-être causé par les modifications que tu as faites dans l'autre fichier, comme tu expliques en #7.
      peux-tu partager ce fichier avant et après tes modifications?
      quand tu écris "Je n'ai strictement aucun retour", veux-tu dire que c'est comme si rien ne se passait quand tu cliques sur un bouton (quel bouton)?
      0
  17. valttt Messages postés 321 Statut Membre 15
     
    "email envoyé" ne s'affiche pas.
    En fait rien n'a changé...

    Voici le code ajouter au <head> de mon formulaire:
    <script src='https://www.google.com/recaptcha/api.js'></script>

    Voici le code ajouter au <form> de mon formulaire:
    <div class="g-recaptcha" data-sitekey="ma clé publique"></div>


    Voici le code coté serveur:
    <?php

    if(empty($_POST['name']) ||
    empty($_POST['email']) ||
    empty($_POST['message']) ||
    empty($_POST['phone']) ||
    empty($_POST['sex']) ||
    !filter_var($_POST['email'],FILTER_VALIDATE_EMAIL))
    {
    echo "Pas de données envoyées!";
    return false;
    }

    //contact form submission code
    $name = $_POST['name'];
    $sex = $_POST['sex'];
    $phone = $_POST['phone'];
    $email_address = $_POST['email'];
    $message = $_POST['message'];


    if(isset($_POST['g-recaptcha-response']) && !empty($_POST['g-recaptcha-response'])):
    //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='.$_POST['g-recaptcha-response']);
    $responseData = json_decode($verifyResponse);
    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";
    mail($to,$email_subject,$email_body,$headers);
    echo "email envoyé";
    return true;

    else:
    print_r($responseData);
    return false;
    endif;
    else:
    echo "Merci de cocher la case.";
    return false;
    endif;

    ?>


    Seul ce qui est en gras à été ajouter par rapport au fichier d'origine (et fonctionnel)
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      peux-tu partager le fichier avec le formulaire, avant et après tes modifications?
      quand tu écris "Je n'ai strictement aucun retour", veux-tu dire que c'est comme si rien ne se passait quand tu cliques sur un bouton (quel bouton)? ou bien reçois-tu une page blanche en retour?
      peux-tu remplacer l'ensemble de ton fichier php serveur par un petit texte genre "coucou, c'est moi'", pour voir ce que cela donne?
      0
  18. valttt Messages postés 321 Statut Membre 15
     
    <?php 
    include_once('templates/page_head.php');
    ?>
    <section class="contact">
    <div class="container">
    <div class="row">
    <div class="col-md-12">
    <div class="contact-form">
    <div id="success" class="col-md-10"></div>
    <form name="contactForm" id="contactForm" method="POST" action="mail/mail.php">
    <div class="col-md-6">
    <div class="row control-group">
    <div class="form-group col-xs-12">
    <label>Civilité</label>
    <select class="form-control" name="sex" id="sex">
    <option value="Mr">Monsieur</option>
    <option value="Mm">Madame</option>
    <option value="Melle">Mademoiselle</option>
    </select>
    </div>
    <div class="form-group col-xs-12">
    <label>Nom</label>
    <input type="text" name="name" class="form-control" placeholder="Votre Nom" id="name" required>
    </div>
    </div>
    <div class="row control-group">
    <div class="form-group col-xs-12">
    <label>Email</label>
    <input type="email" name="email" class="form-control" placeholder="Votre Adresse Mail" id="email" required>
    </div>
    </div>
    <div class="row control-group">
    <div class="form-group col-xs-12">
    <label>Téléphone</label>
    <input type="text" name="phone" class="form-control" placeholder="Votre téléphone" id="phone" required>
    </div>
    </div>
    <div class="g-recaptcha" data-sitekey="ma clé publique"></div>
    </div>
    <div class="col-md-6">
    <div class="row control-group">
    <div class="form-group col-xs-12">
    <label>Message</label>
    <textarea rows="12" name="message" class="form-control" placeholder="Votre Message" id="message" required></textarea>
    </div>
    </div>
    </div><br>
    <div class="row">
    <div class="form-group col-xs-11 text-right">
    <button type="submit" id="btnSubmit" class="btn btn-info">Envoyer</button>
    </div>
    </div>
    <br>
    </form>
    </div>
    </div>
    </div>
    </div>
    </section>
    <?php

    include_once('templates/page_footer.php');

    ?>


    La balise <head> se trouve dans le fichier page_head.php.
    Le seul code ajouter dans ce fichier est
    <div class="g-recaptcha" data-sitekey="ma clé publique"></div>

    Mon formulaire lorsqu'il fonctionne affiche :
    - envoi le mail
    - efface les champs rempli par l'utilisateur
    - affiche un message ( "Votre message a bien été envoyé. Je reviendrai vers vous dans les plus brefs délais.")

    Quand je dis : Je n'ai strictement aucun retour", c'est que je n'ai :
    - pas le message "email envoyé" d'affiché
    - pas de réception du mail
    - Pas d'affichage de la variable $responseData.

    Seul les champs sont effacés et le message "Votre message a bien été envoyé. Je reviendrai vers vous dans les plus brefs délais." affiché.
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      peut-être en déplaçant
      <div class="g-recaptcha" data-sitekey="ma clé publique"></div>
      juste avant
      </form>
      ?
      0
      1. valttt Messages postés 321 Statut Membre 15 > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Bonjour yg_be et bonjour à tous aussi ;-)
        Déplacer le captcha à cet endroit ne fait que le déplacer graphiquement. Il est à l'intérieur des balises FORM et c'est le principal (c'est ce que dit google)...
        0
    2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      peut-être faut il également modifier ton script script.js?
      0
      1. valttt Messages postés 321 Statut Membre 15 > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Le HTML, le PHP ça va encore mais alors là, c'est du Javanais...
        Je vais m'adresser à un pro dans la grande ville proche de chez moi si j'en trouve un (je ne dis pas que vous n'en êtes pas ;-) ) mais ce sera plus simple pour moi.
        Mil merci pour votre aide et très belle journée à vous...
        0
  19. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Bonjour,

    Bon... arrêtons (arrêtez de vrais-je dire...) de partir dans tous les sens et de taper "au pif" ....

    COmmence par modifier ton code côté serveur comme ceci :
    <?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['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
     //------------------------------------------------------------------
     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;
    ?>
    

    et dis nous ce que ça t'affiche.

    Par contre... ceci :
     //get verify response data
        $verifyResponse = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='.$secret.'&response='.$recaptcha);
        $responseData = json_decode($verifyResponse);
    

    me parait étrange ....
    Il me semble que ce n'est pas la procédure actuelle utilisée dans la documentation...
    Regarde ce tuto :
    https://fr.jeffprod.com/blog/2014/installez-le-nouveau-captcha-de-google-sur-votre-site-en-php.html

    .

    0
  20. valttt Messages postés 321 Statut Membre 15
     
    Bonjour et merci jordane45,

    J'ai modifié comme indiqué.
    - Le captcha n'est validé que lorsque je clic sur les bonnes image (comme avant).

    Lorsque j’envoie le mail (clic sur "envoyer"):
    - Les champs du formulaire s’effacent
    - Le message "Votre message a bien été envoyé. Je reviendrai vers vous dans les plus brefs délais." s'affiche
    - Le mail n'est pas envoyé car je ne le reçois pas.
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       

      - Le message "Votre message a bien été envoyé. Je reviendrai vers vous dans les plus brefs délais." s'affiche

      heuuu... tu peux me dire à quel endroit se trouve, dans ton code, le texte du message en question ???
      Car dans le PHP que tu nous montres ..... tu peux avoir éventuellement un
      echo "email envoyé";
      

      mais c'est tout !

      Es-tu sûr de modifier le bon fichier ????
      celui qui est appelé dans ton FORM ... à savoir : mail/mail.php ?
      0
  21. valttt Messages postés 321 Statut Membre 15
     
    Comme je l'ai indiqué plus haut, ce message vient du fichier script.js.
    Je n'en sais pas comment celui-ci est utilisé.
    Oui, je modifie le bon fichier ;-)
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Alors il nous faut le contenu de ton fichier script.js
      0
  • 1
  • 2