Как запретить отправку формы при неправильно введенном слове?

#
Как запретить отправку формы при неправильно введенном слове?
Код вызова и обработки формы типовой, плюс в начале формирую кодовое слово - переменную $NewVar вида 24F685EE
Это кодовое слово вывожу на странице с формой, чтобы человек (не робот) увидел его и ввел в соответствующее текстовое поле (инпут с именем input_newvar)
Но где мне теперь вставить проверку на совпадение/не совпадение кодового слова и введенного слова, чтобы форма не отправлялась?
В нижеприведенном коде видна моя попытка, но увы, не отрабатывает.
if (Core::moduleIsActive('form'))
{
   $NewVar = Core_Guid::get();
   $NewVar = mb_substr($NewVar, 0, 8, 'UTF-8');
   
   $oForm = Core_Entity::factory('Form', Core_Array::get(Core_Page::instance()->libParams, 'formId'));
   $Form_Controller_Show = new Form_Controller_Show($oForm);
   $xslName = Core_Array::get(Core_Page::instance()->libParams, 'formXsl');
   $Form_Controller_Show->addEntity(Core::factory('Core_Xml_Entity')->name('NewVar')->value($NewVar));
   
   if (!is_null(Core_Array::getPost($oForm->button_name)))
   {   
      if (Core_Array::getPost('input_newvar') == $NewVar) {//моя попытка
         
         $Form_Controller_Show
            ->values($_POST + $_FILES)
            // 0 - html, 1- plain text
            ->mailType(Core_Array::get(Core_Page::instance()->libParams, 'mailType'))
            //->addEmail()
            ->mailXsl(
               Core_Entity::factory('Xsl')->getByName(Core_Array::get(Core_Page::instance()->libParams, 'notificationMailXsl'))
            )
            ->mailFromFieldName(Core_Array::get(Core_Page::instance()->libParams, 'email'));

         if (!is_null(Core_Array::getPost('email')) && Core_Valid::email(Core_Array::getPost('email')))
         {
            $Form_Controller_Show->addEmail(Core_Array::getPost('email'));

         } else {

            $Form_Controller_Show->addEmail('info@site.com');
         }

         $Form_Controller_Show->process();
      }
   }

   $Form_Controller_Show
      ->xsl(
         Core_Entity::factory('Xsl')->getByName($xslName)
      )
      ->show();
}
#
Re: Как запретить отправку формы при неправильно введенном слове?
volgastar,
По логике если вы печатаете Ваш секретный код на сайте где форма, то вы должны этот код передать вместе с POST запросом что бы в ТДС сравнить две данные. Что набрал пользователь в поле ввода кода и какой код был выдан. Тогда это сравниваете два input
E-mail: info@syrbek.ru / телега: @syrbek /skype: activexm / syrbek.ru / Поддержка сайтов / г. Москва [HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, Git, SVN, Redmine]
#
Re: Как запретить отправку формы при неправильно введенном слове?
Seri писал(а):
По логике

это уже сделано, смотрите внимательнее мой код
if (Core_Array::getPost('input_newvar') == $NewVar) {...

вопрос в том, как запретить отправку...
#
Re: Как запретить отправку формы при неправильно введенном слове?
Я внимателен и не понимаю вашу логику:
volgastar писал(а):
$NewVar = Core_Guid::get();

При этом генерируется новый Guid при POST. И то что образно видел пользователь на сайте код и код введенный пользователем уже получится не корректный и не когда не пройдет проверку.
E-mail: info@syrbek.ru / телега: @syrbek /skype: activexm / syrbek.ru / Поддержка сайтов / г. Москва [HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, Git, SVN, Redmine]
#
Re: Как запретить отправку формы при неправильно введенном слове?
Seri писал(а):
При этом генерируется новый Guid при POST


ладно, пока по теме не отвечают - как запретить отправку формы - поболтаем о сопутствующих вопросах...:

Почему вы говорите про разные коды?
Я формирую переменную и ОНА ЖЕ отправляется в форму вот такой строчкой (тоже есть в моем коде!):
$Form_Controller_Show->addEntity(Core::factory('Core_Xml_Entity')->name('NewVar')->value($NewVar));


А уже при отображении формы вывожу (показываю юзеру) эту переменную вот так, шаблон XSL:
<p><xsl:value-of disable-output-escaping="yes" select="/form/NewVar" /></p>


Где тут ДВА процесса генерации?
#
Re: Как запретить отправку формы при неправильно введенном слове?
volgastar,
Вы сами пробовали выполнить отладку выше написанного вами кода?
При первой загрузки страницы у вас будет сгенерирован код в переменную $NewVar.
После нажатии кнопки отправить будет перезагрузка страницы и в переменную  $NewVar запишется новый код по принципу
$NewVar = Core_Guid::get();

volgastar писал(а):
ладно, пока по теме не отвечают - как запретить отправку формы

Нет ответа потому что логика не верная из начально и до вашего вопроса еще не доходит процесс. А запретить это элементарно.
E-mail: info@syrbek.ru / телега: @syrbek /skype: activexm / syrbek.ru / Поддержка сайтов / г. Москва [HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, Git, SVN, Redmine]
#
Re: Как запретить отправку формы при неправильно введенном слове?
volgastar,
Seri верно написал, вы сами распечатайте результат, что приходит и что генерируется при показе страницы и отправке, зачем гадать
www.morozovpimnev.ru - создание, поддержка и продвижение сайтов | Наш канал https://asmp.su/channel
#
Re: Как запретить отправку формы при неправильно введенном слове?
да,и правда переменная заново создается.
думал,что ТДС вызывается один раз при открытии страницы, ан нет
т.е. мне надо кодовое слово создать раньше
надо повозиться еще чуть-чуть)))
всем сорри на кого наорал...)))
#
Re: Как запретить отправку формы при неправильно введенном слове?
volgastar,
посмотрите как каптча сделана
HostDev.pw - модули для HostCMS, Telegram: @hostdev
Авторизация