Magazine Ebusiness

Bonne année sans spams russes PrestaShop !

Publié le 31 décembre 2018 par Amerigeau @arnaudmerigeau

Et hop c'est parti pour les voeux avec un cadeau en prime...

38 Super projets PrestaShop et WordPress !

38 Nouveaux projets cette année, sans compter les personnes qui me font confiance au quotidien pour assurer un suivi et/ou une maintenance corrective/évolutive de leur site WordPress ou PrestaShop. C'est un joli chiffre et surtout je dis MERCI pour cette confiance que l'on me donne.

Je souhaite une très bonne année à mes proches, mes clients, mes collègues de longue date et tous ceux que j'ai pu croiser et avec qui j'ai pu discuter.

Je peux déjà vous annoncer que l'année qui arrive sera remplie de beaux projets PrestaShop et WordPress, avec des nouveautés qui seront visibles assez rapidement, des nouveaux modules PrestaShop, des plugins WordPress également car on m'en demande de plus en plus !

J'ai hâte de vous montrer toutes ces nouveautés mais avant : Meilleurs Voeux pour 2019 !

Stop au spams russes avec PrestaShop

J'ai déjà traité le sujet des spammeurs russes, chinois et d'ailleurs dans ces articles Tuto gratuit : ajouter reCAPTCHA à PrestaShop et [PrestaShop 1.7] Ajouter reCAPTCHA v2 pour éviter le spam mais les mails intempestifs reviennent à la charge on dirait selon les nombreux retours que j'ai pu avoir.

Voici donc une autre solution pour stopper les spams sous PrestaShop, peu être temporaire suivant l'adaptation des spambots, testée sur PrestaShop 1.6 :

1) éditer le fichier www/index.php en remplaçant XXXXXXX-the-secret-key-XXXXXXXXXX par la clé secrète

<?php /* * 2007-2015 PrestaShop * * NOTICE OF LICENSE * * This source file is subject to the Open Software License (OSL 3.0) * that is bundled with this package in the file LICENSE.txt. * It is also available through the world-wide-web at this URL: * http://opensource.org/licenses/osl-3.0.php * If you did not receive a copy of the license and are unable to * obtain it through the world-wide-web, please send an email * to [email protected] so we can send you a copy immediately. * * DISCLAIMER * * Do not edit or add to this file if you wish to upgrade PrestaShop to newer * versions in the future. If you wish to customize PrestaShop for your * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA <[email protected]> * @copyright 2007-2015 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ // CAPTCHA - Arnaud Merigeau - [email protected] - https://www.arnaud-merigeau.fr if (isset($_REQUEST['submitMessage'])){ if (empty($_REQUEST['g-recaptcha-response'])){ sleep(25); die('not human'); } $opts = array('http' => array( 'method' => 'POST', 'header' => 'Content-type: application/x-www-form-urlencoded', 'content' => http_build_query( $post = array( 'secret' => 'XXXXXXX-the-secret-key-XXXXXXXXXX', 'response' => $_REQUEST['g-recaptcha-response'], ) ), ), ); if (in_array(ini_get('allow_url_fopen'), array('On', 'on', '1'))) { $stream = stream_context_create($opts); $captcha = @json_decode(file_get_contents('https://www.google.com/recaptcha/api/siteverify', false, $stream), true); } elseif (function_exists('curl_init')) { $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_RETURNTRANSFER => 1, CURLOPT_URL => 'https://www.google.com/recaptcha/api/siteverify', CURLOPT_POST => 1, CURLOPT_POSTFIELDS => $post, ) ); $captcha = @json_decode(curl_exec($curl),true); curl_close($curl); } else { // buggy hoster ! $captcha = array('error' => 'buggy hoster'); } if (empty($captcha) || empty($captcha['success']) || !$captcha['success']){ if(!empty($_SERVER['HTTP_REFERER']) & ($h = parse_url($_SERVER['HTTP_REFERER'])) & $h['host'] == $_SERVER['HTTP_HOST']) { sleep(5); die('<p>Captcha Invalide</p><a href="'.$_SERVER['HTTP_REFERER'].'"><button>Retour au formulaire</button></a>'); } sleep(25); die('not human'.PHP_EOL/*.print_r($captcha,1)*/); } } require(dirname(__FILE__).'/config/config.inc.php'); Dispatcher::getInstance()->dispatch();

2) éditer le fichier www/themes/votre_theme/header.tpl en insérant ce script avant la balise en remplaçant XXXXXXX-the-public-site-key-XXXXXXXXXX par la clé publique

{* CAPTCHA - Arnaud Merigeau - [email protected] - https://www.arnaud-merigeau.fr *} <script> (function(){ var googlecaptchasitekey = 'XXXXXXX-the-public-site-key-XXXXXXXXX'; var trigger = function(){ setTimeout(function(){ $('div.g-recaptcha').remove(); var $forms = $('form.contact-form-box,form#sendOrderMessage'); if ($forms.length > 0){ var captcha = $('<div class="g-recaptcha" data-sitekey="'+ googlecaptchasitekey + '">'); var $submit = $forms.find('#submitMessage,.button[name=submitMessage]'); $submit.before(captcha); $submit.click(function(event){ $gresponse = $forms.find('[name=g-recaptcha-response]'); if ($gresponse.length == 0 || $gresponse.val().length == 0) { event.preventDefault(); event.stopPropagation(); return false; } }); try { window.grecaptcha.render(captcha[0]); } catch(e){}; } },1000); }; $(document).ready(trigger); $(document).bind('ajaxComplete', trigger); })(); </script>

Voici le tuto pour obtenir une clé google captcha

Important : dans ce script, il faut si besoin adapter le code selon les spécificités de votre thème :

  • var $forms = $('form.contact-form-box,form#sendOrderMessage'); ==> indiquer à la place de " form.contact-form-box,form#sendOrderMessage " l'id ou la class du formulaire
  • var $submit = $forms.find('#submitMessage,.button[name=submitMessage]'); ==> indiquer à la place de " #submitMessage,.button[name=submitMessage] " l'id ou la class du bouton de validation du formulaire

Voici les fichiers indiqués :

J'espère que ce tuto pour stopper les spams PrestaShop vous sera utiles pour la nouvelle année 😀

Mots clés : captcha, google captcha, spams prestashop, tuto prestashop, tutorial prestashop, tutoriel prestashop

Vous avez aimé cet article ? Notez-le avec les étoiles ! Merci !


Retour à La Une de Logo Paperblog

A propos de l’auteur


Amerigeau 144 partages Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte