Module Catpcha pour prestashop 1.7

Ce tutoriel est compatible avec les versions de Prestashop suivantes :
1.7 1.7.6 1.7.7 +
Cet article est assez ancien, malgré toute l'attention que j' apporte à mes contenus il est possible que celui-ci ne soit plus d'actualité.
N'hésitez pas à me le signaler si nécessaire via le formulaire de contact.

Je viens enfin de rendre compatible mon module de captcha eicaptcha avec la version 1.7 de prestashop 🙂
En raison des nombreux changements sur l’infrastructure j’ai quasiment procédé à une réécriture complète du module.

Celui-ci permets d’ajouter un captcha sur le formulaire de contact, et sur le formulaire de création de compte.
( La possibilité de le rajouter sur le formulaire de commentaire produit, et envoyer à un ami est supprimée pour l’instant )

Aperçu :

Formulaire de contact

Formulaire de création de compte

 

Récupération du module :

Via ssh :

git clone https://github.com/nenes25/eicaptcha.git -b 17
cd eicaptcha
composer install

Télécharger une archive complète :

Pour être sûrs de récupérer la dernière version consultez la page https://github.com/nenes25/eicaptcha/releases
Téléchargez la dernière release taguée 2.0.x

Vous pourrez ensuite l’installer via l’administration ou par ftp

Attention ce module nécessite au préalable l’installation du module « contactform » de prestashop, il faut donc penser à l’installer avant 😉
( il est gratuit et disponible par défaut sur toutes les versions )

Changements techniques :

La gestion du formulaire de contact est géré dans prestashop 1.7 via un widget du module contactform.
Ce module surcharge donc le module contactform pour vérifier la complétion du captcha via un nouveau hook actionContactFormSubmitBefore.

context->controller->errors)) {
           parent::sendMessage();
       }
    }

Lors de la création de compte la gestion du hook natif actionSubmitAccountBefore a été changée.
De ce fait je n’ai pas pu l’utiliser et j’ai du surcharger également le fichier AuthController pour rajouter un nouveau hook personnalisé pour gérer la vérification du captcha.

 

Le module est fonctionnel, des changements et des optimisations sont encore possibles dans les prochains jours / semaines, n’hésitez pas donc pas à remonter des issues sur github.
https://github.com/nenes25/eicaptcha

Le code est disponible sur la branche 17 du dépôt.

