[Résolu] Anti-spam : mauvais choix de caractère depuis la v5.8.3

SudwebdesignSudwebdesign Member
17 mars modifié dans Bogues

Il arrive (parfois) que le caractère est impossible trouver car il en manque "un"

Par exemple :
Vérification anti-spam
Quelle est le huitième caractère du mot ve7p3cr

L'erreur se trouve ds la classe plxCapcha car il y a 35 caractères et non 36 :o

Pour corriger il suffit de régler la constante TEMPLATE_LENGTH a 35
Comme ci-dessous :

        const TEMPLATE = 'abcdefghijklmnpqrstuvwxyz0123456789';
        const TEMPLATE_LENGTH = 35;

Ou ajouter un caractère (un @ par ex.) a la constante TEMPLATE [non testé] ;)

ps: c'est grâce au mot choisit (ici huitième) qui aurai du être dernier qui m'a mis sur la piste d'erreur de comptage (ce bogue m'est arrivé que deux fois).

Belle et longue vie a ce magnifique outil.

Notre temps est la seule monnaie vraie ;)

Site, Dépôt, framagit, MyShop, Factux

Mots clés:

Réponses

  • bazooka07bazooka07 Moderator

    Salut,
    La lettre "o" a certainement été supprimée pour éviter une confusion avec "0". Je pense qu'on aurait pu aussi supprimer le "0". ce qui donnerait :

    <?php
    const TEMPLATE = 'abcdefghijklmnpqrstuvwxyz123456789';
    ?>
    

    la constante TEMPLATE_LENGTH est un integer résultat d'un calcul manuel. Elle ne représente pas un réel intérêt. Autant la supprimer et modifier la fonction plxCapcha::createWord() comme suit :

    <?php
       public function createWord($min=5, $max=8) {
    
            # On génère une taille compris entre min et max
            $size = mt_rand($min,$max);
    
            # On retourne la valeur
            $this->word = substr(
                str_shuffle(self::TEMPLATE),
                mt_rand(0, strlen(self::TEMPLATE) - $size),
                $size
            );
    
            $this->num = mt_rand(0, $size - 1);
        }
    ?>
    
  • Bien joué @bazooka07
    solution bien meilleure et bien plus simple, j'adopte :+1:

    Notre temps est la seule monnaie vraie ;)

    Site, Dépôt, framagit, MyShop, Factux

Connectez-vous ou Inscrivez-vous pour répondre.