Jump to content

Recommended Posts

Jpd_des_dombes  : j'avoue !  mais ayant parcouru toutes les pages de la discution et n'ayant pas capté le lien en question j'espérais une âme charitable pour me la rappeler 

 

merci

Share this post


Link to post
Share on other sites

sauf que mail.ru c'est l'équivalent de hotmail. D'ailleurs mail.ru est tellement au courant que si vous tentez de répondre à l'un de ces mails, mail.ru vous répond immédiatement spam. Il y a 15 jours les bots utilisaient qq.com, et demain un autre domaine en .men, .org, .biz, .info, ...

postfix/smtp[18970]: D9B6DB40860: to=<sy7rerzdo@mail.ru>, relay=mxs.mail.ru[94.100.180.104]:25, delay=9.1, delays=0.05/0.01/0.58/8.5, dsn=5.0.0, status=bounced (host mxs.mail.ru[94.100.180.104] said: 550 spam message rejected. Please visit http://help.mail.ru/notspam-support/id?c=q0Oofp1-twR_28YEo4Ols2uzFEV8_W69DKLqJ1_v5c0NAAAADsEBACKnoAE~ or  report details to abuse@corp.mail.ru. Error code: 7EA843AB04B77E9D04C6DB7FB3A583A34514B36BBD6EFD7C27EAA20CCDE5EF5F. ID: 0000000D0001C10E01A0A722. (in reply to end of DATA command))

 

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
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/
  • Postmaster@163.com
  • http://www.sbfa111.com/

Les Russes n'ont encore pas frappés à ma porte.... Je croise les doigts

Sincèrement

 

Share this post


Link to post
Share on other sites

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 ?

Share this post


Link to post
Share on other sites
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, 

Share this post


Link to post
Share on other sites
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 
 

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites

utilsez le captcha Google comme on l'a indiqué plus haut et les attaques cesseront ;) 

Share this post


Link to post
Share on other sites

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 ?

Share this post


Link to post
Share on other sites

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" )

Share this post


Link to post
Share on other sites

et aussi order-detail.php en 1.4 et, selon la version exacte c'est contact-form.php aussi

Share this post


Link to post
Share on other sites

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) :rolleyes:

Bonne fin de journée

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites
il y a une heure, Aletren a dit :

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



Heu Trolldy c'est dans 20 minutes tu as de l'avance.

Le module et le ReCaptcha fonctionne, l'avantage du ReCaptcha c'est qu'il n'y a pas besoin de mettre à jour des règles ...

Sinon vous avez une boutique en ligne ? Je ne pense pas car une personne sensée ne bloquerait jamais le formulaire de contact de sa boutique.

 

Share this post


Link to post
Share on other sites

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 :P)

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 ;-)

Share this post


Link to post
Share on other sites

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 :D

 

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites
il y a 13 minutes, spip93 a dit :

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 ?



Oui ça fait que ça. 

Si en 18 mois vous avez eu que 3-4 messages ça veut dire que ne met pas avant ce formulaire ou alors que tu n'as pas beaucoup de visite.

Dans tout les cas faire une 404 sur la page contact c'est juste pas normal.

Edited by okom3pom

Share this post


Link to post
Share on other sites
24 minutes ago, Jpc_des_dombes said:

Si je peux ajouter pour "les newbie comme nous", vider le cache du site :D

 

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.

Share this post


Link to post
Share on other sites

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.

 

Share this post


Link to post
Share on other sites

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.

 

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites

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 ;)

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites

@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 by doekia

Share this post


Link to post
Share on other sites

@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

Share this post


Link to post
Share on other sites

@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 !

Share this post


Link to post
Share on other sites
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 ... 

Share this post


Link to post
Share on other sites

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... 

Share this post


Link to post
Share on other sites

Non vous devez supprimer ce module, il est inutile et vous risquez d'avoir des soucis d'affichage sur votre site.

Share this post


Link to post
Share on other sites

@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.

Share this post


Link to post
Share on other sites

Mais il ne rassure rien du tout !!!

Les scripts fournis affichent le captcha, il est inutile de conserver ce module.

Share this post


Link to post
Share on other sites

ah, ben fallait le dire :D 
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 by unanim

Share this post


Link to post
Share on other sites
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.

  • Like 1

Share this post


Link to post
Share on other sites

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"?

Share this post


Link to post
Share on other sites

copiez ici le contenu de votre contact-form.tpl de votre thème svp

Share this post


Link to post
Share on other sites
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 license@prestashop.com 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 <contact@prestashop.com>
*  @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">&nbsp;</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}
 

Share this post


Link to post
Share on other sites

<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">

Share this post


Link to post
Share on other sites

Merci @doekiaFait mais pas de changement, le ReCaptcha n'apparaît toujours pas dans le formulaire...

Share this post


Link to post
Share on other sites

Option: "Recompiler les templates si mis à jour" cochée dans Paramètres avancés -> Performances ?

Share this post


Link to post
Share on other sites

@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.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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 by doekia

Share this post


Link to post
Share on other sites

@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

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites

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:
image.png.eaaa334c0b196399fee977b972c1829b.png
  • Like 1

Share this post


Link to post
Share on other sites

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... 

Share this post


Link to post
Share on other sites

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

 

Share this post


Link to post
Share on other sites

supprimé car erroné

 

Edited by unanim

Share this post


Link to post
Share on other sites
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 ;)

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites

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>

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites

Dans index.php à la racine de votre site

Share this post


Link to post
Share on other sites
16 minutes ago, Eolia said:

Dans index.php à la racine de votre site

Merci. Je fais ça et je reviens pour faire le point.

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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)*/); } }

 

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
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>

Share this post


Link to post
Share on other sites

ben en php faut éviter les commentaires Smarty hein^^

{*   et *}  sont à enlever

 

Share this post


Link to post
Share on other sites

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 !!!!

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites

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 by doekia
  • Haha 2

Share this post


Link to post
Share on other sites

@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

Share this post


Link to post
Share on other sites

ajoutez la classe contact-form-box au formulaire de order-detail.tpl  (vers la fin du fichier)

Share this post


Link to post
Share on other sites
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

 

 

Share this post


Link to post
Share on other sites

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 ?

Share this post


Link to post
Share on other sites

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 !!!

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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 ?

Share this post


Link to post
Share on other sites

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>

 

 

Share this post


Link to post
Share on other sites

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}

Share this post


Link to post
Share on other sites

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 by Eolia

Share this post


Link to post
Share on other sites
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:rolleyes:

Je crois que je vais revenir au module de Thorfy car pour mon site les mails sont importants

Share this post