diff --git a/core/class/template.class.php b/core/class/template.class.php index cbcde427..ee13f502 100644 --- a/core/class/template.class.php +++ b/core/class/template.class.php @@ -49,26 +49,30 @@ class template { 'value' => '', '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'); + + // Détermination de la limitation $limit = $attributes['limit'] ? count($letters)-1 : 10; mt_srand((float) microtime()*1000000); $operator = mt_rand (0, 3); - if ($operator > 1) { - $limit = 10; - } + + // Limiter les valuers si pas une addition + if ($operator > 1) $limit = 10; $firstNumber = mt_rand (1, $limit); $secondNumber = mt_rand (1, $limit); - if ( ($operator < 2) - AND ($firstNumber < $secondNumber) ) - { + // Ordre des valeurs selon type d'opération + if (($operator < 2) AND ($firstNumber < $secondNumber)) { $temp = $firstNumber; $firstNumber = $secondNumber; $secondNumber = $temp; } + // Calcul du résultat et icône de l'opérateur switch ($operator) { case 0: $operator = template::ico('plus'); @@ -84,40 +88,37 @@ class template { break; case 3: $operator = template::ico('divide'); - switch ($firstNumber) { - case 3: - $limit = 6; - break; - case 4: - $limit = 5; - break; - case 5: - $limit = 4; - break; - case 6: - $limit = 3; - break; + $limit2 = [10, 10, 6, 5, 4, 3, 2, 2, 2, 2]; + for ($i = 1; $i <= $firstNumber; $i++) { + $limit = $limit2[$i-1]; } - if ($firstNumber > 6) $limit = 2; - - $secondNumber = mt_rand(1, $limit); - $firstNumber = $firstNumber * $secondNumber; - $result = $firstNumber / $secondNumber; + 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); + + // Codage des valeurs de l'opération $firstLetter = uniqid(); $secondLetter = uniqid(); - // Masquage image source + + // Masquage image source pour éviter un décodage copy ('core/vendor/zwiico/png/'.$letters[$firstNumber] . '.png', 'site/tmp/' . $firstLetter . '.png'); copy ('core/vendor/zwiico/png/'.$letters[$secondNumber] . '.png', 'site/tmp/' . $secondLetter . '.png'); + // Début du wrapper $html = '