Protection reCAPTCHA & hCaptcha : installation et aide
Démarrage rapide
- Téléversez et installez le ZIP mprrecaptcha dans "Module Manager".
- Cliquez sur "Configure" pour ouvrir Paramètres CAPTCHA.
- Choisissez "CAPTCHA Provider" et enregistrez les clés correspondantes dans Clé du site et Clé secrète.
- Sélectionnez les entrées nécessaires dans "Protect Forms".
- Configurez le seuil v3 et les clés de secours si vous utilisez v3.
- Activez "Enable CAPTCHA Protection" et enregistrez.
- Confirmez que les envois valides réussissent et que les jetons absents ou invalides bloquent chaque formulaire sélectionné ; résolvez tout échec d’intégration avant de compter sur la protection.
Nécessite PrestaShop 1.6 ou une version ultérieure et PHP 7.1 ou une version ultérieure.
Manuel de configuration
Vérifier la protection avant le déploiement
Le module peut afficher des widgets Google reCAPTCHA v2, reCAPTCHA v3 ou hCaptcha. Testez chaque formulaire sélectionné avec un jeton valide, un jeton manquant et un jeton invalide : un widget visible ne signifie pas à lui seul que le traitement du formulaire rejette les envois sans jeton valide.
Pour les formulaires natifs de connexion, d’inscription et de newsletter sélectionnés, une réponse CAPTCHA absente ou invalide empêche l’envoi. La désactivation de la protection CAPTCHA laisse l’inscription native disponible.
Installer et configurer
- Téléversez et installez le ZIP
mprrecaptchavia "Modules" > "Module Manager". - Cliquez sur "Configure" pour ouvrir Paramètres CAPTCHA.
- Sélectionnez "CAPTCHA Provider".
- Obtenez les clés correspondantes du fournisseur pour le domaine de votre boutique. Collez Clé du site et Clé secrète.
- Sélectionnez les formulaires sous "Protect Forms".
- Activez "Enable CAPTCHA Protection" et cliquez sur Enregistrer.
- Testez des jetons valides, absents et invalides sur chaque formulaire sélectionné. Confirmez que les contrôles échoués empêchent l’opération sous-jacente.
L’interrupteur CAPTCHA est désactivé au départ. L’affichage et la vérification restent inactifs tant que les deux clés principales ne sont pas présentes. Les champs secrets sont masqués dans le formulaire de paramètres. Vous avez besoin de PHP cURL et d’une connexion HTTPS entre votre serveur et le point de vérification du fournisseur.
Configurer Paramètres CAPTCHA
| Paramètre | Valeur par défaut | Quand le modifier |
|---|---|---|
| "Enable CAPTCHA Protection" | Désactivé | Activez après avoir enregistré les clés et testé l’intégration. |
| "CAPTCHA Provider" | "Google reCAPTCHA v2 (checkbox)" | Sélectionnez "Google reCAPTCHA v3 (invisible)" ou hCaptcha si vous disposez des clés correspondantes. Un seul fournisseur s’applique à tous les formulaires sélectionnés. |
| Clé du site | Vide | Clé publique du fournisseur sélectionné pour le domaine de la boutique. |
| Clé secrète | Vide | Clé de vérification privée de la même configuration fournisseur. |
| "Protect Forms" | "Contact form" et "Customer registration" | Les autres choix sont "Customer login" et "Newsletter subscription". Ils sélectionnent les intégrations natives du module. |
| "reCAPTCHA v3 Threshold" | 0.5 |
Saisissez un score de 0.0 à 1.0. Un seuil plus élevé rejette davantage de réponses à faible score. Une valeur vide revient à 0.5. |
| "Fallback to reCAPTCHA v2 after low v3 score" | Désactivé | Avec v3, activez un défi à case à cocher après un faible score. Nécessite les deux clés de secours. |
| "Fallback v2 Site Key" | Vide | Clé publique d’une configuration Google v2 à case à cocher distincte. |
| "Fallback v2 Secret Key" | Vide | Clé privée de cette configuration v2. |
| "Load provider script only when a protected form is present" | Désactivé | Activez pour charger les scripts via le widget/injecteur. Laissez désactivé si votre ancien thème exige un chargement global dans l’en-tête. |
Par exemple, choisissez v3, sélectionnez "Contact form", "Customer registration" et "Newsletter subscription", puis fixez le seuil à 0.6. Ces paramètres appliquent la protection v3 aux formulaires sélectionnés.
Pour tester le secours v3, sélectionnez v3, utilisez un seuil plus strict comme 0.7, renseignez les deux clés v2 de secours et activez l’interrupteur de secours. Le module enregistre un défi en attente pour le formulaire après un faible score. La tentative suivante utilise la case v2. Un secours réussi efface cet état en attente.
Vérifier l’emplacement dans le thème
Le module s’affiche via ces hooks de formulaire lorsque votre thème les appelle :
{hook h='displayContactContent'}
{hook h='displayCustomerLoginFormAfter'}
{hook h='displayCustomerAccountForm'}
{hook h='displayNewsletterRegistration'}
Il utilise aussi displayGDPRConsent pour l’emplacement de contact concerné et un injecteur de pied de page pour les formulaires standards reconnaissables. Exemples : #login-form, #customer-form, .block_newsletter form et les contrôles nommés submitMessage, submitLogin ou submitAccount.
Gardez le widget à l’intérieur du formulaire. Ajouter un hook d’affichage ajoute uniquement un widget. Une intégration fonctionnelle de validation côté serveur reste nécessaire.
Vous pouvez cibler .mprrecaptcha-widget, .mprrecaptcha-contact, .mprrecaptcha-registration, .mprrecaptcha-newsletter et .mprrecaptcha-login dans le CSS du thème.
Les scripts des fournisseurs utilisent :
https://www.google.com/recaptcha/api.js
https://www.google.com/recaptcha/api.js?render=YOUR_SITE_KEY
https://js.hcaptcha.com/1/api.js
Les réponses Google utilisent g-recaptcha-response. hCaptcha utilise h-captcha-response. Le secours v3 ajoute mprcaptcha_v2_fallback=1.
Vérifier la validation serveur
Le formulaire de contact natif est vérifié avant l’envoi. Une réponse CAPTCHA incorrecte empêche l’envoi du message.
L’intégration de contact vérifie également submitMessage sur le contrôleur de contact natif pendant actionFrontControllerSetMedia. Si la validation échoue, elle définit le champ honeypot du contact. Testez ce chemin avec votre module de contact installé.
Pour chaque formulaire sélectionné :
- Envoyez des données valides avec un défi valide et confirmez la réussite.
- Envoyez sans jeton et confirmez qu’aucun message, connexion, compte ou abonnement n’est créé.
- Répétez avec un jeton invalide.
- Testez l’emplacement sur mobile et ordinateur.
- Si vous utilisez le secours v3, testez la première tentative échouée et la nouvelle tentative réussie avec la case à cocher.
Si les envois invalides réussissent, le traitement du formulaire nécessite un travail d’intégration. Changer de fournisseur ou ajouter un widget ne corrige pas cela.
Intégrer un autre formulaire
Aucun réglage prêt à l’emploi n’existe pour la commande, la réinitialisation du mot de passe, les avis ou des formulaires tiers arbitraires. Un développeur peut utiliser renderForForm($formId) et verifyForForm($formId, $token, $ip) pour une intégration personnalisée. Utilisez un identifiant de formulaire stable contenant uniquement des lettres, chiffres, traits de soulignement ou traits d’union. Le traitement du formulaire doit refuser l’opération lorsque la vérification renvoie false. La vérification renvoie true lorsque la protection du module est inactive.
Résoudre les problèmes et désinstaller
Si un widget est absent, vérifiez les clés, l’activation, les formulaires sélectionnés, les hooks d’affichage, les sélecteurs et les requêtes fournisseur. Si de vrais utilisateurs échouent en v3, examinez le seuil et la réponse du fournisseur. Si la vérification échoue pour tous, vérifiez le domaine/type de clé et l’accès HTTPS/cURL du serveur. Utilisez la page "Integrity" du module pour les contrôles d’installation.
Désactivez "Enable CAPTCHA Protection" et enregistrez pour arrêter l’affichage et la validation CAPTCHA du module. Désinstallez via "Module Manager" pour supprimer son menu et ses paramètres enregistrés.
Compatibilité
Nécessite PrestaShop 1.6 ou une version ultérieure et PHP 7.1 ou une version ultérieure.
Captures d’écran de référence






