[PLUGIN] CAPTCHA (anti-spam sur commentaires) [PLUGIN] CAPTCHA (anti-spam sur commentaires)
 

News:

cpg1.5.48 Security release - upgrade mandatory!
The Coppermine development team is releasing a security update for Coppermine in order to counter a recently discovered vulnerability. It is important that all users who run version cpg1.5.46 or older update to this latest version as soon as possible.
[more]

Main Menu

[PLUGIN] CAPTCHA (anti-spam sur commentaires)

Started by Pascal YAP, August 26, 2006, 01:13:01 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Pascal YAP

CAPTCHA
[MOD / HACK] by Abbas Ali

NOUVEAU : CAPTCHA Plugin ! Plus nécessaire de modifier le code ;D
voir ici le sujet en anglais
Ou par ici


Ci-dessous, le code initial (non plugin)

Beaucoup de Spamming de commentaire ont été signalé sur les galeries Coppermine.
Abbas Ali a pensé utiliser Captcha pour filtrer les "commentaires" déposés par des robots.

Que fait cette modification de Coppermine ?

  • Une image-texte s'affiche à coté du formulaire de commentaire. Il y a une nouvelle case à renseigner obligatoirement. "Confirmation"
  • L'utilisateur sera invité à écrire exactement le texte suivant les indications de l'image affichée.
  • Si le texte écrit par l'utilisateur n'est pas identique à l'image-texte, alors le commentaire ne sera pas ajouté. Ce qui bloque de fait les robots !  ;D

Fichiers à modifier :
  • db_input.php
  • themes/votretheme/theme.php
  • lang/french.php (et tous les fichiers languages que votre galerie propose ! traduction nécessaire dans ces langues !)

Nouveaux fichiers :

  • captcha.php (racine de Coppermine. Là où se situe INDEX.PHP)
  • captcha.class.php (dossier votre_cpg/include/)
  • fonts

     NECESSITE FREETYPE sur votre serveur. (voir ci-dessous l'exemple d'un phpinfo.php)
