Comment ajouter reCaptcha à Prestatshop en 3 étapes

Rédigé par chris - - Aucun commentaire

Prestashop est un des logiciel ecommerce les plus utilisé mais le formulaire de contact ne contient pas de protection contre le spam. Vous pouvez bien sûr ajouter un plugin souvent payant. Mais ici je vais vous donner une façon de faire gratuite en 3 étapes et 30 minutes maximum. Ce tuto a été fait avec prestashop 1.6 si vous avez une version 1.7 j'aimerais avoir vos retours sur ce qui change.


1 Créer votre compte reCAPTCHA si vous n'en avez pas

https://www.google.com/recaptcha/intro/index.html

J'ai choisis reCaptcha2 Notez bien la clé et ajouter votre domaine voir aussi votre domaine de test

2  Changer le formulaire contact-form.tpl

C'est le formulaire de contact. Il devrait se trouver dans le thème.

Cherchez la fin du formulaire le code suivant (c'est le bouton principal)
 <div class="submit"> 
<button type="submit" name="submitMessage" id="submitMessage" class="button"><span>
{l s='Send'}
<i class="icon-chevron-right right"></i></span>
</button>
</div>
</form>
Juste avant copier les lignes suivantes et changer le mot key par votre clé
 <script src='https://www.google.com/recaptcha/api.js'></script>
<div class="g-recaptcha" data-sitekey="key"></div>
Cela devrait ressembler à cela
<div> <script src='https://www.google.com/recaptcha/api.js'></script>
 <div class="g-recaptcha" data-sitekey="key"></div>
</div>
 <div class="submit">
 <button type="submit" name="submitMessage" id="submitMessage" class="button"><span>
{l s='Send'}<i class="icon-chevron-right right"></i></span>
</button>
 </div>
</form>

3 Modifier le controleur ContactControler.php

Ce source devrait se trouver dans \override\controllers\front si ce n'est pas le cas copier le depuis \controllers\front.
Cherchez la deuxième fonction  postProcess() et ajoutez les lignes suivante. C'est le test si le captcha est bon ou non

  if (Tools::isSubmit('submitMessage')) {
 $extension = array('.txt', '.rtf', '.doc', '.docx', '.pdf', '.zip', '.png', '.jpeg', '.gif', '.jpg');
$file_attachment = Tools::fileAttachment('fileUpload');
$message = Tools::getValue('message');
// Html entities is not usefull, iscleanHtml check there is no bad html tags.
$id_order = (int)$this->getOrder();
if (!($from = trim(Tools::getValue('from'))) || !Validate::isEmail($from)) {
$this->errors[] = Tools::displayError('Invalid email address.');
// ajoutez ces deux lignes qui sont en gras 
} elseif (!($gcaptcha = (int)(Tools::getValue('g-recaptcha-response')))) {
$this->errors[] = Tools::displayError('Captcha error');
// jusqu'ici

Voila c'est fait. Vous testez et envoyez vos sources

Autres tutos

Commentaires momentanément fermés

Rédigé par chris - - Aucun commentaire
Ces derniers temps il y a trop de spam dans les commentaires. Ils sont donc fermés en attendant de trouver une parade.

De toute façon, j'avais en projet de faire un forum sur le spj pour discuter de cette problèmatique. Ces commentaires sont publique aussi cela aurait été bien d'avoir un lieu plus confidentiel et privé. Tout cela est à l'étude.

Si vous avez un remède à me proposer pour les commentaires, vous pouvez me contacter par d'autres moyens décris sur la page à propos
Fil RSS des articles de ce mot clé