Disparition visuel de la question captcha ?
Posté : 29 juil. 2014, 08:51
Bonsoir à tous,
J'utilise depuis longtemps FluxBB 1.2 et dessus j'avais installé la mod "CaptchaGuest" de FredoMkb. Tous marchait bien depuis plusieurs années jusqu’à quelques temps ou je me suis rendu compte, que parfois même souvent (8 fois sur 10), la question captcha n'apparaissait pas et qu'il fallait actualiser la page, quel que soit le navigateur, parfois plusieurs fois, pour faire apparaitre la question.
Voir exemple sur les 2 captures d'écran (sans et avec la question ?) :


je n'y connais rien en langage et me contente juste de faire les modifications comme les créateurs le préconise. Avez vous une idée de ce que cela peut être surtout que je n'ai fais aucune modification et que tous marchait bien avant ? j'ai juste l'impression qu'il ne manque pas grand chose pour résoudre le problème et que cela est du à une modification chez mon hébergeur ou des navigateurs ? et pas du code en lui même.
Merci de votre aide, je dépose le script de la mod Captcha
J'utilise depuis longtemps FluxBB 1.2 et dessus j'avais installé la mod "CaptchaGuest" de FredoMkb. Tous marchait bien depuis plusieurs années jusqu’à quelques temps ou je me suis rendu compte, que parfois même souvent (8 fois sur 10), la question captcha n'apparaissait pas et qu'il fallait actualiser la page, quel que soit le navigateur, parfois plusieurs fois, pour faire apparaitre la question.
Voir exemple sur les 2 captures d'écran (sans et avec la question ?) :


