FB Antispam - CAPTCHA et reCAPTCHA pour forums

Un simple captcha pour protéger les forums des spams qui envahissent et submergent les bons messages. Plusieurs types de contrôles peuvent être configurés, dont l’intégration de reCAPTCHA de Google.

Description

Le plugin FBAntispam ajoute un champs supplémentaire au formulaire pour la rédaction des commentaires de forum. L’administrateur peut choisir entre la présentation d’un code aléatoire de 4 chiffres à recopier, le résultat d’une addition, le résultat d’une multiplication ou l’intégration du reCAPTCHA de Google.
Pour le reCAPTCHA voir ici la documentation de Google : https://www.google.com/recaptcha.

Si le code ne correspond pas, ou si le reCAPTCHA n’est pas validé, la saisie est proposée de nouveau avec un message avertissant de l’erreur dans le code.


Installation

Le plugin s’installe classiquement : Installer un plugin-spip

Vous n’avez aucune modification à faire sur vos squelettes.

Configuration

Un lien direct vers le panneau de configuration est disponible dans le menu “Configuration”, et un choix par défaut est fait si la configuration n’est pas enregistrée.


Discussion

19 discussions

  • 2

    Cher Fabio,

    Merci pour cet excellent plugin antispam avec les options supplémentaires «addition» et «multiplication». J’ai installé la version 1.2.3 sous SPIP3.1.1, cela fonctionne parfaitement.

    Je lis d’une part dans le titre “FB Antispam” et d’autre part que tu es “Fabio Bertagnin FBServices”, FB signifie donc FaceBook. Peux-tu nous en dire plus concernant les liens et développements éventuels de ce plugin antispam avec FaceBook ?

    D’autre part, Google a sorti son nouveau captcha :

    Bien cordialement

    FDG

    • Bonjour François Daniel
      Merci pour ces mots encourageants.
      En effet FB n’est pas là pour signifier Facebook, mais tout simplement ce sont mes initiales !
      Je suis en train de tester le captcha de Google, mais je n’ai pas encore prévu l’intégration dans mes sites Spip. C’est très efficace mais quelques retours d’utilisateurs ne font pas l’unanimité.
      Bien cordialement
      Fabio

    • Cher Fabio,
      Désolé pour ma mésinterprétation de tes initiales, manifestement j’ai fonctionné comme quelqu’un qui cherche ses lunettes alors qu’il les a sur le nez !

      Si tu te lances sur le captcha de Google pour SPIP, je suivrais cela avec grand intérêt.

      Bonne continuation et encore Bravo pour ta précieuse contribution à la communauté SPIP.

      Bien cordialement, François Daniel

    Reply to this message

  • Bonjour

    Apparemment, pas de fichier de langue pour ce plugin ? Le texte “Controle anti-spam : saisissez les caractères suivants” est toujours en Français.

    Suggestion : ajoutez un formulaire de configuration pour modifier ce texte.

    Cordialement

    Reply to this message

  • 1

    Bonsoir, j’ai installé le captcha sur mon blog WP mais je n’arrive plus à y avoir accès en tant qu’administrateur, voilà ce qu’on me met lorsque je tente de me connecter

    Error: You have entered an incorrect CAPTCHA value. Click the BACK button on your browser, and try again.

    • Pourriez-vous expliquer un peu plus ? qu’est-ce que vous entendez pour “blog WP” ?

    Reply to this message

  • 4

    Bonsoir et merci pour la réponse
    mon fichier forum.html dans le dossier squelette-dist semble etre bon.
    Auriez vous une idée d’ou peut venir ce retour chariot?
    le code de mon fichier forum.html est

    <div class="formulaire_spip formulaire_forum ajax" id="formulaire_forum">
    [(#REM) pour IE qui sinon se perd dans l'ajax !, ne pas retirer]<br class='bugajaxie' />
    
    [<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
    [<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
    
    [(#ENV{login_forum_abo})
    <INCLURE{fond=formulaires/inc-login_forum_abo}{env} ></INCLURE>
    ]
    
    [(#ENV{editable})
    
    
    [(#REM)
    	Bloc de previsualisation du forum envoye
    
    	Si on valide la previsu, on n'envoie pas en ajax car, si le post reussit
    	il faudra certainement redessiner toute la page pour afficher le nouveau
    	forum
    
    ][<form action="#ENV{action}#formulaire_forum" method="post" class="noajax">
    	<div>
    	[(#ACTION_FORMULAIRE{#ENV{action}})]
    	<input type='hidden' name='titre' value="#ENV{titre}" />
    	<input type='hidden' name='texte' value="#ENV{texte}" />
    	<input type='hidden' name='url_site' value="#ENV{url_site}" />
    	<input type='hidden' name='nom_site' value="#ENV{nom_site}" />
    	[<input type="hidden" name="id_forum" value="(#ENV*{id_forum})" />]
    	[(#INCLURE{fond=formulaires/inc-forum_ajouter_mot}{ajouter_mot})]
    	(#ENV*{erreurs}|table_valeur{previsu})
    	</div>
    </form>]
    
    
    <form action="#ENV{action}#formulaire_forum" method="post" enctype='multipart/form-data'><div>
    [(#ACTION_FORMULAIRE{#ENV{action}})]
    [<input type="hidden" name="id_forum" value="(#ENV*{id_forum})" />]
    [<fieldset class="moderation_info">
    	<p class="explicationk">(#ENV{modere})<:forum_info_modere:></p>
    </fieldset>]
    	<INCLURE{fond=formulaires/inc-login_forum}{env} ></INCLURE>
    
    [(#ENV**{afficher_texte}|choixsiegal{'non', ' ',''})
    [<input type="hidden" name="titre" value="(#ENV{titre})" />]
    <p class="spip_bouton"><input type="submit" class="submit" value="<:forum_valider:>" /></p>]
    
    [(#ENV**{afficher_texte}|choixsiegal{'non', '',' '})
    
    	<fieldset>
    	<legend><:form_pet_message_commentaire:></legend>[
    	(#CONFIG{forums_titre}|!={non}|non)
    		<input type="hidden" name="titre" id="titre"[ value="(#ENV{titre})"] />
    	]<ul>
    	[<li class='saisie_mots_forum'>(#INCLURE{fond=formulaires/inc-forum_bloc_choix_mots}{table=#ENV*{table}}{ajouter_mot})</li>]
    
    [(#CONFIG{forums_titre}|!={non}|oui)
    	<li class='saisie_titre[ (#ENV**{erreurs}|table_valeur{titre}|oui)erreur]'>
    		<label for="titre"><:forum_titre:></label>
    		[<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{titre})</span>]
    		<input type="text" class="text" name="titre" id="titre"[ value="(#ENV{titre})"] size="50" />
    	</li>
    ]
    
    [(#CONFIG{forums_texte}|!={non}|?{
    	<li class='saisie_texte[ (#ENV**{erreurs}|table_valeur{texte}|oui)erreur]'>
    		[<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{texte})</span>]
    		<textarea name="texte" id="texte" rows="12" cols="50">[(#ENV{texte})]</textarea>
    	</li>
    })]
    	</ul></fieldset>
    
    [(#CONFIG{forums_urlref}|!={non}|?{
    	<fieldset>
    	<legend><:forum_lien_hyper:></legend>
    	<p class='explication'><:forum_page_url:></p>
    	<ul>
    	<li class='saisie_nom_site[ (#ENV**{erreurs}|table_valeur{nom_site}|oui)erreur]'><label for="nom_site"><:forum_titre:></label>
    	[<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{nom_site})</span>]
    	<input type="text" class="text" name="nom_site" id="nom_site" size="40" value="[(#ENV{nom_site})]" /></li>
    	<li class='saisie_url_site[ (#ENV**{erreurs}|table_valeur{url_site}|oui)erreur]'><label for="url_site"><:forum_url:></label>
    	[<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{url_site})</span>]
    	<input type="text" class="text" name="url_site" id="url_site" style="text-align: left;" dir="ltr" size="40" value="[(#ENV{url_site})]" /></li>
    	</ul></fieldset>
    })]
    
    [
    	<fieldset>
    	<legend><:bouton_ajouter_document:></legend>
    	<ul>
    	<li class='saisie_document_forum[ (#ENV**{erreurs}|table_valeur{document_forum}|oui)erreur]'>
    	[<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{document_forum})</span>]
    	<input type="hidden" name="cle_ajouter_document" value="(#ENV{cle_ajouter_document})" />
    	[<div id="ajouter_document_up">(#ENV{ajouter_document})
    	<label for="supprimer_document_ajoute"><input type='checkbox' name='supprimer_document_ajoute' id='supprimer_document_ajoute' />
    	<:lien_supprimer:></label>
    	</div>]
    	<div>
    	[<label for="ajouter_document">(#ENV{formats_documents_forum}|join{', '})</label>]
    	<input class='file' type="file" name="ajouter_document" id="ajouter_document"[
    	accept="(#ENV{formats_documents_forum}|join{','})"] />
    	</div>
    
    	<script type='text/javascript'>
    	jQuery('#ajouter_document_up')
    	.next()
    		.hide()
    	.prev()
    	.find(':checkbox')
    	.bind('change', function(){
    		jQuery('#ajouter_document_up').hide().next().show();
    	})
    	;
    	</script>
    	</li>
    	</ul></fieldset>
    ]
    
    
    	[(#REM) Piege a robots spammeurs ]
    	<p style="display: none;">
    		<label for="nobot_forum"><:antispam_champ_vide:></label>
    		<input type="text" class="text" name="nobot" id="nobot_forum" value="#ENV{nobot}" size="10" />
    	</p>
    	<p class="boutons"><input type="submit" class="submit" value="<:forum_voir_avant:>" /></p>
    ]
    </div>
    </form>
    
    [(#REM)
    	Sauver les donnees du formulaire dans un cookie, si on quitte la page,
    	et les remettre quand on revient (dans les limites de 4ko etc)
    ]
    <script type="text/javascript">/*<!#EVAL{chr(91)}CDATA#EVAL{chr(91)}*/
    if (window.jQuery)(function($){
    	var a = $.cookie('spip_contenu_formulaire_#ENV{_sign}');
    	var saveauto = true;
    	if (a) {
    		$('#formulaire_forum textarea#EVAL{chr(91)}name=texte#EVAL{chr(93)}')
    		.val(a);
    		$.cookie('spip_contenu_formulaire_#ENV{_sign}', null);
    	}
    	/* virer le cookie a la validation finale du message */
    	$('input#EVAL{chr(91)}name=confirmer_previsu_forum#EVAL{chr(93)}')
    	.live('click', function(e) {
    		saveauto = false;
    	});
    	$(window)
    	.bind('unload', function(){
    		if (saveauto){
    			var s = $('#formulaire_forum textarea#EVAL{chr(91)}name=texte#EVAL{chr(93)}').val();
    			if (s)
    				$.cookie('spip_contenu_formulaire_#ENV{_sign}', s);
    			else
    				$.cookie('spip_contenu_formulaire_#ENV{_sign}', null);
    		}else{
    			/* on vide le champs texte après le submit car refuser_traiter_formulaire_ajax(); va reposter le formulaire, et donc reposer un cookie car saveauto sera false la seconde fois. */
    			$('#formulaire_forum textarea#EVAL{chr(91)}name=texte#EVAL{chr(93)}').val('');
    		}
    	});
    }(jQuery));
    /*#EVAL{chr(93)}[(#EVAL{chr(93)})]>*/</script>
    ]
    </div>
    • Bonjour
      En effet le formulaire est correct.
      Pourtant, dans le code HTML produit, la plupart des balises avec des attributs sont toutes coupées avec des retours à la ligne.
      Je ne sais pas la raison, sans doute un traitement sur le code effectué par un autre plugin ou par une fonctionnalité de spip.

      Une solution possible serait de surcharger le formulaire en ajoutant une balise ad hoc avant le bouton, sans mettre d’espaces, par exemple @MONCAPTCHA@, et d’ajouter dans le code du plugin le remplacement de cette balise par le captcha.
      Pour cela, allez dans fbantispam_pipelines.php, à la ligne 33, pour ajouter ceci :

      if (!$pos) $pos = strrpos($texte, '@MONCAPTCHA@', 0);

      Cela devrait contourner votre problème.
      Cordialement
      Fabio

    • J’ai ajouté le code mais ça ne semble pas fonctionner ou bien je dois supprimer quelque chose ? j’ai ceci au finish comme code

      // On ajoute le champ 'captcha' avant le bouton de submit
      		// On commence de la fin, pour se positionner dans le formulaire de saisie et non dans
      		// celui de prévisualisation
      		$pos = strrpos($texte, '<p class="boutons">', 0);
      		if (!$pos) $pos = strrpos($texte, '@MONCAPTCHA@', 0);
      		// S'il n'a pas trouvé le bouton, on se positionne à la fin du formulaire (moins joli !)
    • Il faut aussi modifier le code du formulaire pour ajouter la balise @MONCAPTCHA@ là où on veut le captcha.
      Voir éventuellement la documentation Spip pour redéfinir le formulaire dans ses squelettes.
      Cordialement

    • Je pense que je ne vais pas y arriver car je n’ai aucune connaissance en php. Sauf indication claire sur quel ligne de quel fichier je dois ajouter la balise @MONCAPTCHA@ je ne vais pas y arriver. Merci pour votre aide!

    Reply to this message

  • 1

    Bonsoir j’ai installé ce plugin sur mon site mais il s’affiche après le bouton Prévisualisé
    ça fonction bien mais le fait qu’il s’affiche après le bouton de validation va surement jouer sur les visiteurs qui cliqueront sur prévisualisé sans voir le code captcha.
    Qualqu’un pourrais me dire quoi faire pour que le plugin vient avant le bouton de validation?
    Lien d’exemple ici
    http://islam.bf/index.php?page=forum&id_article=12&id_forum=1370&retour=index.php
    Merci d’avance

    • Bonjour
      Pour positionner le captcha le plugin effectue une recherche textuelle pour trouver le bouton, et se positionner avant. Si le bouton n’est pas trouvé, alors le captcha est mis à la fin du formulaire comme solution de repli.
      Le texte recherché correspond à la balise avec le contenu suivant : p class=“boutons”
      Dans votre cas, en regardant le code de la page, je vois qu’il y a un retour chariot entre p et class, ce qui rend inefficace la recherche de la bonne position, et c’est pour cela que la solution de replis est appliquée.
      Peut être que vos squelettes surchargent le formulaire standard ?
      Cordialement

    Reply to this message

  • Delorimier

    Le plugin fonctionne très bien en local, mais une fois en ligne les chiffres sont affichés normalement en caractères, sans traitement graphique. C’est sans doute un problème avec l’hébergement - quelqu’un sait-il ce qui doit être ajouté?

    Reply to this message

  • 4

    Ce plugin fonctionne bien par contre je doute qu’il soit efficace longtemps :
    les chiffres à rentrer sont écrits tel quels dans le code source de la page ! Un script spammeur peut donc très facilement le déjouer. Pour l’instant, le plugin est jeune et aucun spammeur ne s’est donné la peine d’écrire un tel script donc je peux l’utiliser. Mais plus on l’utilisera, moins il sera efficace !
    Il me semble qu’une amélioration du type “Combien font deux + trois (en chiffres) :” serait plus efficace.

    • remplacer #ENVcaptcha par son image typo à votre sauce par exemple :
      [(#ENVcaptcha|image_typoPapposBlues..._font.ttf,taille=36,align=center,padding_5|image_alpha60||image_flou6|image_rotation-25)]

      dans inclure/captcha et le nombre n’apparaitra plus

    • il suffit de remplacer <strong>#ENV{captcha}</strong>

      par un image typo de cette valeur —> A VOTRE SAUCE par exemple

        [(#ENV{captcha}|image_typo{PapposBlues..._font.ttf,taille=36,
      align=center,padding_5}|image_alpha{60}||image_flou{6}|image_rotation{-25})]

      dans le fichier inclure/captcha du plugin pour ne plus avoir le code en dur dans le texte

    •  [(#ENV{captcha}|image_typo{PapposBlues..._font.ttf,taille=36,align=center,padding_5}
      |image_alpha{60}||image_flou{6}|image_rotation{-25} |inserer_attribut{alt,''} )]

      on enlève aussi la valeur qui se met automatiquement dans le alt de l’image

    • je vois que le plugin a été mis à jour ! Plus besoin de modifs du coup. Merci !

    Reply to this message

  • 2

    Salut,

    je voudrais introduire le captcha dans une page de formulaire de l’espace public.
    Est-ce possible en mettant un code dans le squelette de cette page ?

    Merci d’avance

    • Bonjour Etienne
      Ce plugin intervient spécifiquement dans le formulaire du forum. Certainement quelques adaptations du code permettraient de l’utiliser avec d’autres types de formulaire, mais ce n’est pas le cas actuellement.
      Cordialement

    • Ok, merci pour la réponse. Je vais continuer à chercher une solution et sinon je fermerai provisoirement le site.

      Bonne continuation

    Reply to this message

  • Ok, merci pour la réponse. Je vais continuer à chercher une solution et sinon je fermerai provisoirement le site.

    Bonne continuation

    Reply to this message

Add a comment

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Who are you?
[Log in]

To show your avatar with your message, register it first on gravatar.com (free et painless) and don’t forget to indicate your Email addresse here.

Enter your comment here

This form accepts SPIP shortcuts {{bold}} {italic} -*list [text->url] <quote> <code> and HTML code <q> <del> <ins>. To create paragraphs, just leave empty lines.

Add a document

Follow the comments: RSS 2.0 | Atom