Jump to content

Recommended Posts

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 :

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

Sincèrement

 

Link to comment
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, 
Link to comment
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

Link to comment
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 ?

Link to comment
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" )

Link to comment
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

Link to comment
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

Link to comment
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.

Link to comment
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 ;-)

Link to comment
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

 

Link to comment
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.

Link to comment
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.

Link to comment
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.

 

Link to comment
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

Link to comment
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 ;)

Link to comment
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.

Link to comment
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 !

Link to comment
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 ... 

Link to comment
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... 

Link to comment
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.

Link to comment
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
Link to comment
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"?

Link to comment
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 [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">&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}
 

Link to comment
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">

Link to comment
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.

Link to comment
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

Link to comment
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 (see edit history)
Link to comment
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

Link to comment
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.

Link to comment
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

Link to comment
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... 

Link to comment
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 ;)

Link to comment
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.

Link to comment
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.

Link to comment
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>

Link to comment
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.

Link to comment
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.

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

 

Link to comment
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.

Link to comment
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

Link to comment
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>

Link to comment
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 !!!!

Link to comment
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 (see edit history)
  • Haha 2
Link to comment
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

Link to comment
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

 

 

Link to comment
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 !!!

Link to comment
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.

Link to comment
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 ?

Link to comment
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>

 

 

Link to comment
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

Link to comment
Share on other sites

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 by KevinNash (see edit history)
Link to comment
Share on other sites

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

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

@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 by doekia (see edit history)
Link to comment
Share on other sites

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.

  • Like 2
  • Thanks 2
Link to comment
Share on other sites

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

@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

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 by KevinNash (see edit history)
Link to comment
Share on other sites

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

  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

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

@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 by doekia (see edit history)
Link to comment
Share on other sites

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

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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...