Page 1 sur 1

PERSONNALISATION : Captcha pour le formulaire de contact  Question traitée

Posté : sam. 28 mai 2016 00:48
par ym_trainz
CAPTCHA dans le formulaire de contact Email
----------------------------------------------------------------------------------
Nous avons été envahis de spams via le formulaire de contact (mail) de notre forum phpBB 3.1.9.
Sachant que l'équipe de phpBB n'a volontairement pas installé cette fonctionnalité, j'ai mis les mains dans le cambouis pour intégrer un Captcha dans le formulaire de contact .

Je partage aujourd'hui le code Captcha (code-source trouvé ici) et que j'ai intégré au forum.

Forumement,
ym_trainz

Je mets les fichiers modifiés en PJ. Pensez à sauvegarder vos originaux avant toute modification. Les autres fichiers sont à télécharger ici
----------------------------------------------------------------------------------
0. [root] : c'est la racine de votre forum (là où se trouve par exemple config.php ou cron.php)

1. Téléchargement du code captcha :
https://github.com/josecl/cool-php-captcha

2. Décompresser et uploader dans [root]/ym_captcha

Mode rapide : écrasez vos fichiers à l'aide des fichiers joints [color=#00BF80]ou passez en mode "je comprends ce que je fais" ci-dessous :D [/color]

3.modif [root]\styles\prosilver\template\memberlist_email.html

ligne 91, trouver

Code : Tout sélectionner

<div class="panel">
<div class="inner">
<div class="content">


juste après, ajouter ce qui suit :

Code : Tout sélectionner

<!-- ym captcha --------------------------------------------------------->
      <div style="text-align:center;">
                  
         <img src="{ROOT_PATH}ym_captcha/captcha.php" id="captcha" /><br/>

         <!-- CHANGE TEXT LINK -->
         Texte illisible ? <a href="#" onclick="
            document.getElementById('captcha').src='{ROOT_PATH}ym_captcha/captcha.php?'+Math.random();
            document.getElementById('captcha-form').focus();"
            id="change-image">Recharger le Captcha</a><br/><br/>

         <p><strong>Recopiez le texte ci-dessus en minuscules et sans accent</strong></p>
         <input type="text" name="captcha" id="captcha-form" autocomplete="off" /><br/>
         
      </div>
      <!-- end ym_captcha -------------------------------------------------------------------->

le code qui suit doit être :

Code : Tout sélectionner

<fieldset class="submit-buttons">
         <input type="submit" tabindex="6" name="submit" class="button1" value="{L_SEND_EMAIL}" />
      </fieldset>
   </div>
   </div>
{S_FORM_TOKEN}
</div>


4. modif [root]/memberlist.php

ligne 17 après

Code : Tout sélectionner

<?php

ajouter :

Code : Tout sélectionner

session_start(); // ajout ym_trainz pour recuperer les variables captacha

ligne 834 : trouver

Code : Tout sélectionner

 if ($request->is_set_post('submit'))
      {

ajouter juste après :

Code : Tout sélectionner

// Dérivation Captcha ym_trainz mai 2016 -------------------------------------
         // test validité captacha
         $cap1 = $_SESSION['captcha'];   // Captcha image (du texte)      
         $cap2 = $request->variable('captcha', ''); // retour du post input type text (entrée de l'user)
         $cap1 = trim(strtolower($cap1)); // minuscules et suppression des blancs
         $cap2 = trim(strtolower($cap2));
         if($cap1 != $cap2) { // erreur de saisie, les Captcha ne correspondent pas
            if($cap2 !="") {
               // echo "<script langage='JavaScript'>alert('Mauvais captacha (Saissez le mot à nouveau)')</script>";
               }
         }
         else { // on envoie le message
            // echo "<script langage='JavaScript'>alert('Captacha ok')</script>";
            
            $messenger = new messenger(false);
            $form->submit($messenger);
            
         }            
         // fin dérivation Captcha -----------------------------------------------------------------


5. ajout des mots français pour créer le fichier : [root]/ym_captcha/resources/words/fr.php
s'effectue à l'aide de l'outil inclus : [root]ym_captcha\resources\tools\dictionary-import\importwords.php

6. modif : [root]ym_captcha\captcha.php
ligne 184 : ajouter / compléter comme suit :

Code : Tout sélectionner

$this->WriteText($text, $fontcfg);
        $_SESSION[$this->session_var] = $text; // ym_trainz : on récupère ici la valeur du Captcha soit $_SESSION['captcha']

PERSONNALISATION : Captcha pour le formulaire de contact

Posté : ven. 19 août 2016 23:29
par gipi69
Bonjour
Dans le ym_captcha_ezcom.zip il manque un répertoire

Sinon mes premiers tests sont concluants il me reste à attendre que l’hébergeur débloque les mails sur mon forum

en attendant merci pour ton travail
A+ Gpinpin

PERSONNALISATION : Captcha pour le formulaire de contact

Posté : sam. 20 août 2016 02:09
par ym_trainz
Bonjour,
Merci pour tes remarques constructives.
Quel répertoire te manque-t-il ?
Cordialement,
Ym_trainz

PERSONNALISATION : Captcha pour le formulaire de contact

Posté : dim. 22 janv. 2017 14:18
par gipi69
Bonjour
Je ne suis pas venu depuis pas mal de temps et je n'avais pas vu ta demande
Il manque le répertoire fonts dans le sous répertoire "resources"

Bon maintenant j'ai appliqué cette modif dans un test forum 3.2 et ça à l'air de fonctionner......

Mais peut être as tu créé une extension en remplacement ?

A+ Gpinpin

PERSONNALISATION : Captcha pour le formulaire de contact

Posté : dim. 22 janv. 2017 14:52
par ym_trainz
Bonjour,

Je n'ai pas modifié ce code source ;-)

Bonne continuation,
ym_trainz

PERSONNALISATION : Captcha pour le formulaire de contact

Posté : ven. 2 nov. 2018 10:39
par DarkLane
Bonjour

Ayant ce probléme de spam en ce moment j'essaie d'instaler ceci. mais j'ai cette erreurs
Warning: imagettftext(): Invalid font filename in C:\wamp64\www\phpbb2\ym_captcha\captcha.php on line 423

J'ai bien le dossiers fonts dans ressources

Merci de votre aide

PERSONNALISATION : Captcha pour le formulaire de contact

Posté : ven. 2 nov. 2018 10:56
par DarkLane
Désolé si je n'édite pas mon message Donc j'ai cherché sur github et il y a eu une petite mise à jour à cause de se probléme. je viens de test et sa fonctionne maintenant.

Donc ouvrez captcha.php chercher ligne 400 environ
$fontfile = $this->resourcesPath.'/fonts/'.$fontcfg['font'];

Remplacer par
$fontfile = __DIR__ . DIRECTORY_SEPARATOR . $this->resourcesPath.'/fonts/'.$fontcfg['font'];

PERSONNALISATION : Captcha pour le formulaire de contact

Posté : ven. 2 nov. 2018 14:22
par ym_trainz
Merci :D