[Résolu] Reverse Captcha + doublon chapô

LokoyoteLokoyote Member
février 2014 modifié dans Entraide
Bonjour à toute la communauté !

Tout d'abord je souhaite remercier toute l'équipe ainsi que les personnes qui aident à améliorer toujours plus ce projet simplement génial (et j'en ai testé des CMS !)

Je sollicite votre savoir pour un petit problème d'un système de captcha inversé qui me pose problème.
Pour ceux qui ne connaissent pas, je m'explique :

de la même méthode qui consiste à remplir une box pour savoir s'il s'agit d'un robot ou d'un humain, cette méthode est l'inverse, elle consiste à mettre une box cachée (ou non) qui ne doit pas être remplie. En supposant que les bots remplissent toutes les cases d'un formulaire, celui-ci n'est pas envoyé.

Cependant la partie du JS pour l'envoi ne fonctionne pas.

Voilà mon code pour les 2 parties (formulaire et javascript)


Hi everyone !

I would like to thank all the team and the community for that wonderful project, which is, for me, the best i tested !

But I have a problem I don't know how to solve, I explain :

I would incorporate a reverse captcha (instead type words, the goal is do not write something in a hidden box, that the bots don't know) to my form called by a javascript code, but the section corresponding to the sending doesn't seem to work.

Here's my code (form and javascript):


[== HTML ==]
<!-------- Formulaire ----------->

	<fieldset class="conteneur">

		<!---------- partie identité --------------->
			<p class="commentaire">Un commentaire ?</p>

		<form action="<?php $plxShow->artUrl(); ?>#form" name="votreForm" method="post">
			
				<fieldset class="identité">
					<div id="ident">
						<label for="id_name">Pseudo :</label>
						<input id="id_name" name="name" type="text" size="20" class ="box" value="<?php $plxShow->comGet('name',''); ?>" maxlength="30" />
					</div>				
					<div id="ident">
						<label for="id_site">Votre site web (facultatif) :</label>
						<input id="id_site" name="site" type="text" size="20" class ="box" value="<?php $plxShow->comGet('site',''); ?>" />
					</div>				
					<div id="ident">
						<label for="id_mail">Adresse mail (facultatif) :</label>
						<input id="id_mail" name="mail" type="text" size="20" class ="box" value="<?php $plxShow->comGet('mail',''); ?>" />

<!---------------------------------------- PARTIE BOX CAPTCHA ------------------------------------------------->						
<label for="robots">
Vous ne devez pas remplir ce champ *
</label>
<input class="robots" name="robots" type="text" value=""/>
<!------------------------------------------------------------------------------------------------------------------------------->
					</div>
					
				</fieldset>
			
		<!--------- partie message ----------->
				<fieldset class="message">
					<b><label for="id_content" class="lab_com"><?php $plxShow->lang('COMMENT') ?> :</label></b>
					<textarea id="id_content" name="content" class ="box"><?php $plxShow->comGet('content',''); ?></textarea>


					<input type="submit" value="Publier le commentaire" onclick="verifForm();" />
				
				</fieldset>
			
		</form>

	</fieldset>




[== JavaScript ==]
<script language="javascript" type="text/javascript">

function verifForm()
{
    if(document.forms['votreForm'].elements['robots'].value !== '')
    { 
        document.location='http://www.fuckspam.com/';
    }
    else
    {
	document.forms['votreForm'].submit();
    }
}

</script>


En testant avec des "alert('test')" je sais que mon code est bien pris en compte, cependant le commentaire n'est pas envoyé et je ne vois pas pourquoi...
Auriez-vous une petite idée ?

Merci par avance :)

Testing with some "alert('test')" in the JS, i know my code is processed, but the comment is not sent...
Do you have an idea ?

Thanks in advance :)