(https://coppermine-gallery.com/forum/proxy.php?request=http%3A%2F%2Fforum.coppermine-gallery.net%2Findex.php%3Faction%3Ddlattach%3Btopic%3D29564.0%3Battach%3D4975%3Bimage&hash=aa86aa06141a6005e0b5749085b2b44ed90dcc4d)

1/ TELECHARGEZ CAPTCHA.
Placez le fichier PHP captcha.php à la racine du site.
Placez captcha.class.php dans le dossier "include" de Coppermine.
Placez les polices de caractères TTF dans le dossiers /fonts que vous devez créer.
(TIPS : vous pouvez utilisez n'importe quelles fontes TrueType)

2/ Ouvrez french.php (et tous les fichiers /lang que votre galerie propose)

cherchez'non_exist_comment' => 'Le commentaire sélectionné n\'existe pas.',
puis après la ligne ci-dessus ajoutez celle-ci :
'captcha_error' => 'Le code de confirmation ne correspond pas. The confirmation code didn\'t matched',


recherchez
'report_comment_title' => 'Envoyer ce commentaire à l\'administrateur', //cpg1.4

et après la ligne ci-dessus ajoutez celle-ci :'confirm' => 'Confirmation',

-----------------------------------

3/ Ouvrez le fichier votre_cpg/themes/theme.php

cherchez :
'{COMMENT}' => $lang_display_comments['comment'],

puis après cette ligne ajoutez la suivante :
'{CONFIRM}' => $lang_display_comments['confirm'],


cherchez :
<!-- END input_box_no_smilies -->
                                </td>
                                <td class="tableb_compact">
                                <input type="hidden" name="event" value="comment" />
                                <input type="hidden" name="pid" value="{PIC_ID}" />
                                <input type="submit" class="comment_button" name="submit" value="{OK}" />
                                </td></tr>

après le code ci-dessus, ajoutez :
<tr>
  <td class="tableb_compact" colspan="2">
    {CONFIRM}
  </td>
  <td class="tableb_compact" colspan="2">
    <input type="text" name="confirmCode" size="5" class="textinput"> <img src="captcha.php" align="middle">
  </td>
</tr>


-----------------------------------

4/ Ouvrez db_input.php

cherchez :
    case 'comment':
        if (!(USER_CAN_POST_COMMENTS)) cpg_die(ERROR, $lang_errors['perm_denied'], __FILE__, __LINE__);

ajoutez :
        require("include/captcha.class.php");
        if (!PhpCaptcha::Validate($_POST['confirmCode'])) {
          cpg_die(ERROR, "Confirmation code didn't matched", __FILE__, __LINE__);
        }


PYAP
Sujet en anglais

Davide Renda

il y a un truc que je ne pige pas; j'ai lu dans le forum en "English" et je ne pige non plus.
Dans mon thème (Connections, modifié pour marcher avec le modpack de Stramm), il n'y a pas la partie '{COMMENT}' => $lang_display_comments['comment'],, ni la suivante.
Quelles modifications doit je faire donc? ???

piki

Bonjour,

Pareil pour moi, je ne trouve pas ces lignes dans mon theme (eyeball). J'ai essayé de suivre le fil en anglais où certains évoquaient le même pb, j'ai l'impression qu'il faut aller copier des lignes dans le theme sample, les coller (mais je ne sais pas où), et les modifier.

gt4mike

Bonjour,

Ce mod m'interesse car j'ai 12 galeries de mes membres qui tournent dont 4 qui viennent de se faire spammer par des messages à caracteres pornographiques et tres hard (zoophilie).

Par contre j'ai un souci : j'utilise le theme "classic" dont ci joint le code :
<?php
/*************************
  Coppermine Photo Gallery
  ************************
  Copyright (c) 2003-2006 Coppermine Dev Team
  v1.1 originally written by Gregory DEMAR

  This program is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation; either version 2 of the License, or
  (at your option) any later version.
  ********************************************
  Coppermine version: 1.4.8
  $Source$
  $Revision: 3116 $
  $Author: gaugau $
  $Date: 2006-06-08 00:11:54 +0200 (Do, 08 Jun 2006) $
**********************************************/

// ------------------------------------------------------------------------- //
// This theme has all CORE items removed                                     //
// ------------------------------------------------------------------------- //
define('THEME_IS_XHTML10_TRANSITIONAL',1);

?>


Je ne peux donc trouver votre code.

Par contre j'ai trouve
'{COMMENT}' => $lang_display_comments['comment'],

dans :
include/theme.inc.php
et
sample/theme.php

Et celui la :
<!-- END input_box_no_smilies -->
                                </td>
                                <td class="tableb_compact">
                                <input type="hidden" name="event" value="comment" />
                                <input type="hidden" name="pid" value="{PIC_ID}" />
                                <input type="submit" class="comment_button" name="submit" value="{OK}" />
                                </td></tr>


dans
sample/theme.php

Mais bonne nouvelle j'ai trouve votre code dans french.php et db_input.php

Je suis un peu perdu, peut etre pourriez vous m'aider ? et m'expliquer quels fichiers je dois modifier ?

Par avance merci

Pascal YAP

Bonjour,

Pour commencer, j'utilise des Thèmes Persos, mais pas les Thèmes officiels de Coppermine.
Et je n'ai pas constaté le Thème Classic avec ce MOD.

Si vous faites une sauvegarde de vos fichiers d'origine, vous allez probablement nous dire bientot si l'on peut intégrer le code dans THEME.INC.PHP  ;)
Merci pour vos essais  ;D

PYAP

mouly

effectivement cela fonctionne en modifiant le fichier : theme.inc.php

a voir sur http://asso.amtm.free.fr/photos/
où nous avions enormement de spams mais nous voulions quand meme laisser les commentaires ouvert aux surfeurs.

pour info : nous avons du changer un peu le code, il y avait, apparemment, dans les fichiers, des espaces qui empechaient l'image de s'afficher (croix rouge à la place),
Si vous rencontrez le même problème, faites le moi savoir, je vous indiquerai la marche a suivre.
mouly2 at yahoo point com

Pascal YAP

Bonjour Mouly,

Quotenous avons du changer un peu le code, il y avait, apparemment, dans les fichiers, des espaces qui empechaient l'image de s'afficher (croix rouge à la place)
Merci pour le retour d'info  ;)
Pouvez-vous placer le code modifié ici-même ? Merci.

PYAP

(sympathique action, d'après votre Galerie  ;D ;) Bravo )

kromega

Quote from: mouly on August 27, 2006, 11:24:42 PM
pour info : nous avons du changer un peu le code, il y avait, apparemment, dans les fichiers, des espaces qui empechaient l'image de s'afficher (croix rouge à la place),
volontiers, j'ai le même pb, seulement sur Explorer, pas de pb avec Firefox... bizzare...
fabski - novice

François Keller

Bonjour,

Quoteeffectivement cela fonctionne en modifiant le fichier : theme.inc.php
Il est préférable de modifier le fichier theme.php du theme utilisé plutot que theme.inc.php
Cela permets une mise à jour plus simple, puisqu'on ne touche pas au code principal
Avez vous lu la DOC ? la FAQ ? et cherché sur le forum avant de poster ?
Did you read the DOC ? the FAQ ? and search the board before posting ?
Mon Blog

kromega

hello,
j'ai toujours des problèmes avec ma traduction français.
sans modif à french.php, pas de soucis, la version anglaise s'affiche si le text n'existe pas.
http://www.fabski.com/images/displayimage.php?album=lastcom&cat=0&pos=3&lang=french

avec la version modifée attachée (french2 dans le menu pull-down), l'image n'est plus affichée... et pourtant, je n'ai fait qu'ajouter les lignes confirm et confirm2 qui marchent dans le fichier anglais !!!

qq'un a une idée ?

fabien
fabski - novice

Pascal YAP

#10
Kromega,

Quoteavec la version modifée attachée (french2 dans le menu pull-down), l'image n'est plus affichée... et pourtant, je n'ai fait qu'ajouter les lignes confirm et confirm2 qui marchent dans le fichier anglais !!!
qq'un a une idée ?
Dingue !
Vérifiez bien qu'en fin de chaque ligne il n'y ait d'espace !
Je ne vois pas quelle est la différence entre le fichier joint et ce qui est conseillé !

PYAP

kromega

et pourtant dans le code source de la page généré, on a
<tr>
  <td class="tableb_compact">
    Confirmation
  </td>
  <td class="tableb_compact" colspan=2>
    <input type="text" name="confirmCode" size="5" class="textinput"> <img src="captcha.php" align="middle"><font size=-2>(mesure anti-spam : please copy the 5 letters from the picture just on the right - it's case-insensitive)</font>

  </td>
</tr>

mais l'image n'est pas affichée ?!?!?!? comprends plus rien.... heeeelp !

ps. t'as vu le nombre de ligne a checker ?!?!?
fabski - novice

Pascal YAP

#12
Quotet'as vu le nombre de ligne a checker ?!?!?
Mais vu le nombre de lignes ajoutées à l'ancienne version, ce n'est pas trop cruel  :D

Vérifier aussi le fichier CAPTCHA.PHP, c'est ce fichier qui affiche les images-texte.
La question est de savoir pourquoi cela fonctionne en anglais  ???

PYAP

tyio

ben c'est mieux en effet, de changer directement les elements principal du site, etant donné que c'est qd meme qq chose qui reste, pour tous les themes ;)


alors, on rajoute , dans theme.inc.php :

Quote'{CONFIRM}' => $lang_display_comments['confirm'],


apres :

Quote'{COMMENT}' => $lang_display_comments['comment'],




et bien sur, on rajoute :

Quote<tr>
  <td class="tableb_compact" colspan="2">
    {CONFIRM}
  </td>
  <td class="tableb_compact" colspan="2">
    <input type="text" name="confirmCode" size="5" class="textinput"> <img src="captcha.php" align="middle">
  </td>
</tr>


juste apres :

Quote<!-- END input_box_no_smilies -->

ou avant, enfin, çà depend de votre style graphique ^^


Et les autres manip, ce sont les memes ;)

Pascal YAP

Bonjour,

Nous avons constaté qu'il était possible de modifier Theme.inc.php ! Mais l'équipe de développement de Coppermine ne le recommande pas.
En effet en cas de mise à jour du code de CPG, seriez contraint de reprendre la modif. Alors que l'inclure dans un Theme.php, vous ne touchez pas au code de CPG.
C'est tout.
Libre à vous !
Ceci dit, cela ne semble pas engendrer de bug !  ;)

