Jpc_des_dombes Posted February 28, 2018 Share Posted February 28, 2018 il y a 19 minutes, gillouarm a dit : Oups! je viens de trouver mais je vois que ca évolue et du coup je vois la version antispamcontacts .zip en 1.2 est ce la dernière ? Cordialement Oui et chez moi elle fonctionne très bien depuis presque 1 an. En revanche, il faut mettre à jour la liste de blacklistage dès la réception de nouveaux spams. Voici ma liste si ça peut t'aider : www.hubofa.com www.lehu201.com www.longhu90.com www.sega113.com www.zb557.com sj5666.com www.ZHOUJI6.COM www.sega117.com www.sega7.com huyabo.com www.new8882.com sega09 xieyiceshi www.zb778.com www.60124.net www.wns443.com Doctor Goodenough @qq.com http://www.qukbao.com www.qukbao.com 2147178197 http://sbfa111.com/ [email protected] http://www.sbfa111.com/ Les Russes n'ont encore pas frappés à ma porte.... Je croise les doigts Sincèrement Link to comment Share on other sites More sharing options...
gillouarm Posted February 28, 2018 Share Posted February 28, 2018 Merci J'ai installé sur mon presta 1.7 et la liste par défaut me parait bizzare à l'affichage tu es toi aussi en 1.7 ? Link to comment Share on other sites More sharing options...
rebo Posted February 28, 2018 Share Posted February 28, 2018 Il y a 1 heure, doekia a dit : @rebo $response == true? Tu testes seulement que google te retourne une réponse (cast en booléen), pas que celle-ci valide le recaptcha. Il y avait également un autre oublie dans le code que je viens de corriger, je vais éditer mon poste tout se passe correctement maintenant et google renvoie bien son tableau avec ces infos dedans "success": true|false, "challenge_ts": timestamp, // timestamp of the challenge load (ISO format yyyy-MM-dd'T'HH:mm:ssZZ) "hostname": string, Link to comment Share on other sites More sharing options...
Jpc_des_dombes Posted February 28, 2018 Share Posted February 28, 2018 Il y a 2 heures, gillouarm a dit : Merci J'ai installé sur mon presta 1.7 et la liste par défaut me parait bizzare à l'affichage tu es toi aussi en 1.7 ? Non je suis en version 1.6.1.18. Je ne sais pas si le module fonctionne en 1.7. Il faut voir avec le concepteur Thorfy Link to comment Share on other sites More sharing options...
Lydie Monjaret Posted February 28, 2018 Share Posted February 28, 2018 On 19/05/2017 at 3:57 PM, Thorfy said: Voila donc mon module vous n'avez plus qu'à l'installer antispamcontact.zip il est préconfiguré pour les attaques d'hier et aujourd'hui c'est un système de blackListing basique par des champs texte. (il n'est pas compatible avec la solution proposé plus haut: c'est à dire qu'il faut choisir soit la solution soit le module. Vous pouvez toujours cela dit faire un merge et appliquer cette solution dans l'override du module si vous avez le module captcha) un écran de configuration est dispo Désolé si le module n'est pas très design mais j'ai du le développer en urgence je le mettrai certainement à jour si vous le souhaitez Voila en espérant que ça puisse aider certain Bonsoir, le lien antispamcontact.zip, j'ai un soucis identique. Envahi par des mails "mail.ru" plus de 1225 en quelques jours. J'ai bloquer, purgé, et redébloqué mes scripts sur mon manager OVH, mais rien n'y fait! Mon site est de plus très ralentit, et plus aucuns messages reçu dans mon BO n'est synchro. Avez vous un autre lien me permettant de telecharger votre anti spam ? Merci d'avance Lydie Jardin d'Edeyn Link to comment Share on other sites More sharing options...
Eolia Posted February 28, 2018 Share Posted February 28, 2018 utilsez le captcha Google comme on l'a indiqué plus haut et les attaques cesseront Link to comment Share on other sites More sharing options...
Leguman Posted February 28, 2018 Share Posted February 28, 2018 Bonsoir, je suis aussi la cible d'attaque russe via le formulaire de contact. Mon presta est en version 1.4.2.5 J'ai tenté de suivre les indications de modifications du index.php et du contact-form.tpl mais je ne vois pas les captcha. J'ai bien été sur https://www.google.com/recaptcha Bref, je dois sans doute oublier quelque chose, mais je patauge. Et les modules que je trouve ne fonctionne pas avec ma version... Qui peut m'aiguiller pas à pas ? Link to comment Share on other sites More sharing options...
Eolia Posted March 1, 2018 Share Posted March 1, 2018 Pour les 1.4 ce n'est pas dans index.php mais dans contactcontroller.php Vérifiez également que votre formulaire a bien la classe "contact-form-box", snion ajoutez-là. (Souvent il y a juste: class="std" ) Link to comment Share on other sites More sharing options...
doekia Posted March 1, 2018 Share Posted March 1, 2018 et aussi order-detail.php en 1.4 et, selon la version exacte c'est contact-form.php aussi Link to comment Share on other sites More sharing options...
Jpc_des_dombes Posted March 1, 2018 Share Posted March 1, 2018 Petit retour d'expérience pour les bleus comme moi Après avoir utilisé le module de Thorfy avec succès pendant près d'une année, je me suis quand même décidé à opter pour le recaptcha de google en suivant les conseils de ce forum. (merci les amis) Et j'ai galéré ... mais c'est comme ça qu'on apprend. Je ne vais pas vous faire le récit de toutes les étapes mais je vais seulement vous donner la recette finale Tous mes problèmes venaient du cache de mon site que je n'avais pas effacé suite aux différentes modifications. Dans le BO, >Paramètres avancés/Performance/vider le cache (en haut à droite de la fenêtre) Bonne fin de journée Link to comment Share on other sites More sharing options...
kristo1980 Posted March 1, 2018 Share Posted March 1, 2018 (edited) . Edited March 1, 2018 by kristo1980 (see edit history) Link to comment Share on other sites More sharing options...
Aletren Posted March 1, 2018 Share Posted March 1, 2018 Bonjour, j'ai le même problème de spam, le module proposé sur le forum n'a pas fonctionner et le captcha aussi. j'ai appliqué une solution qui marche pour le moment et j'ai pas recu de mail de spam depuis 5 h et j’espère que cela dure J'ai changer le lien de la page contact dans SEO et URLS en mettant test-spam à la place de contactez-nous Ensuite j'ai bloqué le index.php?controller=contact avec le htaccess RewriteCond %{QUERY_STRING} ^controller=contact$ RewriteRule ^(.*)\.php$ - [L,R=404] je croise les doigts mtn Link to comment Share on other sites More sharing options...
Eolia Posted March 1, 2018 Share Posted March 1, 2018 Donc @kristo1980 = @Aletren Vous pouvez aussi mettre un die(); dans index.php et vous n'aurez plus de soucis hein^^ Votre solution n'en n'est pas une vu que vous flinguez le contactcontroller et donc vous privez votre shop de fonctionnalités importantes. Si le captcha ne fonctionne pas, comme vous dites, c'est que vous ne l'avez pas installé correctement. Pour info, lorsque Google propose un code il a été testé dans pas mal de configurations. Je déconseille à quiconque lirait ce post de suivre les conseils de cette personne. Link to comment Share on other sites More sharing options...
doekia Posted March 1, 2018 Share Posted March 1, 2018 Et ça se dit freelancer !! Link to comment Share on other sites More sharing options...
spip93 Posted March 2, 2018 Share Posted March 2, 2018 Bonjour à tous et à toutes, Désolé, je débarque sur ce post. J'ai lu les premiers et les derniers messages et voici ce que j'en retenu de ce qu'il fallait faire (pour que ça soit clair pour tout le monde, à commencer par les newbie comme moi ) I - Installer le re-captcha Google - Commencez par aller là et créez les clés pour votre domaine: https://www.google.com/recaptcha/admin - Saisissez votre nom de domaine seul (pas de www ou http://, juste le domaine nomdedomaine.com) II - Dans le fichier index.php Dans le fichier index.php, à la RACINE de votre site web, copiez ce code (remplacez l'existant) en mettant votre clé SECRETE à la place de XXXXXXX-the-secret-key-XXXXXXXXXX (A noter que le code suivant est le dernier en date de Rebo (merci à lui au passage)) : if (isset($_REQUEST['submitMessage'])){ if (empty($_REQUEST['g-recaptcha-response'])){ sleep(5); die('not human'); } // Ma clé privée $secret = "XXXXXXX-the-secret-key-XXXXXXXXXX"; // Paramètre renvoyé par le recaptcha $captcha = $_POST['g-recaptcha-response']; $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 => array( 'secret' => $secret, 'response' => $captcha ) )); $response = curl_exec($curl); curl_close($curl); if ($response ['success'] == true) { // C'est un humain } else { die('not human'); // C'est un robot ou le code de vérification est incorrecte } } III - Dans le fichier contact-form.tpl ou header.tpl Dans le contact-form.tpl vous copiez le code ci-dessous en début de fichier après les commentaires s'il y en a ( ou header.tpl avant la fin de la balise </head>, en mettant votre clé PUBLIQUE à la place de XXXXXXX-the-public-key-XXXXXXXXXX et en conservant les guillemets simples) : <script> var googlecaptchasitekey = 'XXXXXXX-the-public-site-key-XXXXXXXXX'; /* TODO: tune this https://www.google.com/recaptcha/admin */ $(document).ready(function(){ var $forms = $('form.contact-form-box'); if ($forms.length > 0){ var captcha = $('<div class="g-recaptcha" data-sitekey="'+ googlecaptchasitekey + '">'); var $submit = $forms.find('#submitMessage'); $submit.before(captcha); $submit.click(function(event){ if ($forms.find('#g-recaptcha-response').val().length == 0) { event.preventDefault(); event.stopPropagation(); return false; } }); } }); </script> <script src='https://www.google.com/recaptcha/api.js?hl={$language_code}'></script> Vérifiez que votre formulaire <form> a bien la classe "contact-form-box" sinon ajoutez-là Dites-moi SVP si ça fonctionne, si c'est toujours d'actualité ou s'il y a des modifications à faire. Sinon, j'ai une question : que faut-il faire lorsqu'on a un multi-boutique ? Je pose la question parce que, dans ce cas là, on a : - 1 clé secrète + 1 clé de site PAR site/ boutique - 1 fichier index.php à la racine (pour les x boutiques) - x fichiers header.tpl ou contact-form.tpl (1 par boutique) Par exemple, on a deux sites/boutiques (A et B ) - Dans le fichier header.tpl ou contact-form du site A, on met la clé du site A - Dans le fichier header.tpl ou contact-form du site B, on met la clé du site B Mais que met-on comme clé secrète dans index.php ? La clé secrète du site A, ou celle du site B ? Merci pour votre réponse. Bonne journée à vous ;-) Link to comment Share on other sites More sharing options...
doekia Posted March 2, 2018 Share Posted March 2, 2018 Le code de @rebo ne protège de rien en l'état, il lui manque le contrôle de la réponse google. Le code d'origine http://area51.enter-solutions.com/snippets/74 fonctionnait sur 95% des hébergements non exotique (acceptant allow_url_fopen), il a été corrigé afin de passer en curl dans ce cas Le code du snippet a également été mis à jour pour intégrer la page message du détail des commandes. En multi-boutique, il te suffit d'ajouter tous les domaines concerné à un même recaptcha. (une seule paire de clé publique/privé). Pensez à m'offrir un café - j'en ai besoin Link to comment Share on other sites More sharing options...
Jpc_des_dombes Posted March 2, 2018 Share Posted March 2, 2018 Si je peux ajouter pour "les newbie comme nous", vider le cache du site Link to comment Share on other sites More sharing options...
spip93 Posted March 2, 2018 Share Posted March 2, 2018 Question de newbie : qu'est-ce que ça entraine exactement la suppression du fichier ContactController.php ? Ça empêche "juste" les clients de nous contacter via le site (via le formulaire ou quand ils ont un compte), ou ça fait plus que ça ? Je demande ça parce que en 18 mois d'existence, j'ai eu 3-4 messages via le formulaires (sans compter la 40aine de spams) et encore, c'était de la pub. Avec ça, si les clients veulent nous contacter, ils ont notre mail et notre N° de téléphone. Link to comment Share on other sites More sharing options...
doekia Posted March 2, 2018 Share Posted March 2, 2018 24 minutes ago, Jpc_des_dombes said: Si je peux ajouter pour "les newbie comme nous", vider le cache du site En théorie, au moins en 1.6, vous ne devriez jamais avoir à faire cela car vos réglages devraient être sur l'onglet performance sur "Recompiler les fichiers de templates s'ils ont été mis à jour" sous peine d'avoir de très mauvaises surprises. Link to comment Share on other sites More sharing options...
Manu-41 Posted March 2, 2018 Share Posted March 2, 2018 Je rencontre le même souci ce jour avec des mail @.mail.ru J'ai un captcha dans mon formulaire de contact, mais ils les spam arrivent toujours. Link to comment Share on other sites More sharing options...
unanim Posted March 2, 2018 Share Posted March 2, 2018 Bonjour, Même soucis depuis 48h avec les mails @mail.ru Suite aux conseils d'OVH j'ai installé le reCaptcha Google en entrant les clés dans le module eicaptcha et modifié le .htaccess à la racine de mon mutu pour bloquer toutes les sources identifiées (mail.ru, @mail.ru, etc... ainsi que toutes les adresses IP basées en Russie qui se connectent à ma page contact. J'ai désormais un captcha sur ma page "contact" mais continue de recevoir des spams russes à partir de nouvelles IP. Chaque fois que j'ajoute une nouvelle IP en deny dans le .htaccess, de nouvelles apparaissent bien sûr. Du coup, vu l'intérêt limité du formulaire de contact pour moi, j'ai bloqué carrément celui temporairement pour voir. En attendant de trouver une meilleure solution pour la boutique concernée en 1.5.6.2 D'après ce que j'ai lu, même le reCaptcha mis en place, du moment qu'un robot spammeur vous à trouvé c'est trop tard. Mais vu que les spammeurs se connectent chaque fois via la page contact, je pense tout simplement que le Captcha n'est pas vraiment opérationnel. Du coup j'ai lu toutes les suggestions de modifs mais elles sont trop nombreuses et pas toutes adaptées aux différentes versions de Prestashop... donc j'hésite à tester. Link to comment Share on other sites More sharing options...
oilvier Posted March 2, 2018 Share Posted March 2, 2018 On 01/03/2018 at 7:26 AM, Eolia said: Pour les 1.4 ce n'est pas dans index.php mais dans contactcontroller.php Vérifiez également que votre formulaire a bien la classe "contact-form-box", snion ajoutez-là. (Souvent il y a juste: class="std" ) Bonjour, Tout d'abord, merci pour la solution que vous proposez. Je suis sur un vieux Prestashop (1.4.0) et j'ai donc essayé d'ajouter le code dans un override de ContactController.php. Le code est le suivant : class ContactController extends ContactControllerCore { public function preProcess() { parent::preProcess(); 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' => 'macle', /* TODO: tune this https://www.google.com/recaptcha/admin */ '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']){ sleep(25); die('not human'.PHP_EOL/*.print_r($captcha,1)*/); } } } } Déjà, je ne sais pas si c'est comme ça qu'il fallait faire ? Ensuite, mon problème c'est que les messages sont toujours envoyés. J'ai fait un test en désactivant le JS et en soumettant le formulaire : je tombe bien sur le premier die avec "not human" mais le message est quand même envoyé... Avez-vous une idée de ce qui cloche ? Merci d'avance Link to comment Share on other sites More sharing options...
Eolia Posted March 2, 2018 Share Posted March 2, 2018 Ce code doit être avant tout le reste. Je ne sais plus en 1.4 quand preProcess() est appelé mais le plus simple est de le mettre avant la classe, en tête de fichier. Il n'y a plus trop d'intérêt de faire des overrides sur une 1.4, le code core ne sera plus jamais mis à jour hein Link to comment Share on other sites More sharing options...
Eolia Posted March 2, 2018 Share Posted March 2, 2018 il y a 55 minutes, unanim a dit : Bonjour, Même soucis depuis 48h avec les mails @mail.ru Suite aux conseils d'OVH j'ai installé le reCaptcha Google en entrant les clés dans le module eicaptcha et modifié le .htaccess à la racine de mon mutu pour bloquer toutes les sources identifiées (mail.ru, @mail.ru, etc... ainsi que toutes les adresses IP basées en Russie qui se connectent à ma page contact. J'ai désormais un captcha sur ma page "contact" mais continue de recevoir des spams russes à partir de nouvelles IP. Chaque fois que j'ajoute une nouvelle IP en deny dans le .htaccess, de nouvelles apparaissent bien sûr. Du coup, vu l'intérêt limité du formulaire de contact pour moi, j'ai bloqué carrément celui temporairement pour voir. En attendant de trouver une meilleure solution pour la boutique concernée en 1.5.6.2 D'après ce que j'ai lu, même le reCaptcha mis en place, du moment qu'un robot spammeur vous à trouvé c'est trop tard. Mais vu que les spammeurs se connectent chaque fois via la page contact, je pense tout simplement que le Captcha n'est pas vraiment opérationnel. Du coup j'ai lu toutes les suggestions de modifs mais elles sont trop nombreuses et pas toutes adaptées aux différentes versions de Prestashop... donc j'hésite à tester. Le module ne bloque que les humains, pas les robots^^ Utilisez notre solution des 2 scripts et vous n'aurez plus de mails indésirables. Link to comment Share on other sites More sharing options...
doekia Posted March 2, 2018 Share Posted March 2, 2018 (edited) @olivier pas besoin d'override, ajoute le code dans contact-form.php selon la même méthode index.php ajoute également la classe contact-form-box dans ton contact.tpl et tu peux sans problème ajouter le code dans header.tpl Edited March 2, 2018 by doekia (see edit history) Link to comment Share on other sites More sharing options...
doekia Posted March 2, 2018 Share Posted March 2, 2018 Pour vous rassurer, j'ai à l'heure qu'il est probablement installé le recaptcha http://area51.enter-solutions.com/snippets/74 dans pas loin de 50 boutiques. Et aucune depuis n'a reçu de spam sur le formulaire Link to comment Share on other sites More sharing options...
unanim Posted March 2, 2018 Share Posted March 2, 2018 @Eolia, peut-tu me linker ta solution des 2 scripts car dans tous les posts sur le sujet j'ai du mal à faire le tri. Merci Link to comment Share on other sites More sharing options...
doekia Posted March 2, 2018 Share Posted March 2, 2018 @unanim les 2 scripts sont là: http://area51.enter-solutions.com/snippets/74 La partie en commentaire smarty à mettre dans l'index.php Link to comment Share on other sites More sharing options...
oilvier Posted March 2, 2018 Share Posted March 2, 2018 @Eolia @doekia Merci pour vos réponses. J'ai ajouté ça dans la première fonction du Controller (ça renvoie une erreur si j'ajoute le if en dehors de la Class dans le fichier) et ça semble maintenant fonctionner comme il faut. Je croise les doigts et je vous remercie encore ! Link to comment Share on other sites More sharing options...
Jpc_des_dombes Posted March 2, 2018 Share Posted March 2, 2018 Il y a 7 heures, doekia a dit : En théorie, au moins en 1.6, vous ne devriez jamais avoir à faire cela car vos réglages devraient être sur l'onglet performance sur "Recompiler les fichiers de templates s'ils ont été mis à jour" sous peine d'avoir de très mauvaises surprises. Merci pour l'info doekia, Je continue mon apprentissage ... Link to comment Share on other sites More sharing options...
unanim Posted March 3, 2018 Share Posted March 3, 2018 Merci @Eolia, @Doekia. Je viens de modifier les header.tpl de mon theme ainsi que index.php de la racine comme indiqué. Je suppose que je dois quand même laisser le module eicaptcha? Mon site fonctionne, donc pas de problème avec les modifs fichiers. J'attend de voir l'effet sur les spams. Comme j'avais lu ça quelque part plus haut, je confirme que les robots spammeur n'ont plus besoin de la page contact pour agir une fois qu'ils vous ont trouvé. En effet, j'ai désactivé celle-ci hier soir ce qui a eut pour effet de faire disparaître de ma liste de visiteurs connectés les IP russes qui étaient sur ma page contact. Et ce matin, à nouveau une centaine de mail... Link to comment Share on other sites More sharing options...
Eolia Posted March 3, 2018 Share Posted March 3, 2018 Non vous devez supprimer ce module, il est inutile et vous risquez d'avoir des soucis d'affichage sur votre site. Link to comment Share on other sites More sharing options...
unanim Posted March 3, 2018 Share Posted March 3, 2018 @Eolia, plus de spams depuis 1 heure. L'implémentation des scripts semble donc efficace. Pour l'instant le module eicaptcha n'est pas supprimé car il n'entre pas en conflit avec le reste et je pense, que d'une certaine façon il rassure aussi mes visiteurs. En tout cas, si ça continue comme ça c'est parfait. Encore merci pour vos efforts et votre compétence à tous. Link to comment Share on other sites More sharing options...
Eolia Posted March 3, 2018 Share Posted March 3, 2018 Mais il ne rassure rien du tout !!! Les scripts fournis affichent le captcha, il est inutile de conserver ce module. Link to comment Share on other sites More sharing options...
unanim Posted March 3, 2018 Share Posted March 3, 2018 (edited) ah, ben fallait le dire Mais en le désactivant, je n'ai pas le ReCaptcha Google affiché dans la page contact et rien ne m'est demandé lorsque j'envoie un mail ??? Edited March 3, 2018 by unanim (see edit history) Link to comment Share on other sites More sharing options...
Eolia Posted March 3, 2018 Share Posted March 3, 2018 il y a 19 minutes, unanim a dit : L'implémentation des scripts semble donc efficace Vous avez implémenté quoi et comment ? Il y a un script js à mettre dans le header.tpl du thème et un autre dans le index.php du site Vous devez mettre vos clés privées et publiques et vérifier que votre formulaire de contact a bien la classe "contact-form-box" sinon la rajouter dans votre tpl. Il n'y a rien d'autre à faire. 1 Link to comment Share on other sites More sharing options...
unanim Posted March 3, 2018 Share Posted March 3, 2018 Ceux du header.tpl du theme et du index.php du site sont fait. Mais effectivement rien touché au contact-form.tpl du thème ou je ne vois rien qui se rapporte à la classe "contact-form-box". Donc pour un nullos comme moi, faut être plus explicite: Comment, quoi et ou ajouter cette "classe"? Link to comment Share on other sites More sharing options...
Eolia Posted March 3, 2018 Share Posted March 3, 2018 copiez ici le contenu de votre contact-form.tpl de votre thème svp Link to comment Share on other sites More sharing options...
unanim Posted March 3, 2018 Share Posted March 3, 2018 2 minutes ago, Eolia said: copiez ici le contenu de votre contact-form.tpl de votre thème svp {* * 2007-2013 PrestaShop * * NOTICE OF LICENSE * * This source file is subject to the Academic Free License (AFL 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: * https://opensource.org/licenses/afl-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 https://www.prestashop.com for more information. * * @author PrestaShop SA <[email protected]> * @copyright 2007-2013 PrestaShop SA * @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} {capture name=path}{l s='Contact'}{/capture} {include file="$tpl_dir./breadcrumb.tpl"} <h1>{l s='Customer service'} - {if isset($customerThread) && $customerThread}{l s='Your reply'}{else}{l s='Contact us'}{/if}</h1> {if isset($confirmation)} <p>{l s='Your message has been successfully sent to our team.'}</p> <ul class="footer_links"> <li><a href="{$base_dir}"><img class="icon" alt="" src="{$img_dir}icon/home.gif"/></a><a href="{$base_dir}">{l s='Home'}</a></li> </ul> {elseif isset($alreadySent)} <p>{l s='Your message has already been sent.'}</p> <ul class="footer_links"> <li><a href="{$base_dir}"><img class="icon" alt="" src="{$img_dir}icon/home.gif"/></a><a href="{$base_dir}">{l s='Home'}</a></li> </ul> {else} <p class="bold">{l s='For questions about an order or for more information about our products'}.</p> {include file="$tpl_dir./errors.tpl"} <form action="{$request_uri|escape:'htmlall':'UTF-8'}" method="post" class="std" enctype="multipart/form-data"> <fieldset> <h3>{l s='send a message'}</h3> <p class="select"> <label for="id_contact">{l s='Subject Heading'}</label> {if isset($customerThread.id_contact)} {foreach from=$contacts item=contact} {if $contact.id_contact == $customerThread.id_contact} <input type="text" id="contact_name" name="contact_name" value="{$contact.name|escape:'htmlall':'UTF-8'}" readonly /> <input type="hidden" name="id_contact" value="{$contact.id_contact}" /> {/if} {/foreach} </p> {else} <select id="id_contact" name="id_contact" onchange="showElemFromSelect('id_contact', 'desc_contact')"> <option value="0">{l s='-- Choose --'}</option> {foreach from=$contacts item=contact} <option value="{$contact.id_contact|intval}" {if isset($smarty.request.id_contact) && $smarty.request.id_contact == $contact.id_contact}selected="selected"{/if}>{$contact.name|escape:'htmlall':'UTF-8'}</option> {/foreach} </select> </p> <p id="desc_contact0" class="desc_contact"> </p> {foreach from=$contacts item=contact} <p id="desc_contact{$contact.id_contact|intval}" class="desc_contact" style="display:none;"> {$contact.description|escape:'htmlall':'UTF-8'} </p> {/foreach} {/if} <p class="text"> <label for="email">{l s='Email address'}</label> {if isset($customerThread.email)} <input type="text" id="email" name="from" value="{$customerThread.email|escape:'htmlall':'UTF-8'}" readonly /> {else} <input type="text" id="email" name="from" value="{$email|escape:'htmlall':'UTF-8'}" /> {/if} </p> {if !$PS_CATALOG_MODE} {if (!isset($customerThread.id_order) || $customerThread.id_order > 0)} <p class="text select"> <label for="id_order">{l s='Order reference'}</label> {if !isset($customerThread.id_order) && isset($isLogged) && $isLogged == 1} <select name="id_order" > <option value="0">{l s='-- Choose --'}</option> {foreach from=$orderList item=order} <option value="{$order.value|intval}" {if $order.selected|intval}selected="selected"{/if}>{$order.label|escape:'htmlall':'UTF-8'}</option> {/foreach} </select> {elseif !isset($customerThread.id_order) && empty($isLogged)} <input type="text" name="id_order" id="id_order" value="{if isset($customerThread.id_order) && $customerThread.id_order|intval > 0}{$customerThread.id_order|intval}{else}{if isset($smarty.post.id_order) && !empty($smarty.post.id_order)}{$smarty.post.id_order|intval}{/if}{/if}" /> {elseif $customerThread.id_order|intval > 0} <input type="text" name="id_order" id="id_order" value="{$customerThread.id_order|intval}" readonly /> {/if} </p> {/if} {if isset($isLogged) && $isLogged} <p class="text select"> <label for="id_product">{l s='Product'}</label> {if !isset($customerThread.id_product)} {foreach from=$orderedProductList key=id_order item=products name=products} <select name="id_product" id="{$id_order}_order_products" class="product_select" style="width:300px;{if !$smarty.foreach.products.first} display:none; {/if}" {if !$smarty.foreach.products.first}disabled="disabled" {/if}> <option value="0">{l s='-- Choose --'}</option> {foreach from=$products item=product} <option value="{$product.value|intval}">{$product.label|escape:'htmlall':'UTF-8'}</option> {/foreach} </select> {/foreach} {elseif $customerThread.id_product > 0} <input type="text" name="id_product" id="id_product" value="{$customerThread.id_product|intval}" readonly /> {/if} </p> {/if} {/if} {if $fileupload == 1} <p class="text"> <label for="fileUpload">{l s='Attach File'}</label> <input type="hidden" name="MAX_FILE_SIZE" value="2000000" /> <input type="file" name="fileUpload" id="fileUpload" /> </p> {/if} <p class="textarea"> <label for="message">{l s='Message'}</label> <textarea id="message" name="message" rows="15" cols="10">{if isset($message)}{$message|escape:'htmlall':'UTF-8'|stripslashes}{/if}</textarea> </p> <p class="submit"> <input type="submit" name="submitMessage" id="submitMessage" value="{l s='Send'}" class="button_large" /> </p> </fieldset> </form> {/if} Link to comment Share on other sites More sharing options...
doekia Posted March 3, 2018 Share Posted March 3, 2018 <form action="{$request_uri|escape:'htmlall':'UTF-8'}" method="post" class="std" enctype="multipart/form-data"> a changer en <form action="{$request_uri|escape:'htmlall':'UTF-8'}" method="post" class="std contact-form-box" enctype="multipart/form-data"> Link to comment Share on other sites More sharing options...
unanim Posted March 3, 2018 Share Posted March 3, 2018 Merci @doekiaFait mais pas de changement, le ReCaptcha n'apparaît toujours pas dans le formulaire... Link to comment Share on other sites More sharing options...
Eolia Posted March 3, 2018 Share Posted March 3, 2018 Option: "Recompiler les templates si mis à jour" cochée dans Paramètres avancés -> Performances ? Link to comment Share on other sites More sharing options...
unanim Posted March 3, 2018 Share Posted March 3, 2018 @Eolia Oui l'option est cochée d'office depuis toujours et j'avais également effacé le cache et mon historique navigateur avant de vérifier. Mais toujours pas de ReCaptcha visible dans ma page contact après toutes les modifs. Ceci dit cela ne l'empêche pas de fonctionner correctement, même si le traitement d'envoi semble un peu plus long, et sans spam depuis la mise en place des scripts ce matin. Donc si ce n'est que pour rendre visible le captcha ce n'est finalement pas important. Au pire je ré-installe eicpatcha qui l'affiche et ne génère pas de problèmes. Link to comment Share on other sites More sharing options...
Eolia Posted March 3, 2018 Share Posted March 3, 2018 Non mais vous êtes incroyable... Je ne sais même pas pourquoi vous posez des questions si vous avez vos propres réponses... Quand il y a un problème, on le solutionne, on ne fait pas du cache misère ou de la bidouille. Si le captcha n'est pas visible c'est que vous avez commis une erreur. En analysant le code de votre page je vois une belle erreur "$ is undefined" et c'est normal car vous chargez le script AVANT d'avoir chargé jQuery ! Donc déplacez le bout de script juste AVANT LA FERMETURE DE LA BALISE </head> et tout rentrera dans l'ordre Link to comment Share on other sites More sharing options...
doekia Posted March 3, 2018 Share Posted March 3, 2018 (edited) A tous-ceux qui veulent vérifier le recaptcha Voici un bookmarklet: https://www.bookmarkify.it/8528 soit vous cliquez-droit sur ps-recaptcha-checker pour ajouter à vos marque-pages, soit vous faites le glisser dans votre barre. Rendez vous sur votre site, page de contact, lancez le marque page, si cela vous affiche autre chose que "not human", alors le recaptcha ne fonctionne pas. Edited March 3, 2018 by doekia (see edit history) Link to comment Share on other sites More sharing options...
doekia Posted March 3, 2018 Share Posted March 3, 2018 @unanim ta page contact déclenche une erreur javascript, ce qui empèche le recaptcha de démarrer mais comme il n'est pas détecté non plus par le bookmarklet c'est que tu n'as pas non plus déployé le contrôle. Si ta version est 1.4, tu dois mettre le code de contrôle dans contact.php ou contact-form.php selon ta version exacte Link to comment Share on other sites More sharing options...
unanim Posted March 3, 2018 Share Posted March 3, 2018 14 minutes ago, Eolia said: Non mais vous êtes incroyable... Je ne sais même pas pourquoi vous posez des questions si vous avez vos propres réponses... Quand il y a un problème, on le solutionne, on ne fait pas du cache misère ou de la bidouille. Si le captcha n'est pas visible c'est que vous avez commis une erreur. En analysant le code de votre page je vois une belle erreur "$ is undefined" et c'est normal car vous chargez le script AVANT d'avoir chargé jQuery ! Donc déplacez le bout de script juste AVANT LA FERMETURE DE LA BALISE </head> et tout rentrera dans l'ordre D'accord, excusez moi de vous énerver mais depuis le début les solutions ne sont pas forcément limpides pour quelqu'un qui ne manie pas du code tous les jours. Là vous me parlez de balise </head> mais dans contact-form.tpl il n'y a pas de balises <head> -ou alors je suis miro-. Donc là on parle de quoi, le index.tpl n'en a pas non plus... seul le header.tpl contient ces balises. Donc par déduction c'est là qu'est l'erreur que vous mentionnez. Et que je vais m'empresser de corriger. Link to comment Share on other sites More sharing options...
unanim Posted March 3, 2018 Share Posted March 3, 2018 6 minutes ago, doekia said: @unanim ta page contact déclenche une erreur javascript, ce qui empèche le recaptcha de démarrer mais comme il n'est pas détecté non plus par le bookmarklet c'est que tu n'as pas non plus déployé le contrôle. Si ta version est 1.4, tu dois mettre le code de contrôle dans contact.php ou contact-form.php selon ta version exacte La version concernée est une 1.5.6.2 Link to comment Share on other sites More sharing options...
Eolia Posted March 3, 2018 Share Posted March 3, 2018 Ca va tout de suite mieux, non ? Et pour peaufiner le truc, ajoutez ceci dans votre css: .g-recaptcha { margin: 0 0 10px 150px; } Pour obtenir ceci: 1 Link to comment Share on other sites More sharing options...
unanim Posted March 3, 2018 Share Posted March 3, 2018 et effectivement @Eolia en changeant la position du script dans le header.tpl cela fonctionne. Le captcha apparaît. J'avais donc mal lu et/ou compris les instructions que j'avais interprétées comme "à installer avant la section <head>" Vos solutions sont excellentes si clairement expliquées pour des gens qui ne sont pas le nez dans le code toute la journée. Et 6 pages de posts sur ce sujet finissent par embrouiller l'esprit. Merci encore et bon week-end, à un de ces quatres pour le café ou plus... Link to comment Share on other sites More sharing options...
00000000000000 Posted March 3, 2018 Share Posted March 3, 2018 Bonjour, Après avoir installé le captcha (en suivant ce tuto), je reçois encore quelques mails russes via le formulaire de contact. Comment font les bots ? Une idée ? Merci d'avance pour votre aide. David Link to comment Share on other sites More sharing options...
unanim Posted March 3, 2018 Share Posted March 3, 2018 (edited) supprimé car erroné Edited March 3, 2018 by unanim (see edit history) Link to comment Share on other sites More sharing options...
00000000000000 Posted March 3, 2018 Share Posted March 3, 2018 4 minutes ago, unanim said: @Pause bentô MDR parce que moi aussi j'avais suivi ce tuto originellement qui visiblement ne fonctionne pas même si l'on voit le captcha dans la page contact. Ayant assez énervé Eolia et Dokia toute la matinée, je me suis fait un pense bête en .pdf que je met ici. Il reprend point par point la mise en place des scripts et modifs à faire sur les pages. Il devrait donc fonctionner pour vous (merci @Eolia de vérifier quand même que je n'ai rien oublié) et les autres sans déranger nos 2 héros du forum. Vous avez déjà vos clés ReCaptcha Google, donc désinstallez le fameux module qui ne sert à rien sauf à afficher un captcha non opérationnel. Et modifiez les fichiers indiqués dans le tuto. ReCaptcha.pdf Merci pour cette rapide réponse. Je vois ça et je reviens faire mon rapport plus tard Link to comment Share on other sites More sharing options...
Eolia Posted March 3, 2018 Share Posted March 3, 2018 il y a 31 minutes, unanim a dit : @Pause bentô MDR parce que moi aussi j'avais suivi ce tuto originellement qui visiblement ne fonctionne pas même si l'on voit le captcha dans la page contact. Ayant assez énervé Eolia et Dokia toute la matinée, je me suis fait un pense bête en .pdf que je met ici. Il reprend point par point la mise en place des scripts et modifs à faire sur les pages. Il devrait donc fonctionner pour vous (merci @Eolia de vérifier quand même que je n'ai rien oublié) et les autres sans déranger nos 2 héros du forum. Vous avez déjà vos clés ReCaptcha Google, donc désinstallez le fameux module qui ne sert à rien sauf à afficher un captcha non opérationnel. Et modifiez les fichiers indiqués dans le tuto. ReCaptcha.pdf Non ca ne va pas du tout, vous avez fait 2 erreurs dont une très grave! Pour les noms de domaine chez Google, c'est uniquement le nom de domaine SEUL (pas de www ou de sous domaine, Google valide le domaine et ses sous-domaines en entier) La 2ème est beaucoup plus grave ! Ne copiez surtout pas le contenu total dans header.tpl ou tout le monde pourra lire votre clé privée mais en plus cela va faire planter la page. Link to comment Share on other sites More sharing options...
00000000000000 Posted March 3, 2018 Share Posted March 3, 2018 2 minutes ago, Eolia said: Non ca ne va pas du tout, vous avez fait 2 erreurs dont une très grave! Pour les noms de domaine chez Google, c'est uniquement le nom de domaine SEUL (pas de www ou de sous domaine, Google valide le domaine et ses sous-domaines en entier) La 2ème est beaucoup plus grave ! Ne copiez surtout pas le contenu total dans header.tpl ou tout le monde pourra lire votre clé privée mais en plus cela va faire planter la page. Ok, j'ai donc modifié et mis en domaine uniquement : pausebento.fr. Et pour les fichiers (noms des fichiers + codes à entrer), y a un tuto qui fonctionne ? Merci d'avance. Link to comment Share on other sites More sharing options...
Eolia Posted March 3, 2018 Share Posted March 3, 2018 La seule partie qui doit se trouver dans le header.tpl est celle-ci: <!-- Copyright (c)2017-2018 (d)oekia Enter-Solutions GPL --> <!-- Google ReCaptcha on contact form --> <script> var googlecaptchasitekey = 'XXXXXXX-the-public-site-key-XXXXXXXXX'; $(document).ready(function(){ 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){ if ($forms.find('#g-recaptcha-response').val().length == 0) { event.preventDefault(); event.stopPropagation(); return false; } }); } }); </script> {if !isset($language_code)}{assign var="language_code" value=$lang_iso}{/if} <script src='https://www.google.com/recaptcha/api.js?hl={$language_code}'></script> Link to comment Share on other sites More sharing options...
00000000000000 Posted March 3, 2018 Share Posted March 3, 2018 2 minutes ago, Eolia said: La seule partie qui doit se trouver dans le header.tpl est celle-ci: <!-- Copyright (c)2017-2018 (d)oekia Enter-Solutions GPL --> <!-- Google ReCaptcha on contact form --> <script> var googlecaptchasitekey = 'XXXXXXX-the-public-site-key-XXXXXXXXX'; $(document).ready(function(){ 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){ if ($forms.find('#g-recaptcha-response').val().length == 0) { event.preventDefault(); event.stopPropagation(); return false; } }); } }); </script> {if !isset($language_code)}{assign var="language_code" value=$lang_iso}{/if} <script src='https://www.google.com/recaptcha/api.js?hl={$language_code}'></script> Et la deuxième partie, à mettre où ? Merci pour le temps pris. Link to comment Share on other sites More sharing options...
Eolia Posted March 3, 2018 Share Posted March 3, 2018 Dans index.php à la racine de votre site Link to comment Share on other sites More sharing options...
00000000000000 Posted March 3, 2018 Share Posted March 3, 2018 16 minutes ago, Eolia said: Dans index.php à la racine de votre site Merci. Je fais ça et je reviens pour faire le point. Link to comment Share on other sites More sharing options...
00000000000000 Posted March 3, 2018 Share Posted March 3, 2018 Par contre, comme un noob, j'ai perdu le fichier pdf (pas enregistré le fichier pdf et j'ai fermé le navigateur) donc pas le code. J'ai juste la version imprimée ^^' Il est possible de copier-coller ici le code (partie secret key à mettre dans header.tpl) ? Merci d'avance. Pour le code de contact-form.tpl, la modif' étant mineure, pas trop grave de saisir à la main. Link to comment Share on other sites More sharing options...
Eolia Posted March 3, 2018 Share Posted March 3, 2018 Quel pdf ? Et vous mélangez encore tout... La partie secret key n'est surtout pas à mettre dans le header.tpl, autrement tout le monde la verra en regardant votre code source ! Partie à mettre dans le header.tpl avec la clé PUBLIQUE, juste avant la fermeture de la balise </head>: <!-- Copyright (c)2017-2018 (d)oekia Enter-Solutions GPL --><script> var googlecaptchasitekey = 'XXXXXXX-the-public-site-key-XXXXXXXXX'; $(document).ready(function(){ 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){ if ($forms.find('#g-recaptcha-response').val().length == 0) { event.preventDefault(); event.stopPropagation(); return false; } }); } }); </script> {if !isset($language_code)}{assign var="language_code" value=$lang_iso}{/if} <script src='https://www.google.com/recaptcha/api.js?hl={$language_code}'></script> Partie à mettre dans le index.php à la RACINE du site avec la clé SECRETE: 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', /* TODO: tune this https://www.google.com/recaptcha/admin */ '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']){ sleep(25); die('not human'.PHP_EOL/*.print_r($captcha,1)*/); } } Link to comment Share on other sites More sharing options...
00000000000000 Posted March 3, 2018 Share Posted March 3, 2018 1 minute ago, Eolia said: Quel pdf ? Et vous mélangez encore tout... La partie secret key n'est surtout pas à mettre dans le header.tpl, autrement tout le monde la verra en regardant votre code source ! Partie à mettre dans le header.tpl avec la clé PUBLIQUE, juste avant la fermeture de la balise </head>: <!-- Copyright (c)2017-2018 (d)oekia Enter-Solutions GPL --><script> var googlecaptchasitekey = 'XXXXXXX-the-public-site-key-XXXXXXXXX'; $(document).ready(function(){ 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){ if ($forms.find('#g-recaptcha-response').val().length == 0) { event.preventDefault(); event.stopPropagation(); return false; } }); } }); </script> {if !isset($language_code)}{assign var="language_code" value=$lang_iso}{/if} <script src='https://www.google.com/recaptcha/api.js?hl={$language_code}'></script> Partie à mettre dans le index.php à la RACINE du site avec la clé SECRETE: 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', /* TODO: tune this https://www.google.com/recaptcha/admin */ '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']){ sleep(25); die('not human'.PHP_EOL/*.print_r($captcha,1)*/); } } Merci ^^ Trompé de fichier en tapant. Link to comment Share on other sites More sharing options...
doekia Posted March 3, 2018 Share Posted March 3, 2018 Vos clé sont dans votre espace google. Le code est intégralement ici http://area51.enter-solutions.com/snippets/74 Vous pouvez laisser la partie qui va d'ans l'index.php dans le header.tpl, aucun risque (commentaire smarty) Vous testez ensuite votre recaptcha avec le bookmarklet http://area51.enter-solutions.com/snippets/92 prêt à l'emploi ici https://www.bookmarkify.it/8528 Si après contrôle vous continuez à recevoir des mails, vérifiez les dates de ces derniers, ils sont probablement d'avant la mise en place et simplement dans votre "queue" de message. Si il reste des doutes, précisez vos urls que l'on puisse vous aider Link to comment Share on other sites More sharing options...
00000000000000 Posted March 3, 2018 Share Posted March 3, 2018 14 minutes ago, doekia said: Vos clé sont dans votre espace google. Le code est intégralement ici http://area51.enter-solutions.com/snippets/74 Vous pouvez laisser la partie qui va d'ans l'index.php dans le header.tpl, aucun risque (commentaire smarty) Vous testez ensuite votre recaptcha avec le bookmarklet http://area51.enter-solutions.com/snippets/92 prêt à l'emploi ici https://www.bookmarkify.it/8528 Si après contrôle vous continuez à recevoir des mails, vérifiez les dates de ces derniers, ils sont probablement d'avant la mise en place et simplement dans votre "queue" de message. Si il reste des doutes, précisez vos urls que l'on puisse vous aider Rien compris à la partie où il faut utiliser bookmarklet. J'ai fait les modif' mais j'ai pas de captcha (mais pas de page blanche). En code j'ai : Fichier index.php: {* TODO: cut/paste into index.php (first after comments) 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' => 'secret key de Google', /* TODO: tune this https://www.google.com/recaptcha/admin */ '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']){ sleep(25); die('not human'.PHP_EOL/*.print_r($captcha,1)*/); } } *} <!-- /Google ReCaptcha --> Fichier header.tpl [partie modifiée] <!-- Google ReCaptcha on contact form --> <script> var googlecaptchasitekey = 'clé de Google'; $(document).ready(function(){ 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){ if ($forms.find('#g-recaptcha-response').val().length == 0) { event.preventDefault(); event.stopPropagation(); return false; } }); } }); </script> {if !isset($language_code)}{assign var="language_code" value=$lang_iso}{/if} <script src='https://www.google.com/recaptcha/api.js?hl={$language_code}'></script> Link to comment Share on other sites More sharing options...
Eolia Posted March 3, 2018 Share Posted March 3, 2018 ben en php faut éviter les commentaires Smarty hein^^ {* et *} sont à enlever Link to comment Share on other sites More sharing options...
doekia Posted March 3, 2018 Share Posted March 3, 2018 Le bookmarlet c'est un outils de contrôle, comme le cric d'une automobile, inutile pour la conduite mais indispensable pour changer une roue, (sauf à s'appeler hulk) Faites un minimum de recherche si vous voulez tout faire vous-même sinon faites intervenir quelqu'un Donc non on n'essaye pas de faire Paris - marseille avec la voiture sur le cric car ça ne marche pas !!!! Link to comment Share on other sites More sharing options...
00000000000000 Posted March 3, 2018 Share Posted March 3, 2018 11 minutes ago, Eolia said: ben en php faut éviter les commentaires Smarty hein^^ {* et *} sont à enlever Ca marche mieux sans le commentaire ^^' Reste plus que le "cric" à utiliser. Merci pour l'aide et la patience en tout cas. Link to comment Share on other sites More sharing options...
doekia Posted March 3, 2018 Share Posted March 3, 2018 (edited) On va reprendre, et le prochain qui pose encore une question auquel on a répondu je lui explose son shop direct: On prend le fichier themes/<mon-theme>/header.tpl, avant la fin de la balise </head> on copie colle le snippet. On replace le clé publique par la clé fournie par google (ouvrez les yeux, il y a écrit TODO) On vérifie dans son fichier themes/<mon-theme>/contact-form.tpl que la balise <form> contient la classe contact-form-box - Si vous ne comprenez pas à ce point là, documentez vous un minimum ou sautez directment à la dernière phrase de ce message Si vous êtes en 1.5+, éditez votre fichier index.php (à la racine du prestashop), recopiez la section du snippet entre les {* *} (sans ces dernières) en début de ce fichier juste après le commentaire. Remplacez la partie clé privé avec celle du captcha (à nouveau partie marqué TODO). Si vous êtes en 1.4, le fichier à modifier est contact-form.php ou contact.php (selon la version exacte), selon le même principe. Une fois toutes ces modifs appliquées - videz vos cache si vous êtes en version < 1.6 ou mal configuré coté performances. Maintenant: Contrôlez alors la présence du recaptcha sur votre formulaire. Utilisez le bookmarklet pour simuler une attaque, vous devez obtenir une alerte contenant 'not human' après 25s, si l'alerte vous donne du html c'est que le recaptcha est mal installé (peut-être forgé) Si l'une des ces 2 dernières étapes échouent, contactez moi pour procéder à l'installation à votre place. Opération payante ! Edited March 3, 2018 by doekia (see edit history) 2 Link to comment Share on other sites More sharing options...
Jpc_des_dombes Posted March 3, 2018 Share Posted March 3, 2018 @doekia ou @Eolia Le captcha doit-il s'afficher également dans la page historique-commande lorsqu'un client connecté veut envoyer un message ? Sur mon site pas de captcha apparent et lorsque j'envoie un message j'ai une alerte "not-human" Je précise que je viens de déplacer le snippet. de contact-form.tpl à header.tpl pour suivre vos conseils. Ma page "contactez-nous" fonctionne très bien J'ai surement du rater une étape.... Mon thème est basé sur le thème par défaut et je suis en 1.6.1.18 Link to comment Share on other sites More sharing options...
Eolia Posted March 3, 2018 Share Posted March 3, 2018 ajoutez la classe contact-form-box au formulaire de order-detail.tpl (vers la fin du fichier) Link to comment Share on other sites More sharing options...
doekia Posted March 3, 2018 Share Posted March 3, 2018 42 minutes ago, Jpc_des_dombes said: @doekia ou @Eolia Le captcha doit-il s'afficher également dans la page historique-commande lorsqu'un client connecté veut envoyer un message ? Sur mon site pas de captcha apparent et lorsque j'envoie un message j'ai une alerte "not-human" Je précise que je viens de déplacer le snippet. de contact-form.tpl à header.tpl pour suivre vos conseils. Ma page "contactez-nous" fonctionne très bien J'ai surement du rater une étape.... Mon thème est basé sur le thème par défaut et je suis en 1.6.1.18 Le snippet support la page order-detail, mais à condition d'avoir été mis dans le header.tpl, sinon tu dois recopier le même code que tu as mis de contact-form.tpl dans order-detail.tpl Link to comment Share on other sites More sharing options...
Jpc_des_dombes Posted March 3, 2018 Share Posted March 3, 2018 ça ne fonctionne toujours pas.... Je joins mon "order-detail.tpl" J'y ai ajouté le snippet qui est également dans le Header.tpl. order-detail.tpl Link to comment Share on other sites More sharing options...
Eolia Posted March 3, 2018 Share Posted March 3, 2018 s'il est déjà dans le header.tpl, inutile de le remettre en haut de ce fichier. Quand vous dites "Ca ne fonctionne pas", c'est à dire ? le Captcha ne s'affiche pas ? Link to comment Share on other sites More sharing options...
Jpc_des_dombes Posted March 3, 2018 Share Posted March 3, 2018 Oui. Pas de captcha et un petit message not-human lors de l'envoi. Link to comment Share on other sites More sharing options...
unanim Posted March 3, 2018 Share Posted March 3, 2018 heu... comme je continue à suivre... oserai-je préciser que dans ma 1.5 j'ai dû ajouter à order-detail.tpl non seulement la classe "contact-form-box" mais aussi le script déjà mis dans le header.tpl. Sans cela, le captcha ne s'affichait pas pour l'envoi mail depuis le compte d'un client et les mails ne partaient pas. C'est contradictoire avec le fait que si header.tpl contient le script, il n'y a pas besoin de le mettre sur contact-form.tpl et order-detail.tpl. Et bizarre car je n'ai pas dû le mettre sur contact-form.tpl pour que cela fonctionne !!! Link to comment Share on other sites More sharing options...
Eolia Posted March 3, 2018 Share Posted March 3, 2018 caches vidés et recompilation des templates si modifiés ? Vous êtes les seuls à présenter ce genre de problème, c'est quand même curieux... Ouvrez votre console (F12) et regardez si vous n'avez pas des erreurs javascript qui font crasher le script. Link to comment Share on other sites More sharing options...
KevinNash Posted March 3, 2018 Share Posted March 3, 2018 Bonsoir à tout et merci beaucoup pour ce topic et à Eolia pour son aide. J'ai bien mis en place les 2 codes de doekia et cela fonctionne parfaitement pour la partie captcha humains + bots. J'ai juste un petit souci depuis cette mise en place l'error_log m'indique une erreur à chaque accès à la page e contact : Undefined index: language_code in /home/xxxx/xxx.contact-form.tpl.php on line 64 Comment puis-je me débarrasser de cette erreur ? Link to comment Share on other sites More sharing options...
Eolia Posted March 3, 2018 Share Posted March 3, 2018 Vous avez bien ceci en bas du script de cette page ? {if !isset($language_code)}{assign var="language_code" value=$lang_iso}{/if} <script src='https://www.google.com/recaptcha/api.js?hl={$language_code}'></script> Link to comment Share on other sites More sharing options...
KevinNash Posted March 3, 2018 Share Posted March 3, 2018 Hello Eolia, Mmm j'ai l'impression qu'il m'en manque un bout, j'ai pris le code sur un de vos posts ici : https://www.prestashop.com/forums/topic/657557-hacké-faille-sécurité-formulaire-mail/#comment-2670376 Je suppose que je dois rajouter la ligne suivante ? : {if !isset($language_code)}{assign var="language_code" value=$lang_iso}{/if} Link to comment Share on other sites More sharing options...
Eolia Posted March 3, 2018 Share Posted March 3, 2018 (edited) oui car si vous mettez ce code dans le order-detail.tpl ou contact-form.tpl (au lieu du header) la variable $language_code n'est pas définie sur cette page. @doekia a amélioré son script au fur et à mesure Edited March 3, 2018 by Eolia (see edit history) Link to comment Share on other sites More sharing options...
Jpc_des_dombes Posted March 3, 2018 Share Posted March 3, 2018 il y a une heure, Eolia a dit : caches vidés et recompilation des templates si modifiés ? Vous êtes les seuls à présenter ce genre de problème, c'est quand même curieux... Ouvrez votre console (F12) et regardez si vous n'avez pas des erreurs javascript qui font crasher le script. J'en suis toujours au même point.... Pas d'erreur sur la console. J'ai mis le snippet dans contact-form.tpl et dans order-detail.tpl et je l'ai enlevé dans header.tpl La page contactez-nous fonctionne sans problème. La page detail de commande ne m'affiche pas le captcha et repond not-human lors de l'envoi... Pourtant j'ai bien une tête, deux bras et deux jambes Je crois que je vais revenir au module de Thorfy car pour mon site les mails sont importants Link to comment Share on other sites More sharing options...
KevinNash Posted March 3, 2018 Share Posted March 3, 2018 (edited) Merci beaucoup Eolia en effet plus d'erreur avec cette ligne ajoutée J'en ai profité pour comparer les 2 codes de votre post https://www.prestashop.com/forums/topic/657557-hacké-faille-sécurité-formulaire-mail/#comment-2670376 avec celui de Doekia http://area51.enter-solutions.com/snippets/74 Il y a quelques petites différences dans la partie tpl : var $forms = $('form.contact-form-box'); devient var $forms = $('form.contact-form-box,form#sendOrderMessage'); et var $submit = $forms.find('#submitMessage'); devient var $submit = $forms.find('#submitMessage,.button[name=submitMessage]'); Il y a aussi beaucoup de différences pour la partie index.php. J'ai utilisé les 2 codes de votre post, est-ce correct ou dois-je changer par ceux de Doekia plutôt ? Edited March 3, 2018 by KevinNash (see edit history) Link to comment Share on other sites More sharing options...
doekia Posted March 3, 2018 Share Posted March 3, 2018 j'ai adapté le code du snippet au fur et a mesure des remontées. J'ai en effet constacté que le language_code n'existe pas en version < 1.6 j'ai donc ajouté un polyfill pour utiliser $lang_iso Donc oui ceux qui ont utilisé le script de la 1ere heure doivent le réviser, désolé. Le selecteur .button vise certaines version du thème de base 1.6, le #submitMessage vite tant le forumaire de contact que celui du order-detail Et le selecteur form.contact-form-box,form#sendOrderMessage cible lui le form du contact-form.tpl et le form de l'order-detail Le dernier changement appliqué concerne les hébergeur ne supportant pas le url_open en utilisant curl en lieu et place Link to comment Share on other sites More sharing options...
doekia Posted March 3, 2018 Share Posted March 3, 2018 (edited) @Jpc_des_dombes Un dernier point, si vous voulez de l'aide, commencez par donner l'url de votre shop. Sans cela c'est comme nous demander si un cierge va résoudre votre problème Edited March 3, 2018 by doekia (see edit history) Link to comment Share on other sites More sharing options...
Jpc_des_dombes Posted March 3, 2018 Share Posted March 3, 2018 C'est sympa de votre part. J'ai monté une copie de notre site sur mon serveur NAS perso .En revanche, je n'ai que très peu de débit montant donc le site est très lent. http://ganesh01.synology.me/copiesarmentelles Sur le site en ligne, j'ai temporairement désactive le captcha et remis en service le module. http://www.sarmentelles.com Je vais continuer a gratter car je suis tenace et comme je l'ai déjà dit j'apprends. Link to comment Share on other sites More sharing options...
doekia Posted March 4, 2018 Share Posted March 4, 2018 (edited) @Jpc_des_dombes Comment dire, je peux dépanner, auditer le code conformément au snippet, mais si vous utilisez une autre solution je ne peux pas identifier ce qui ne va pas. Sur le site copie, le recaptcha est là et son controle via le bookmarklet est parfait. La connexion est trop lente pour que je fasse un panier et confirme le fonctionnement depuis la page order-detail mais je pense que c'est ok Edited March 4, 2018 by doekia (see edit history) Link to comment Share on other sites More sharing options...
Eolia Posted March 4, 2018 Share Posted March 4, 2018 Il y a 10 heures, KevinNash a dit : Merci beaucoup Eolia en effet plus d'erreur avec cette ligne ajoutée J'en ai profité pour comparer les 2 codes de votre post https://www.prestashop.com/forums/topic/657557-hacké-faille-sécurité-formulaire-mail/#comment-2670376 avec celui de Doekia http://area51.enter-solutions.com/snippets/74 Il y a quelques petites différences dans la partie tpl : var $forms = $('form.contact-form-box'); devient var $forms = $('form.contact-form-box,form#sendOrderMessage'); et var $submit = $forms.find('#submitMessage'); devient var $submit = $forms.find('#submitMessage,.button[name=submitMessage]'); Il y a aussi beaucoup de différences pour la partie index.php. J'ai utilisé les 2 codes de votre post, est-ce correct ou dois-je changer par ceux de Doekia plutôt ? Si le code fonctionne chez vous, ne changez rien. Vous comprendrez que réaliser un code universel au vu du nombre de versions Prestashop possibles, des différents thèmes installés et plus ou moins conforme ou des hébergements ne se fait pas en une fois. Pour résumer la problématique et comprendre le fonctionnement: - Le code javascript doit réagir si un formulaire de message existe sur la page. Celui-ci est donc détecté par sa classe ou son ID. - Le code js ajoute alors le captcha au dessus du bouton submit - Le captcha Google entre alors en action lors du clic sur celui-ci et fournit une réponse provisoire (la durée de validité de la réponse de vérification) - Le code php, lui, réagit si un élément de type submitMessage est posté. Il contrôle alors la réponse envoyée par Google. Celle-ci doit être de type "success" Vous comprenez donc qu'un robot qui ne passe pas par la page html mais envoie directement ses données en POST au contactController sera dans l'impossibilité de fournir une réponse valide au captcha et sera donc bloqué au niveau de l'index.php (le 1er fichier appelé avant tous les autres dans le process php) La seule difficulté pour nous a été de faire que l'utilisateur lambda puisse lui valider le captcha quelque soit le thème ou la version utilisée. Etant donné que nombreux nous ont juste dit: "Ca marche pas !" sans préciser leur version, sans connaitre le code de leur thème ou les restrictions de leur hébergeur et sans nous donner d'url pour effectuer un contrôle, il n'était pas vraiment évident de fournir une solution "standard". Ce qui est assez fatigant à force, c'est d'essayer de fournir des solutions alors que personne ne lit nos explications correctement. Donc effectivement, je pense comme @doekia et pour ceux qui ont la flemme de lire les nombreux posts et pour qui soit-disant "Ca ne marche pas" et bien qu'ils prennent un ticket d'intervention payant et on leur installera. Chacun a (normalement) un cerveau et des yeux pour lire. C'est vrai que cela demande un minimum d'effort de réflexion mais je crois qu'on a autre chose à faire que de supplanter la flemme intellectuelle de ceux qui attendent que ça tombe tout cuit dans leur bec. Pour ma part, je pense que tout a été dit et longuement expliqué sur ces nombreux posts et je n'interviendrai donc plus sur ce sujet. 2 2 Link to comment Share on other sites More sharing options...
KevinNash Posted March 4, 2018 Share Posted March 4, 2018 Merci Eolia pour ces explications détaillées pour le fonctionnement cela m'a bien éclairé. Je vous rejoins également sur le fait que vous n'êtes pas devins pour deviner les soucis des cas particuliers sans version ou url de site de fourni. En parland de " ça marche pas " et de chercher un peu, voici ma fin de soirée de hier : Figurez-vous qu'avec la 1ère version du code https://www.prestashop.com/forums/topic/657557-hacké-faille-sécurité-formulaire-mail/#comment-2670376 je me suis retrouvé avec le même souci que jpc et unanim sous PS 1.5.4.1 : pas de captcha dans l'order-detail mais... Avec la seconde version cela fonctionne bien ( en fait les 2 modifications du tpl font que cela fonctionne dans l'order-detail : var $forms = $('form.contact-form-box'); DEVIENT var $forms = $('form.contact-form-box,form#sendOrderMessage'); ET var $submit = $forms.find('#submitMessage'); DEVIENT var $submit = $forms.find('#submitMessage,.button[name=submitMessage]'); Pour résumer et surtout pour ceux sous PS1.5, vérifiez que vous utilisez bien la dernière version des deux codes présente sur cette page http://area51.enter-solutions.com/snippets/74 Link to comment Share on other sites More sharing options...
Jpc_des_dombes Posted March 4, 2018 Share Posted March 4, 2018 @doekia et @Eolia Merci beaucoup pour votre aide. Je sens des passionnés qui sont encore devant leurs écrans même le dimanche. J'ai de bonnes pistes et je vais continuer à investiguer. Je reviendrai sur ce forum quand j'aurais la solution pour partager mon erreur. Je ne suis pas dans l'urgence car le module fait le boulot, pour l'instant, sur mon site en ligne. Sincèrement Link to comment Share on other sites More sharing options...
Eolia Posted March 4, 2018 Share Posted March 4, 2018 https://shop.devcustom.net/fr/content/9-mise-en-place-captcha?content_only=1 Link to comment Share on other sites More sharing options...
KevinNash Posted March 4, 2018 Share Posted March 4, 2018 (edited) On 03/03/2018 at 12:11 PM, doekia said: A tous-ceux qui veulent vérifier le recaptcha Voici un bookmarklet: https://www.bookmarkify.it/8528 soit vous cliquez-droit sur ps-recaptcha-checker pour ajouter à vos marque-pages, soit vous faites le glisser dans votre barre. Rendez vous sur votre site, page de contact, lancez le marque page, si cela vous affiche autre chose que "not human", alors le recaptcha ne fonctionne pas. Pas d'action chez moi quand je clique ce bookmarklet mis en marque-page et sur ma page contact, auriez-vous un site où je peux le tester doekia ? PS : Bravo et chapeau bas Eolia pour le tuto sur votre site, c'est splendide Edited March 4, 2018 by KevinNash (see edit history) Link to comment Share on other sites More sharing options...
doekia Posted March 4, 2018 Share Posted March 4, 2018 Tout a fait, https://store.enter-solutions.com/fr/contactez-nous où il y a un peu plus de debug que dans la version standard, mais l'alert affiche bien not human Link to comment Share on other sites More sharing options...
KevinNash Posted March 4, 2018 Share Posted March 4, 2018 Merci doekia0 Damn je n'y comprends rien, j'ai bien mis ps-recaptcha-checker en favori mais rien ne se passe quand je clique dessus, même sur votre page https://store.enter-solutions.com/fr/contactez-nous. J'ai pourtant essayé FF, Chrome et même IE ( nu sans aucun plugin ) dans le doute. J'aurais bien aimé faire ce test, une idée de pourquoi cela ne fonctionne pas pour moi ? Link to comment Share on other sites More sharing options...
Eolia Posted March 4, 2018 Share Posted March 4, 2018 enlevez les %20 à l'intérieur et collez-le dans la console (F12) puis Entrée Link to comment Share on other sites More sharing options...
KevinNash Posted March 5, 2018 Share Posted March 5, 2018 Ce code ci Eolia ? javascript:(function(){window.s0=document.createElement('script');window.s0.setAttribute('type','text/javascript');window.s0.setAttribute('src','https://www.bookmarkify.it/bookmarklets/8528/raw');document.getElementsByTagName('body')[0].appendChild(window.s0);})(); Link to comment Share on other sites More sharing options...
Eolia Posted March 5, 2018 Share Posted March 5, 2018 Non, celui-ci: javascript:(function(){var $control=window.location,id_contact=1,x=document.getElementById("id_contact"),i=0;for(i=0;i<x.length;i++)id_contact=x.options.value;var xhr=new XMLHttpRequest,params="submitMessage=1&message=Recaptcha does not work!&[email protected]&id_contact="+id_contact+"&g-recaptcha-response=faked";xhr.open("POST",$control,!0),xhr.onreadystatechange=function(){4==this.readyState&&window.alert(xhr.response)},xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded"),xhr.send(params);})(); Link to comment Share on other sites More sharing options...
doekia Posted March 5, 2018 Share Posted March 5, 2018 (edited) @KevinNash oui et non, soit: - tu vas sur https://www.bookmarkify.it/8528 ,tu cliques droit sur le lien "ps-recaptcha-checker" puis "Marque page sur ce lien", tu drag/drop le lien "ps-recaptcha-checker" dans ta barre de favori - soit tu vas dans tes marques pages, créer nouveau, nomme le à ta guide et dans l'url, tu entres la partie en js de la box javascript-it ou directement le code raw présent ici: http://area51.enter-solutions.com/snippets/92 Il ne reste plus qu'a se rendre sur la page contact et de choisir le marque-page. Un marque page n'a aucune interférence avec les plugins, et un bookmarlet c'est comme si tu entrais le code js dans la console de ton debugguer Edited March 5, 2018 by doekia (see edit history) Link to comment Share on other sites More sharing options...
doekia Posted March 5, 2018 Share Posted March 5, 2018 Comme le recaptcha-ckecker ne fonctionne pas bien via bookmarklet.it, voici une vidéo sur comment controller votre installation https://www.youtube.com/watch?v=XR8PppmHjRE 1 Link to comment Share on other sites More sharing options...
unanim Posted March 5, 2018 Share Posted March 5, 2018 1 hour ago, doekia said: Comme le recaptcha-ckecker ne fonctionne pas bien via bookmarklet.it, voici une vidéo sur comment controller votre installation https://www.youtube.com/watch?v=XR8PppmHjRE Ben voilà! J'avais renoncé à ce test faute de comprendre -et du fait que je n'utilise pas Firefox- mais là avec une vidéo, en 2mn, j'ai fait le test via Chrome. Merci les gars! Link to comment Share on other sites More sharing options...
KevinNash Posted March 5, 2018 Share Posted March 5, 2018 Superbe ! Le test fonctionne que ce soit par la console ou par le bookmark comme expliqué en vidéo En revanche je n'ai pas la même réponse sur mon site que sur le votre doekia. Sur le mien j'ai juste : not human Sur le votre j'ai : not human Array ( [success] => [error-codes] => Array ( [0] => invalid-input-response ) ) Est-ce normal ? J'utilise bien la dernière version du snipper pour ma part. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now