Réponses

  • Un petit UP ?
  • Que dit la console javascript ?
  • StéphaneStéphane Member, Former PluXml Project Manager
    Sans vouloir être pessimiste, cette technique ne sert à rien. Je l'utilise sous forme de plugin et je suis quand même spammé.
    Les robots sont moins bete qu'on le pense. Faut pas oublier que derriere se sont des humains qui les programment et qui savent très bien quels champs sont utilisés dans tel ou tel cms. Suffit d'éplucher le code.

    Pour la redirection essaye
    window.location.href="...."
    

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • LokoyoteLokoyote Member
    février 2014 modifié
    @Jerry :
    héhé la console ne me dit absolument rien, pour elle tout va bien

    @Stéphane :
    Ah ? Je ne l'ai pas vu dans les plugins...
    Normalement il suffit de modifier le nom de la case "robots" par un nom qui ne sous-entend rien de négatif dans la base de donnée du robot je pense, comme "anniversaire" voire "adresse" mais dans l'absolu je ne sais pas ce que ça vaut.
    Pour le moment j'utilise le captcha de base (qui fonctionne vraiment bien) avec projethoneypot et pour le moment ça a l'air de bien fonctionner, c'est plus un projet à titre personnel comme je n'ai pas trouvé beaucoup d'info sur le sujet je voulais tenter et faire un retour sur cette méthode.

    Mon problème ne vient pas de la redirection qui marche très bien mais la partie du "else", c'est vraiment cette ligne
    document.forms['votreForm'].submit();
    

    Le commentaire est envoyé mais pas dans les commentaires a priori... si je mets un
    alert('envoi du commentaire');
    
    juste avant, l'alerte est bien déclenchée


    (un hors sujet mais sait-on jamais, j'avais un problème de doublon du chapô, il se retrouvait en début d'article avant le contenu de ledit article, pour éviter ça, et donc permettre d'écrire un texte différent de celui retrouvé dans l'article j'ai modifié le "class.plx.show.php" et plus précisément la partie
    	public function artContent($chapo=true) {
    
    		if($chapo === true)
    			echo $this->plxMotor->plxRecord_arts->f('chapo')."\n"; # Chapo
    		echo $this->plxMotor->plxRecord_arts->f('content')."\n";
    
    	}
    
    en commentant la ligne
    //echo $this->plxMotor->plxRecord_arts->f('chapo')."\n"; # Chapo
    

    Fin du hors sujet :) )
  • StéphaneStéphane Member, Former PluXml Project Manager
    Mon plugin n'a pas été diffusé. C'est un dev perso.

    Tu pourras mettre le nom que tu veux à ton champ ça ne changera rien. Celui qui regarde les sources de PluXml saura que seuls les champs valides sont name, site, mail et content. Tout le reste c'est du pipo. Il suffit de programmer le bot spammeur en conséquence et de ne remplir que ces champs.

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • Hmmm oui je vois, bon ben je laisse tomber alors, je verrai de mon côté à titre personnel.
  • Plutôt que de commenter le code, essaie de comprendre ce qu'il fait :P .
    Si tu ne veux pas que le chapo apparaisse dans l'article, au lieu d'appeler
    $plxShow->artContent();
    
    appelle
    $plxShow->artContent(false);
    
  • Ouais mais plutôt que de faire tourner une boucle de code pour lui dire de ne rien afficher, autant ne rien afficher au départ, c'est plus optimal je trouve.
  • Sauf que tu peux avoir besoin d'afficher, pour une raison ou une autre, le chapo et le contenu en même temps et dans d'autres articles que le contenu.
    Le gain de ne pas vérifier est négligeable. Et quand tu feras une mise à jour du core de pluxml, tu risques avoir des surprises si tu oublies de commenter à nouveau ton code.

    D'une manière générale, il faut éviter d'intervenir sur le core.
  • Je ne pense pas avoir besoin d'afficher le chapô et l'article, sinon autant tout mettre dans le chapô :P mais l'argument de la mise à jour me semble être une bonne raison, je modifie ça :D
    Merci bien.
Connectez-vous ou Inscrivez-vous pour répondre.