PYAP

Pascal YAP

#15
Bonjour,

Voici une question posée par PM !
Nous ne répondons au cas particulier par PM !


Au sujet des FONTS, il faut créer un dossiers fonts (votre-cpg/fonts) et y placer les deux polices fournies avec le ZIP. Mais vous pouvez très bien utiliser n'importe quelles polices TTF (TrueType)
Dans ce cas modifiez le fichier CAPTCHA.PHP en conséquence.
Quote/**
* Fonts to create the captch image
*/
$aFonts = array('fonts/ARIALN.TTF', 'fonts/algerinn.ttf'); /* acidic.ttf et hurryup.ttf , sont les polices d'origine de ce MOD */

Assurez-vous que votre serveur propose FreeType comme indiqué dans le premier post. (voir votre phpinfo.php)

PYAP

gt4mike

#16
Bonjour,

Merci à tous pour vos tests.

Chez moi, cela marche en suivant cette procédure :

1/ TELECHARGEZ CAPTCHA.
Placez le fichier PHP captcha.php à la racine du répertoire Coppermine
Placez captcha.class.php dans le dossier "include" de Coppermine.
Placez les polices de caractères TTF dans le dossiers /fonts que vous devez créer.
(TIPS : vous pouvez utilisez n'importe quelles fontes TrueType)

-----------------------------------

2/ Ouvrez /lang/french.php (et tous les fichiers /lang que votre galerie propose)

Cherchez
'non_exist_comment' => 'Le commentaire sélectionné n\'existe pas.',

Puis ajoutez après la ligne :
'captcha_error' => 'Le code de confirmation ne correspond pas. The confirmation code didn\'t matched',

Cherchez
'report_comment_title' => 'Envoyer ce commentaire à l\'administrateur', //cpg1.4

Puis ajoutez après la ligne :
'confirm' => 'Confirmation',


-----------------------------------

3/ Ouvrez /includes/theme.inc.php :

Cherchez
'{COMMENT}' => $lang_display_comments['comment'],

Ajoutez apres la ligne :
'{CONFIRM}' => $lang_display_comments['confirm'],

Cherchez :
<!-- END input_box_no_smilies -->

Ajoutez apres la ligne :
<tr>
  <td class="tableb_compact" colspan="2">
    {CONFIRM}
  </td>
  <td class="tableb_compact" colspan="2">
    <input type="text" name="confirmCode" size="5" class="textinput"> <img src="captcha.php" align="middle">
  </td>
</tr>



-----------------------------------

4/ Ouvrez db_input.php

Cherchez :
    case 'comment':
        if (!(USER_CAN_POST_COMMENTS)) cpg_die(ERROR, $lang_errors['perm_denied'], __FILE__, __LINE__);


Ajoutez apres la ligne :
        require("include/captcha.class.php");
        if (!PhpCaptcha::Validate($_POST['confirmCode'])) {
          cpg_die(ERROR, "Confirmation code didn't matched", __FILE__, __LINE__);
        }



encore merci  ;D

exemple ici : http://wallpaper.psp.ekila.org/

Pascal YAP

Bonjour,
QuoteChez moi, cela marche en suivant cette procédure
Qui semble être rigoureusement la même !
Avec une différence de taille, la modif du fichier theme.inc.php qui ne doit être pas touché !
Pour des questions de mise à jour du code de Coppermine il est beaucioup plus judicieux de tripoter le fichier THEME.PHP de votre thème.
Mais comme nous l'avons déjà vu un peu plus haut dans ce sujet, bidouiller THEME.INC.PHP est une alternative non recommandée  ;)

PYAP

gt4mike

Oui c'est la meme, c'est pour cela que j'ai écris "merci", je ne l'ai que re-formulé proprement pour éviter de se perdre.

Pour theme.inc.php, n'ayant pas d'autre alternative, vu que toutes les galeries de mes membres ont le theme classic d'installé par défaut, et qu'ils ne peuvent en changer, je suis obligé de le modifier. :-\

François Keller

#19
QuotePour theme.inc.php, n'ayant pas d'autre alternative, vu que toutes les galeries de mes membres ont le theme classic d'installé par défaut, et qu'ils ne peuvent en changer, je suis obligé de le modifier.

Là je ne comprends pas  ??? si tout le monde a le theme classic, pourquoi ne pas modifier le fichier theme.php du theme classic ? et si on peut changer de theme autant utiliser le plugin master template
Avez vous lu la DOC ? la FAQ ? et cherché sur le forum avant de poster ?
Did you read the DOC ? the FAQ ? and search the board before posting ?
Mon Blog