je n'y connais rien en langage et me contente juste de faire les modifications comme les créateurs le préconise. Avez vous une idée de ce que cela peut être surtout que je n'ai fais aucune modification et que tous marchait bien avant ? j'ai juste l'impression qu'il ne manque pas grand chose pour résoudre le problème et que cela est du à une modification chez mon hébergeur ou des navigateurs ? et pas du code en lui même.
Merci de votre aide, je dépose le script de la mod Captcha
<?php
/*
## Titre mod : CaptchaGuest
##
## Version mod : 1.0
## Pour PunBB : 1.2.x
## Date : 10/12/2006
## Auteur : FredoMkb (<http://fredomkb.free.fr/forum/>)
##
## Fichiers affectés : post.php
##
## Affecte la BD : non
##
## Description : Cette mod permet d'afficher un petit captcha textuel
## de sécurité (<http://fr.wikipedia.org/wiki/Captcha>).
## afin d'autoriser aux visiteurs (guest) de participer
## aux forums tout en empêchant l'accès des robots de spam.
##
## Cette mod est une adaptation d'une contribution de
## Vincent Garnier (vin100), sur les forums de PunBbFr
## (<http://www.punbb.fr/forums/viewtopic.php?id=2621>).
##
## Fonctionnalités : Cette mod affiche, en bas de la page de rédaction
## d'un nouveau message ou d'une nouvelle discussion,
## une operation arithmétique, tirée au hasard parmis
## une vingtaine disponibles, et demande à l'utilisateur
## de noter le résultat dans un champ dédié.
## Si la réponse est correcte lors de la validation,
## le message sera accepté et publié, dans le cas contraire,
## un avertissement s'affichera avec un lien "Retour",
## invitant l'utilisateur à corriger le résultat proposé.
## Au bout de trois tentatives, le message de l'utilisateur
## est effacé et une nouvelle question captcha est affichée.
##
## Personnalisations : Vous pouvez modifier et personnaliser certaines
## données utilisées, comme la liste des questions posées,
## le nombre de tentatives autorisées ainsi que la liste
## des conseils prodigués aux utilisateurs étourdis...
## Ces éléments sont identifiables par un commentaire
## contenant la mention "(a adapter selon vos besoins)".
##
## Sécurité : Le résultat de la question affichée, choisie au hasard,
## qui permet de tester l'exactitude de la réponse fournie,
## est encodé grâce à l'algorithme de cryptage MD5
## (<http://fr.php.net/manual/fr/function.md5.php>).
## De plus, les questions affichées sont converties en codes
## Ascii Html, correspondant au jeux de caractères à la norme
## ISO 8859-1 (<http://www.w3.org/TR/html4/sgml/entities.html>).
## Enfin, le nombre de tentatives de réponse est limitée.
##
## AVERTISSEMENTS : Malgré les différents mécanismes de sécurité utilisés,
## cette mod ne peut en aucun cas être considérée comme
## une méthode réellement efficace et infaillible contre
## les attaques de certains robots de spams sofistiqués.
## Si vous êtes victime d'attaques malgré cette protection,
## le plus sage est de désactiver l'option permettant aux
## visiteurs de participer librement, tout en les invitant
## à s'inscrire pour devenir membres de votre forum.
## Enfin, cette protection n'a aucun effet avec l'option
## de "Réponse rapide", veillez à la désactiver dans la zone
## d'administration de votre forum.
##
## DISCLAIMER : Veuillez noter que ces mods ne sont pas
## officiellement supportés par PunBB. L'installation
## de ces modifications est à vos risques et périls.
## N'oubliez pas de sauvegarder la base de données et
## les fichiers affectés avant de procéder à
## l'installation de cette modification.
*/
/*
#---------[ INSTALLATION ]------------------------------------------------------
#
# Si vous utilisez la dernière version française de PunBb, numérotée 1.2.14 Fr-b
# (<http://www.punbb.fr/>), et que vous n'avez pas déjà modifié le fichier
# nommé "post.php", vous pouvez remplacer celui de votre site par celui fourni
# dans cette archive, il est en tout point identique à l'original avec, en plus,
# l'intégration de cette mod.
#
# En revanche, si votre fichier "post.php" a déjà subi quelques modifications,
# suivez les étapes ci-après pour réaliser l'intégration de cette mod.
#
*/
/*
#---------[ 1. OUVRIR ]---------------------------------------------------------
*/
post.php
/*
#---------[ 2. TROUVER (lignes: 26-27) ]----------------------------------------
*/
define('PUN_ROOT', './');
require PUN_ROOT.'include/common.php';
/*
#---------[ 3. AJOUTER AVANT ]--------------------------------------------------
*/
/*********** CaptchaGuest ***********/
/* Solution de securite pour limiter l'acces des robots spameurs */
/* Base sur une proposition de vin100 sur le forum PunBbFr */
/* voir : <http://www.punbb.fr/forums/viewtopic.php?pid=30840>
/* Realisation : FredoMkb (c) 2006 */
/**************************************/
/* Valeurs globales */
// Tableau "questions/reponses" (a adapter selon vos besoins).
$cptchList = array(
'1 + 3' => 4,
'1 - 1' => 0,
'2 + 6' => 8,
'2 - 1' => 1,
'3 + 6' => 9,
'3 - 2' => 1,
'4 + 8' => 12,
'4 - 2' => 2,
'5 + 3' => 8,
'5 - 2' => 3,
'6 + 4' => 10,
'6 - 3' => 3,
'7 + 7' => 14,
'7 - 5' => 2,
'8 + 8' => 16,
'8 - 5' => 3,
'9 + 3' => 12,
'9 - 4' => 5,
'10 + 8' => 18,
'10 - 4' => 6
);
// Tableau des conseils (a adapter selon vos besoins)
$conseilsList = array(
'Et si vous mettiez vos lunettes là... hein ? ;-)',
'Je crois vous devriez vous faire aider là... ;-)',
'Accrochez-vous... vous allez y arriver... ;-)',
'Et bein... vous devriez changer de cerveau... ;-)',
'Et si vous utilisiez une calculette là... non ? ;-)',
'Euh... vous devriez vous réposer un peu là... ;-)',
'Ça alors... vous devriez retouner à l\'école... ;-)',
'Faut pas déprimer... ça arrive à tout le monde... ;-)',
'Vous devriez vous procurer quelques neurones... ;-)',
'Faut pas vous décourager... vous y êtes presque... ;-)'
);
/* Fonctions de traitement */
// Fonction pour convertir du texte Html en codes Ascii Html.
function asciihtml($textHtml) {
// Fonction pour retourner le texte Html fourni ($textHtml) converti en codes Ascii Html ($asciiHtml).
// Petite adaptation d'un code issu d'une contribution sur Spip'Contrib proposee par Jean Luc Girard et Coyote, merci a eux.
// Voir : <http://www.spip-contrib.net/Crypter-une-adresse-email>
// Utf<->Html, johan dot andersson at strateg dot se, voir : <http://fr.php.net/manual/fr/function.utf8-decode.php#31815>
$textHtml = html_entity_decode(htmlentities($textHtml, ENT_COMPAT, 'UTF-8'));
$asciiHtml = '';
for ($i = 0; $i < strlen($textHtml); $i++) {
$asciiHtml .= '&#'.ord($textHtml[$i]).';';
}
return $asciiHtml;
}
// Fonction pour preparer la question du captcha
function cptchQuestion() {
global $cptchList; // Utiliser les globales
// Construction de la question
$cptchIndex = rand(0, count($cptchList)-1); // Choix aleatoire d'un couple "question/reponse"
$cptchQstsList = array_keys($cptchList); // Liste des questions
$cptchQst = $cptchQstsList[$cptchIndex]; // La question choisie
$cptchQstMd5 = md5($cptchQst); // Encodage md5 de la question choisie
$cptchQstHtml = asciihtml($cptchQst.' ='); // Encodage ascii html de la question choisie
// Retour des resultats
$resultArray = array($cptchQstHtml, $cptchQstMd5);
return $resultArray;
}
// Fonction pour analyser la reponse au captcha
function cptchReponse() {
global $cptchList, $conseilsList, $lang_common; // Utiliser les globales
$limite = 3; // Nombre de tentatives autorisees (a adapter selon vos besoins)
$conseil = $conseilsList[rand(0, count($conseilsList)-1)]; // Choix aleatoire d'un conseil
// Construction du tableau de controle de la reponse fournie
$cptchQstsMd5List = array();
foreach ($cptchList as $cle => $val) {
$cptchQstsMd5List[md5($cle)] = $val;
}
// Recuperation des varialbes passees par $_POST
$cptchQstUsr = trim($_POST['captcha_q']);
$cptchRepUsr = trim($_POST['captcha']);
$messageOk = 0;
if (empty($cptchQstsMd5List[$cptchQstUsr]) || $cptchQstsMd5List[$cptchQstUsr] != $cptchRepUsr) { $messageOk = 1; }
// Initialisation d'une session pour compter le nombre de tentatives
$suiteOk = 0;
session_start(); // Demarrage de la session
if (isset($_SESSION['nbr'])) {
$_SESSION['nbr'] ++; // Iteration du compteur
if ($_SESSION['nbr'] >= $limite) { $suiteOk = 1; }
} else {
$_SESSION['nbr'] = 1; // Initialisation du compteur
}
// Construction des messages d'erreur
$message = '<p><strong>Réponse incorrecte, veuillez recommencer... </strong>';
$message .= '<small style="color: gray;">(tentative '.$_SESSION['nbr'].'/'.$limite.')</small></p>';
$message .= '<p>Conseil : <em>'.$conseil.'</em></p>';
// Avertissement et lien lorsque la limite est depassee
$averto = '<p><strong style="color: maroon;">Vous avez épuisé le nombre de tentatives autorisées !</strong></p>';
$averto .= '<p><a href="javascript:location.href=location">'.$lang_common['Go back'].'</a></p>';
if ($suiteOk) { $message .= $averto; }
// Supperssion du compteur de la session lorsque la limite est depassee
if ($_SESSION['nbr'] >= $limite) { unset($_SESSION['nbr']); }
// Retour des resultats
$resultArray = array($messageOk, $message, $suiteOk);
return $resultArray;
}
/*********** Fin CaptchaGuest ***********/
/*
#---------[ 4. TROUVER (lignes: 72-74) ]----------------------------------------
*/
// Did someone just hit "Submit" or "Preview"?
if (isset($_POST['form_sent']))
{
/*
#---------[ 5. AJOUTER APRES ]--------------------------------------------------
*/
/*********** Captcha Reponse ***********/
if ($pun_user['is_guest']) {
$cptchRepRes = cptchReponse();
if ($cptchRepRes[0]) { message($cptchRepRes[1], $cptchRepRes[2]); }
}
/*********** Fin Captcha Reponse ***********/
/*
#---------[ 6. TROUVER (lignes: 439-441) ]--------------------------------------
*/
}
else if (isset($_POST['preview']))
{
/*
#---------[ 7. AJOUTER APRES ]--------------------------------------------------
*/
/*********** Captcha Reponse ***********/
if ($pun_user['is_guest']) {
$cptchRepRes = cptchReponse();
if ($cptchRepRes[0]) { message($cptchRepRes[1], $cptchRepRes[2]); }
}
/*********** Fin Captcha Reponse ***********/
/*
#---------[ 8. TROUVER (lignes: 519-532) ]--------------------------------------
*/
?>
</div>
<div class="inform">
<fieldset>
<legend><?php echo $lang_common['Options'] ?></legend>
<div class="infldset">
<div class="rbox">
<?php echo implode('<br /></label>'."\n\t\t\t\t", $checkboxes).'<br /></label>'."\n" ?>
</div>
</div>
</fieldset>
<?php
}
/*
#---------[ 9. AJOUTER APRES ]--------------------------------------------------
*/
/*********** Captcha Question ***********/
if ($pun_user['is_guest']) {
$cptchQstRes = cptchQuestion();
?>
<br />
<fieldset>
<legend>Sécurité</legend>
<div class="infldset"">
<p>Veuillez noter le résultat de l'opération suivante :
<strong><?php echo $cptchQstRes[0] ?></strong>
<input name="captcha" id="captcha" type="text" size="5" maxlength="10" style="text-align: center;" />
<input name="captcha_q" value="<?php echo $cptchQstRes[1] ?>" type="hidden" />
</p>
</div>
</fieldset>
<?php
}
/*********** Fin Captcha Question ***********/
/*
#---------[ 10. ENREGSITRER / ENVOYER SUR LE SERVEUR ]--------------------------
*/
?>