This commit is contained in:
fredtempez 2020-10-29 19:14:19 +01:00
parent 3fefff219d
commit 567a70d909
1 changed files with 17 additions and 17 deletions

View File

@ -49,29 +49,29 @@ class template {
'value' => '', 'value' => '',
'limit' => false 'limit' => false
], $attributes); ], $attributes);
// Tirage de l'opération et des nombres // Tirage de l'opération et des nombres
// Correspondance tableau des images // 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); $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'); $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 // Détermination de la limitation
$limit = $attributes['limit'] ? count($letters)-1 : 10; $limit = $attributes['limit'] ? count($letters)-1 : 10;
mt_srand((float) microtime()*1000000); mt_srand((float) microtime()*1000000);
$operator = mt_rand (0, 3); $operator = mt_rand (0, 3);
// Limiter les valuers si pas une addition // Limiter les valuers si pas une addition
if ($operator > 1) $limit = 10; if ($operator > 1) $limit = 10;
$firstNumber = mt_rand (1, $limit); $firstNumber = mt_rand (1, $limit);
$secondNumber = mt_rand (1, $limit); $secondNumber = mt_rand (1, $limit);
// Ordre des valeurs selon type d'opération // Ordre des valeurs selon type d'opération
if (($operator < 2) AND ($firstNumber < $secondNumber)) { if (($operator < 2) AND ($firstNumber < $secondNumber)) {
$temp = $firstNumber; $temp = $firstNumber;
$firstNumber = $secondNumber; $firstNumber = $secondNumber;
$secondNumber = $temp; $secondNumber = $temp;
} }
// Calcul du résultat et icône de l'opérateur // Calcul du résultat et icône de l'opérateur
switch ($operator) { switch ($operator) {
case 0: case 0:
@ -98,27 +98,27 @@ class template {
$result = $firstNumber / $secondNumber; $result = $firstNumber / $secondNumber;
break; break;
} }
// Hashage du résultat // Hashage du résultat
$result = password_hash($result, PASSWORD_BCRYPT); $result = password_hash($result, PASSWORD_BCRYPT);
// Codage des valeurs de l'opération // Codage des valeurs de l'opération
$firstLetter = uniqid(); $firstLetter = uniqid();
$secondLetter = uniqid(); $secondLetter = uniqid();
// Masquage image source pour éviter un décodage // 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[$firstNumber] . '.png', 'site/tmp/' . $firstLetter . '.png');
copy ('core/vendor/zwiico/png/'.$letters[$secondNumber] . '.png', 'site/tmp/' . $secondLetter . '.png'); copy ('core/vendor/zwiico/png/'.$letters[$secondNumber] . '.png', 'site/tmp/' . $secondLetter . '.png');
// Début du wrapper // Début du wrapper
$html = '<div class="captcha" id="' . $attributes['id'] . 'Wrapper" class="inputWrapper ' . $attributes['classWrapper'] . '">'; $html = '<div class="captcha" id="' . $attributes['id'] . 'Wrapper" class="inputWrapper ' . $attributes['classWrapper'] . '">';
// Label // Label
$html .= self::label($attributes['id'], $html .= self::label($attributes['id'],
'<img src="' . helper::baseUrl(false) . 'site/tmp/' . $firstLetter . '.png" />&nbsp;<strong>' . $operator . '</strong>&nbsp;<img class="captchaNumber" src="' . helper::baseUrl(false) . 'site/tmp/' . $secondLetter . '.png" /> en chiffres ?', [ '<img src="' . helper::baseUrl(false) . 'site/tmp/' . $firstLetter . '.png" />&nbsp;<strong>' . $operator . '</strong>&nbsp;<img class="captchaNumber" src="' . helper::baseUrl(false) . 'site/tmp/' . $secondLetter . '.png" /> en chiffres ?', [
'help' => $attributes['help'] 'help' => $attributes['help']
]); ]);
// Notice // Notice
$notice = ''; $notice = '';
if(array_key_exists($attributes['id'], common::$inputNotices)) { if(array_key_exists($attributes['id'], common::$inputNotices)) {
@ -126,22 +126,22 @@ class template {
$attributes['class'] .= ' notice'; $attributes['class'] .= ' notice';
} }
$html .= self::notice($attributes['id'], $notice); $html .= self::notice($attributes['id'], $notice);
// captcha // captcha
$html .= sprintf( $html .= sprintf(
'<input type="text" %s>', '<input type="text" %s>',
helper::sprintAttributes($attributes) helper::sprintAttributes($attributes)
); );
// Champ résultat codé // Champ résultat codé
$html .= self::hidden($attributes['id'] . 'Result', [ $html .= self::hidden($attributes['id'] . 'Result', [
'value' => $result, 'value' => $result,
'before' => false 'before' => false
]); ]);
// Fin du wrapper // Fin du wrapper
$html .= '</div>'; $html .= '</div>';
// Retourne le html // Retourne le html
return $html; return $html;
} }