Installer reCAPTCHA V3 sur une vieille version d’eZ Publish

Récément j’ai du installer Recaptcha V3 sur une ancienne version d’eZpublish (v4). Voici comment faire simplement.

Attention cette méthode n’est pas optimale car je modifie le code en dur sachant que la version du site ne sera jamais mise à jour.

1- Gérérer les clés sur Google reCAPTCHA

Premièrement aller sur le site reCAPTCHA et générer les clés pour le site désiré en prenant soin de choisir la V3.

2- Ajouter le javascript dans les templates eZ Publish

Ajouter ce petit bout de de code dans le code HTML du site.

{literal}
<script src="https://www.google.com/recaptcha/api.js?render=CLE_PUBLIQUE_DU_SITE"></script>    
<script>        
grecaptcha.ready(function () 
{            
grecaptcha.execute('CLE_PUBLIQUE_DU_SITE', { action: 'contact' }).then(function (token) {

var recaptchaResponse = document.getElementById('recaptchaResponse');               
recaptchaResponse.value = token;            

});        

});    

</script>    
{/literal}

Dans le template du formulaire ajouter également ce champ input

<input type="hidden" name="recaptcha_response" id="recaptchaResponse">

3- Modifier le fichier PHP de traitement de contact

Modifier le fichier kernel/content/collectedinformation.php après le bloc (environ l149)

 // Check every attribute if it's supposed to collect information    
$attributeDataBaseName = 'ContentObjectAttribute';   
$unvalidatedAttributes = array();    
$canCollect = true;    
$requireFixup = false;

et ajouter :

/** Recaptcha V3 */
    
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['recaptcha_response'])) {
            
$recaptcha_url = 'https://www.google.com/recaptcha/api/siteverify';           
$recaptcha_secret = 'CLE_PRIVEE_DU_SITE';           
$recaptcha_response = $_POST['recaptcha_response'];            

$recaptcha = file_get_contents($recaptcha_url . '?secret=' . $recaptcha_secret . '&response=' . $recaptcha_response);            
$recaptcha = json_decode($recaptcha);
            
if ($recaptcha->score >= 0.5) {                
// OK. On laisse la suite du code se dérouler
} else {                
// Risque de spam -> on bloque                
echo "Votre IP peut être considérée comme un SPAM. Merci de nous envoyer un email via notre adresse email directement.";                
echo "<br/><br/><br/><br/>";                
exit();            
}
    
}
    
/* Fin recaptcha V3 */

Comme cité plus haut, cette méthode n’est pas optimale.

Image de Johann

Johann

Webmaster depuis 1998, Créateur de JeVendsLaBoutique.com, J’accompagne les Entrepreneurs passionnés et Freelances à développer leur activité sur Internet.

Partager cet article

4 Responses

  1. Salut,
    Avant tout merci pour ton partage, cela fonctionne pour mon test en effet, par contre a tu pu faire en sorte que le reCAPTCHA soit aussi contrôlé au moment du control de remplissage?

  2. Bonjour,
    dans l’étape 2 vous avez indiqué
    « Ajouter ce petit bout de de code dans le code HTML du site. »
    pouvez-vous m’indiquer dans quelle page?

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

A propos

Johann ROCHE

Webmaster depuis 1998, Créateur de JeVendsLaBoutique.com, J’accompagne les Entrepreneurs passionnés et Freelances à développer leur activité sur Internet.

Articles récents

Me suivre

✉️ Faire partie de mes contacts