diff --git a/core/class/template.class.php b/core/class/template.class.php index ee13f502..c7a2acc1 100644 --- a/core/class/template.class.php +++ b/core/class/template.class.php @@ -50,55 +50,61 @@ class template { 'limit' => false ], $attributes); - // Tirage de l'opération et des nombres - // Correspondance tableau des images - $numbers = array(0,1,2,3,4,5,6,7,8,9,10,12,13,14,15,16,17,18,19,20); - $letters = array('u','t','s','r','q','p','o','n','m','l','k','j','i','h','g','f','e','d','c','b','a'); + // Captcha quatre opérations + // Limite addition et soustraction selon le type de captcha + $numbers = [0,1,2,3,4,5,6,7,8,9,10,12,13,14,15,16,17,18,19,20]; + $letters = ['u','t','s','r','q','p','o','n','m','l','k','j','i','h','g','f','e','d','c','b','a']; + $limit = $attributes['limit'] ? count($letters)-1 : 10; - // Détermination de la limitation - $limit = $attributes['limit'] ? count($letters)-1 : 10; - mt_srand((float) microtime()*1000000); - $operator = mt_rand (0, 3); + // Tirage de l'opération + mt_srand((float) microtime()*1000000); + $operator = mt_rand (1, 4); - // Limiter les valuers si pas une addition - if ($operator > 1) $limit = 10; - $firstNumber = mt_rand (1, $limit); - $secondNumber = mt_rand (1, $limit); - - // Ordre des valeurs selon type d'opération - if (($operator < 2) AND ($firstNumber < $secondNumber)) { - $temp = $firstNumber; - $firstNumber = $secondNumber; - $secondNumber = $temp; + // Limite si multiplication ou division + if ($operator > 2) { + $limit = 10; } - // Calcul du résultat et icône de l'opérateur - switch ($operator) { - case 0: - $operator = template::ico('plus'); - $result = $firstNumber + $secondNumber; - break; - case 1: - $operator = template::ico('minus'); - $result = $firstNumber - $secondNumber; - break; - case 2: - $operator = template::ico('cancel'); - $result = $firstNumber * $secondNumber; - break; - case 3: - $operator = template::ico('divide'); - $limit2 = [10, 10, 6, 5, 4, 3, 2, 2, 2, 2]; - for ($i = 1; $i <= $firstNumber; $i++) { - $limit = $limit2[$i-1]; - } - mt_srand((float) microtime()*1000000); - $secondNumber = mt_rand(1, $limit); - $firstNumber = $firstNumber * $secondNumber; - $result = $firstNumber / $secondNumber; - break; + // Tirage des nombres + mt_srand((float) microtime()*1000000); + $firstNumber = mt_rand (1, $limit); + mt_srand((float) microtime()*1000000); + $secondNumber = mt_rand (1, $limit); + + // Permutation si addition ou soustraction + if (($operator < 3) and ($firstNumber < $secondNumber)) { + $temp = $firstNumber; + $firstNumber = $secondNumber; + $secondNumber = $temp; } + // Icône de l'opérateur et calcul du résultat + switch ($operator) { + case 1: + $operator = template::ico('plus'); + $result = $firstNumber + $secondNumber; + break; + case 2: + $operator = template::ico('minus'); + $result = $firstNumber - $secondNumber; + break; + case 3: + $operator = template::ico('cancel'); + $result = $firstNumber * $secondNumber; + break; + case 4: + $operator = template::ico('divide'); + $limit2 = [10, 10, 6, 5, 4, 3, 2, 2, 2, 2]; + for ($i = 1; $i <= $firstNumber; $i++) { + $limit = $limit2[$i-1]; + } + mt_srand((float) microtime()*1000000); + $secondNumber = mt_rand(1, $limit); + $firstNumber = $firstNumber * $secondNumber; + $result = $firstNumber / $secondNumber; + break; + } + // Hashage du résultat $result = password_hash($result, PASSWORD_BCRYPT);