----------------------------------------------------------------------------------
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 [/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']