fbpx

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.

Share this post

Partager sur facebook
Partager sur google
Partager sur twitter
Partager sur linkedin
Partager sur pinterest
Partager sur print
Partager sur email