diff --git a/classes/service/form.php b/classes/service/form.php index 065e1b8..61e2615 100644 --- a/classes/service/form.php +++ b/classes/service/form.php @@ -226,6 +226,10 @@ public function validateFieldsData(array $fields, array &$data) $errors['form_captcha'] = __('You have not passed the spam test. Please try again.'); } + if(!empty(\Session::get('captcha.'.$this->form->form_id)) { + \Session::set('captcha.'.$this->form->form_id, null); + } + return $errors; } } diff --git a/views/front/form/field/captcha.view.php b/views/front/form/field/captcha.view.php index d9a93e8..1800d37 100644 --- a/views/front/form/field/captcha.view.php +++ b/views/front/form/field/captcha.view.php @@ -12,12 +12,16 @@ \Nos\I18n::current_dictionary('noviusos_form::common'); -$number_1 = mt_rand(1, 10); -$number_2 = mt_rand(1, 50); -if (mt_rand(1, 2) == 1) { - list($number_2, $number_1) = array($number_1, $number_2); +if(!\Session::get('captcha.'.$form->form_id)) { + $number_1 = mt_rand(1, 10); + $number_2 = mt_rand(1, 50); + if (mt_rand(1, 2) == 1) { + list($number_2, $number_1) = array($number_1, $number_2); + } + \Session::set('captcha.'.$form->form_id, $number_1 + $number_2); +} else { + list($number_1, $number_2) = \Session::get('captcha.'.$form->form_id); } -\Session::set('captcha.'.$form->form_id, $number_1 + $number_2); $field['label'] = strtr(__('Help us prevent spam: How much is {{number_1}} plus {{number_2}}?'), array( '{{number_1}}' => $number_1,