From 9e4b5d68914bad1ef9f475ed35d8b971016e9bc8 Mon Sep 17 00:00:00 2001 From: Alexandre Russo Date: Mon, 29 Oct 2018 12:20:32 +0100 Subject: [PATCH] =?UTF-8?q?Si=20on=20utilise=20le=20syst=C3=A8me=20de=20ca?= =?UTF-8?q?ptcha=20de=20noviusform=20=C3=A0=20chaque=20fois=20qu'on=20char?= =?UTF-8?q?ge=20l'instance=20du=20formulaire=20on=20redefinie=20la=20valeu?= =?UTF-8?q?r=20du=20captcha=20en=20session...=20du=20coup=20entre=20l'affi?= =?UTF-8?q?chage=20et=20la=20soumission=20du=20formulaire=20le=20captcha?= =?UTF-8?q?=20est=20regenere.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- classes/service/form.php | 4 ++++ views/front/form/field/captcha.view.php | 14 +++++++++----- 2 files changed, 13 insertions(+), 5 deletions(-) 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,