61 réflexions sur “Module Catpcha pour prestashop 1.7”

  1. Hi Herve,

    For captcha FO laguage autodetection make this:

    In function:
    hookHeader
    hookDisplayCustomerAccountForm
    and
    displayCaptchaContactForm

    add as first function line:
    $iso_code = $this->context->language->iso_code;

    and replace
    ‘.Configuration::get(‘CAPTCHA_FORCE_LANG’).’
    with
    ‘.$iso_code.’

    This will set captcha language to front ofice language selected by visitors.

  2. Bonjour, et merci pour ce billet. Je viens de tomber dessus. J’ai donc installer le module dans sa version v2.0.1 avec le patch v0.4.11. Le module fonctionne sur l’inscription au site, mais pas dans nous-contacter. Même en ajoutant le module contactform (formulaire de contact) en plus de celui déjà inclus de bas dans presta 1.7
    Par contre, impossible de centré correctement dans l’alignement du reste dans l’inscription sur le site. Une petite aide serait la bienvenue 🙂 Merci par avance.

    Cordialement

    1. Bonjour,

      Pour Prestashop 1.7 il faut uniquement installer la version v2.0.1.
      Je vais rajouter une vérification à l’installation pour empêcher l’installation de la version 0.4.x sur PS 1.7

      Cordialement,
      Hervé

  3. Super merci. En effet j’ai voulu devancé en pensant avoir un truc plus complet dès le départ et finalement, sa fonctionne au top de base sans ajout et centré 🙂 Encore merci

    Cordialement,

    Pascal

  4. Bonjour,
    d’abord merci pour ce module que j’ai installé.
    Mais cela ne fonctionne pas sur ma page contact.
    Je suppose que cela vient du fait que j’ai un thème personnalisé.
    Pouvez-vous me dire ce qu’il faut configurer dans ce cas, je ne l’ai pas trouvé dans vos indications.

    Merci d’avance.
    Ben.

  5. Voici un extrait du contactform.tpl du thème,
    mais je n’ai pas réussi à intégrer le captcha. Pouvez-vous m’aider sachant que je souhaite que le captcha s’ajoute avant le bouton Envoyer ?

    Merci d’avance

    {l s=’Message’ d=’Shop.Forms.Labels’}

    {if $contact.message}{$contact.message}{/if}

    Ben

  6. Hi.
    I tried to install the latest version of the module in Prestashop 1.7.0.4 and it tells me that it is not compatible with this version. Thank you.
    A greeting.

  7. Bonjour,

    Tout d’abord merci pour votre tuto, il est très pratique pour réduire les invasions de robots russes sur les formulaires de contact.

    Par contre nous avons aussi du spam de robots via le « bloc newsletter ». Est-ce qu’il y aurait une manipulation simple qui permettrait d’étendre le recaptcha aussi à la newsletter ?
    merci

  8. Bonjour

    Un grand merci pour votre module, que j’ai trouvé suite à l’envahissement de mon site prestashop 1.7. par des mails russes plus de 200/jours…..

    J’ai installé par erreur la version 0.4.14, et le captcha ne fonctionnait pas sur contact (il était présent mais on pouvait envoyé le mail par le formulaire sans valider le captcha), après relecture de votre notice, j’ai donc désintallé via le back office le module et tenté de reinstaller la version pour 1.7 soit 2.04.Mais impossible de réinstaller via le back office, idem en essayant par ftp, on ne voit plus le module dans le back office.Il y a surement un fichier a supprimer quelque part pour obtenir une reinstall propre de votre module. Merci d’avance si vous pouvez m’éclairer. Bien cordialement. jean claude

    1. Bonjour,
      Le plus simple serait déjà de supprimer l’ensemble des fichiers du module.
      Puis de télécharger l’archive depuis la page des releases sur github.
      Et d’envoyer le fichier zip via l’administration de votre site.

      Cordialement,
      Hervé

  9. Bonjour,
    Merci pour ce module extrêmement pratique, car depuis peu je n’arrête pas de me faire spamer …

    J’ai toute fois quelque soucis :
    Quand j’essaie d’envoyer le formulaire de contact j’obtiens le message suivant :
    « An error occurred while sending the message, please try again. » (message non traduit par la même occasion ;-))

    Dans les paramètres avancés du module j’ai ceci en error :
    « contacform.php override does not exists »

    Et dans la log :
    2018-04-06 13:13:05: Captcha soumis avec succès
    2018-04-06 13:13:12: Merci de valider le captcha
    2018-04-06 13:13:12: Réponse recaptcha Array
    (
    [0] => missing-input-response
    )

    2018-04-06 13:13:25: Captcha soumis avec succès

    Pouvez-vous m’aider ? Merci

  10. J’ai installé Ei Captcha sur prestashop 1.7.3.0, tout s’est bien passé et eicaptcha apparaît en « contact avec nous » et « crée un compte ». Mais quand je coche « Vérifier si le module est bien installé », j’ai cette erreur: contacform.php override n’existe pas. Est-ce que quelqu’un sait comment corriger l’erreur? Merci beaucoup d’avance.

  11. Bonjour,
    Merci pour ce module,j’ai essayé de l’installer mais j’ai eu une erreur : le module contact form doit étre installé avant.
    Malgré que ce module est installé.
    Cordialement,

  12. Bonjour,
    j’ai installé le module et je peut envoyé un email à partir de contact page sans vérifier le captacha?
    comment fixer cet bug?
    merci
    Cordialement,

    1. Bonjour,
      Quelle est votre version exacte de prestashop ?
      Il est possible que votre problème puisse être lié à votre question précédente car le module contactform est nécessaire au bon fonctionnement de celui-ci.
      Pensez à bien vider le cache également pour que les surcharges soient prises en compte.

      Cordialement,

  13. Bonjour,
    petit retour j’ai eu le bug sur la page « Contactez-nous » prestashop 1.7.4.2 ou recaptcha ne s’affiché pas du coup j’ai desactiver tous les addons que j’avais installer et il y avait un conflit avec un autre « celui ci: http://prestacraft.com/age-verification-popup/ » après l’avoir désinstallé tout marche à 100%, j’espère que ça aidera un peu.

    Merci pour l’addon il est top.
    Bonne continuation.

  14. bonjour

    merci pour le module il est bien installer

    mais pour le message le visiteur peu envoyer un message malgré le recapatcha est installer

    j’ai eu c message la dans le module :

    the module is not registered in hook actionContactFormSubmitCaptcha
    the module is not registered in hook actionContactFormSubmitBefore
    AuthController.php override does not exists
    contacform.php override does not exists
    Authcontroller override is not present in class_index.php

    je n’arrive pas a savoir se que je dois faire

    merci d ‘un coup de pousse

    yeeeessssssssssss

    1. Bonjour,
      Le module semble mal installé.
      Réinitialisez l’installation et vider le cache de Prestashop cela devrait permettre de corriger ce comportement.

      Cordialement,
      Hervé

  15. Le module fonctionne sur l’inscription au site, mais pas dans nous-contacter.
    Presta version 1.7.4.3
    eicaptcha v0.4.15
    Auriez vous la solution ? Merci de votre travail et aide.

  16. je n’arrive pas à installer le module sur un prestashop 1.7.3.2. Que ce soit via ftp (en recherchant dans les modules et services, il n’est pas visible) ou en l’installant directement dans le BO via le zip j’ai un message d’erreur (Aïe… le chargement a échoué.
    Que s’est-il passé ?
    Ce fichier ne semble pas être un fichier .zip de module valide). Une idée?

  17. Hi! Thanks for the module, i take it and edit it for show the recaptcha for every form, but … i can’t show it in the index page jajaja ¿Are you make a restriction?

    Greetings

  18. Thank you for your great module! 🙂

    Hi, I’m using your module in my PS 1.7.5.1, in the creation accounts form.
    I would like to modify position and size of recaptcha. I tried modifying eicaptcha.css:

    .account_eicaptcha div#captcha-box
    {
    position:absolute;
    float: right;
    bottom: 18px;
    }

    but it doesn’t work. How could I modify position and size properties?

    Please, help me.

  19. Bonjour,

    Tout d’abord félicitation pour votre module qui rend bien service !
    Le module m’a installé le reCAPTCHA sur le formulaire permettant d’ajouter des commentaires sur les articles du blog de ma boutique Prestashop. Je pense qu’il prend ce formulaire pour un formulaire de contact.
    Comment faire pour enlever le reCAPTCHA à cet endroit tout en le laissant sur le formulaire de contact ?

    Merci

  20. Bonjour Hervé, est ce que ton module est compatible avec la 1.7.6 ? Je l’ai installé mais il ne fonctionne pas sur le formulaire d’inscription. Même avec la case robot cochée, il ne se valide pas. Pas d’erreur affichée (ni sur la console JS) mais on revient sur la page. Par contre, sur ma console Google Admin, j’ai le message « Nous avons détecté que votre site ne vérifiait pas les solutions fournies aux tests reCAPTCHA. Vous devez les vérifier afin d’utiliser correctement la fonctionnalité reCAPTCHA sur votre site ». Tu peux m’aider ? D’avance merci. Renaud.

  21. Merci Hervé, en effet ça fonctionne bien chez toi. Tu utilises bien la V 0.4.17 ? Je ne comprends pas que ça ne fonctionne pas sur mon formulaire de création de compte. Sans erreur nulle part affichée…
    C’est rageant !

    1. Bonjour Renaud,
      Désolé ce message était passé en spam.
      Je pense que l’erreur etait liée au fait que tu n’utilise pas la bonne version.
      Pour la version 1.7 c’est la release 2.x ( 2.0.4 à date qu’il faut utiliser )
      Il me semblait avoir bloqué l’installation de celle-ci sur les version 1.7 il faudra que je vérifie.

      Cordialement,
      Hervé

  22. Cependant, dans le source de mon form inscription j’ai ce code JS juste au dessus du script normal d’appel du reCaptcha :

    waiting_message = ‘Merci de patienter pendant la validation du captcha’;
    checkCaptchaUrl = ‘/modules/eicaptcha/eicaptcha-ajax.php’;
    errorSelector = ‘.alert’;
    formSelector = ‘#account-creation_form’;

    Peut-être un problème ici ? Je ne le vois pas dans ton source de démo…

  23. Bonjour,

    Tout d’abord, merci pour ce précieux module ! 🙂
    Y a-t-il moyen de le faire fonctionner (même en codant un peu) pour la newsletter afin d’éviter des inscriptions « foireuses » par des robots ?…

    Merci par avance pour votre réponse ! 🙂

    1. Bonjour,

      Sans mettre les mains dans le code ce ne sera pas possible, cela nécessiterais de modifier pas mal le module ps_emailsubscription également.
      Je pense que ca nécessite un temps de dev assez conséquent tout de même
      La solution la plus pratique serait peut etre de regarder si il existe un module d’inscription newsletter tout fait avec un captcha imbriqué 🙂

      Cordialement,
      Hervé

  24. Bonjour,

    Merci beaucoup pour ce module très symple et fonctionnel 🙂

    j’espère que les bot ne vont pas apprendre à cliquer automatiquement 😛

    je reçoie autant de proposition de produits stupéfiants, proposition d’objets « hot » ou des menace de cryptage du site (sachant qu’il n’y a encore rien xD)

    J’espère que ce sera un bon frein 🙂

    Voilou, merci

    Cordialement

  25. Est-ce que ce module est bien compatible avec la version de PrestaShop : 1.7.6.5
    Quand je transfère le module j’ai le message suivant :
    L’installation du module eicaptcha a échoué. Ce module n’est pas compatible avec votre version de PrestaShop.
    Merci

  26. Bonjour et merci/bravo pour votre module qui fonctionne parfaitement sur mon site… à l’exception de la création de compte dans le processus de paiement.
    A ce moment la validation peut se faire sans cocher le captcha. (version PS 1.7.6.3)
    Le log n’affiche alors rien.
    Une idée??

  27. Bonjour,
    Je viens d’implémenter le module 2.0.4 sur une version PrestaShop 1.7.6.7, ça fonctionne au poil avec la configuration de Type de reCAPTCHA :v2 Case à cocher.
    Par contre avec la version v3, j’ai eu un problème (pb avec les clés).
    Donc je suis resté à la v2 et ça me convient.
    Un grand merci !

  28. bonjour, et merci pour ce code, par contre j’ai installé le module et le recaptcha n’apparaît pas. Je n’ai pourtant aucun override du formulaire de contact.
    merci d’avance

Laisser un commentaire

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