Annonce

[15 février 2017] Publication de Wanewsletter 3.0.1

#1 2020-05-08 11:13:42

Gautier42
Membre
Inscription : 2020-05-08
Messages : 2

Mis en place d'un Recaptcha

Bonjour,

Je souhaiterai mettre en place la protection Recaptcha de Google sur le formulaire d'inscription de la newsletter. Apres de multiples essais, le bouton à cocher google apparait bien et la clé est bien verifiée. le problème est que le non-cochage du recaptcha ne bloque pas l'inscription. si quelqu'un à une solution... je vous joint les différent codes

Voici la partie du code du formulaire (mailing.php) :

<form method="post" action="http://www.mon_domaine.com/mailing_form.php#success" autocomplete="off">
                            <div class="row gtr-50">
                               <div class="col-4 off-4">
                            Your E-mail Adress: <input type="text" name="email" maxlength="80" />
                                            <input type="hidden" name="format" value="2" />
                                            <input type="hidden" name="liste" value="1" />
                                            <br />
                            Please Choose An Option:<select name="action">
                                                        <option value="inscription">Subscribe</option>
                                                    <option value="desinscription">Unsubscribe</option>
                                            </select><br/><br/>
                                                                                        <div class="g-recaptcha" id="recaptcha" name="recaptcha" data-sitekey="XXXXXXXXXXXXXXXXX"></div><br/>
                                            <input type="submit" name="wanewsletter" value="Submit" onFocus="javascript:this.value='Please Wait...'"/></div></div>
</form>

Code du fichier mailing_form.php:

<div id="success"><?php
require '/flex/storage/mon_domaine/site/www/mailing/newsletter.php';?></div>


le fichier newsletter.php n'a pas été modifié. Je me sert de mailing.php et mailing_form.php pour garder la charte graphique de mon site.

Je voudrais savoir où je peux intégrer le code ci-dessous afin d'empêcher l'inscription si le recaptcha n'est pas coché:

       <?php
    // Ma clé privée
    $secret = "XXXXXXXXXXXXXXXXX";
    // Paramètre renvoyé par le recaptcha
    $response = $_POST['g-recaptcha-response'];
    // On récupère l'IP de l'utilisateur
    $remoteip = $_SERVER['REMOTE_ADDR'];
   
    $api_url = "https://www.google.com/recaptcha/api/siteverify?secret="
        . $secret
        . "&response=" . $response
        . "&remoteip=" . $remoteip ;
   
    $decode = json_decode(file_get_contents($api_url), true);
   
    if ($decode['success'] == true) {
        // C'est un humain
    }
   
    else {
        // C'est un robot ou le code de vérification est incorrecte
                echo 'Veuillez passer le test Recaptcha !';
    }
?>

je pense qu'il faudrait en plus du code fourni par google rajouter un truc du genre : "if $response = $_POST['g-recaptcha-response'];" dans le fichier newsletter.php mais je n'arrive pas à trouver où sans tout bloquer.

Je vous remercie

Gautier

Hors ligne

#2 2020-05-08 14:47:36

Bobe
Administrateur
Lieu : La Rochelle
Inscription : 2002-05-27
Messages : 5 276

Re : Mis en place d'un Recaptcha

bonjour,

J'ai pas codé depuis un certain temps, je suis un peu rouillé ^^
En faisant le require de newsletter.php uniquement si $decode['success'] vaut true, ça devrait être bon


PHP et MySQL, un duo gagnant !

Hors ligne

#3 2020-05-08 17:49:19

Gautier42
Membre
Inscription : 2020-05-08
Messages : 2

Re : Mis en place d'un Recaptcha

Mille merci !!

j'ai fais exactement ce que vous avez dit (pourquoi chercher compliqué quand c'est simple) et ca marche impeccable !! Vous n'êtes donc pas si rouillé que ça smile

pour info voila mon code final:

<?php                               
    // Ma clé privée
    $secret = "xxxxxxxxxxxxxxxxxxx";
    // Paramètre renvoyé par le recaptcha
    $response = $_POST['g-recaptcha-response'];
    // On récupère l'IP de l'utilisateur
    $remoteip = $_SERVER['REMOTE_ADDR'];
   
    $api_url = "https://www.google.com/recaptcha/api/siteverify?secret="
        . $secret
        . "&response=" . $response
        . "&remoteip=" . $remoteip ;
   
    $decode = json_decode(file_get_contents($api_url), true);
   
    if ($decode['success'] == true) {
                require '/flex/storage/mon_domaine.com/site/www/mailing/newsletter.php';
        // C'est un humain
    }
   
    else {
        // C'est un robot ou le code de vérification est incorrecte
       
        echo 'Please verify that you have checked the Recaptcha !';
    }
?>

je pense que vous devriez à l'avenir l'intégrer dans votre script (qui pour moi est le meilleur) en natif.

encore merci !

très bonne soirée

cordialement

Hors ligne

#4 2020-05-08 21:51:04

Bobe
Administrateur
Lieu : La Rochelle
Inscription : 2002-05-27
Messages : 5 276

Re : Mis en place d'un Recaptcha

Cool, bonne continuation smile


PHP et MySQL, un duo gagnant !

Hors ligne

Pied de page des forums