Questions
1
Comment le module évite-t-il d’ajouter un second widget sur la page de contact native ?
Lorsque le module actif contactform est enregistré dans displayContactContent, ce module n’affiche pas son widget dans ce hook. Il peut afficher le CAPTCHA de contact via displayGDPRConsent sur le contrôleur de contact à la place. Vérifiez la page de contact finale dans votre thème après avoir activé la protection.
Problèmes connus
11
Envois répétés réutilisant une vérification expirée
Les clients ne peuvent pas créer de compte
Renforcement de la sécurité
CAPTCHA de contact affiché hors du formulaire
Refus du CAPTCHA de newsletter sans message visible
Formulaires actualisés perdant leur CAPTCHA fonctionnel
Formulaires tardifs et défis de secours non initialisés
Des libellés de l'administration restent non traduits
Le module ne se charge pas sous PHP 7.1
Textes traduits endommagés
Widgets CAPTCHA absents des formulaires standard
Demandes de fonctionnalités
9
Implémenté
reCAPTCHA v3 invisible avec recours facultatif à la v2
Protection CAPTCHA des formulaires
Mises à jour depuis le back-office
Administration multilingue
Vérification de la configuration requise
CAPTCHA pour les formulaires supplémentaires
Prise en charge de Friendly Captcha v2
Case à cocher de secours pour reCAPTCHA v3
Chargement conditionnel des scripts CAPTCHA
Journal des modifications
v1.3.02026-10-25
- Addedadmin menu management via MenuInstaller for streamlined module setup
Versions précédentes
v1.2.02026-10-15
- AddedPS 9 / Hummingbird theme compatibility
- AddedhCaptcha provider as an alternative to Google reCAPTCHA
- Addedserver-side verification with configurable score threshold for v3
- Improvederror messaging — failed verification now shows localised inline alert
- FixedreCAPTCHA v3 token expiry on slow connections causing false negatives
v1.1.02026-06-23
- Addedper-form enable/disable toggles: contact, login, registration, newsletter
- AddedreCAPTCHA v2 invisible badge support
- Fixedduplicate script injection when multiple protected forms on one page
v1.0.142026-05-27
- Addedcomplete FR/DE/ES/IT/PL translations
- FixedRender CAPTCHA on native contact forms
v1.0.152025-12-31
- Maintenance release: refreshed bundled shared libraries and module icon
v1.0.02025-03-20
- Initialrelease: Google reCAPTCHA v2 and v3 for PrestaShop forms
- InitialContact form, account login, customer registration, and newsletter protection
- InitialBack-office site key / secret key configuration
- InitialCompatible with PS 1.7.x and PS 8.x
Demo
Testez le module complet avant d'acheter
Achetez la licence plus tard et gardez vos réglages.
- Votre démo de 30 jours Testez-le sur votre propre boutique pendant 30 jours à partir de la première installation.
- Boutique de démo prête Découvrez une boutique de démo prête dans votre navigateur.
- Sans inscription Ni compte, ni e-mail, ni domaine de boutique requis.
En téléchargeant, vous acceptez les conditions de la démo et la politique de confidentialité.
En ouvrant cette démo, vous acceptez les conditions de la démo et la politique de confidentialité.