Валидация проверочного вопроса на кириллице на Joomla

Интернет-технологии | Нет комментариев

Веб-мастера, применяющие проверочный вопрос в качестве антиспама в компоненте Chronoforms, иногда сталкиваются при отправке формы с проблемой валидации, если вопросы и ответы показаны фразами на кириллице. Стоит отметить, что при латинице или цифрах трудности не появляются и форма благополучно отправляется.

Решение проблем с валидацией

На этом сайте есть множество информации про компонент Chronoforms, в том числе предлагает способ решения проблемы с валидацией проверочного вопроса на кириллице.

Без предварительных правок соответствующих файлов компонента, где обрисованы функции для элементов «Check Security Question» и «Load Security Question», в парах кириллица «вопрос-ответ» не поддерживается.

Чтобы устранить данную проблему, первоначально стоит убедиться, что эта форма не кэшируется. Хотя у нас в распоряжении имеется плагин, который дает возможность на странице располагать формы где хочется, непосредственно разработчики советуют применять его достаточно осторожно. Когда форма расположена в теле кэшируемой страницы, тогда она своими всеми установками (также и блоки антиспама) кэшируется тоже. Значит, если невозможно выключить кэширование страницы, тогда форму выводят в модуль, либо как отдельную страницу.

Следовательно, если не кэшируется форма, но при этом сообщение валидатора не пропало и не получается отправка, следует приступить к ликвидацию проблемы.

Возьмем два файла:

  1. www/administrator/components/com_chronoforms5/chronoforms/actions/load_security_question/load_security_question.php
  2. www/administrator/components/com_chronoforms5/chronoforms/actions/check_security_question/check_security_question.php

Теперь в файле load_security_question.php находим: $answers[$k] = strtolower($answer) и заменяем на:

$answ = json_decode (json_encode($answer));

$answers[$k] = mb_strtolower($answ);

Далее в файле check_security_question.php находим строку:

$chrono_security_answer = strtolower(trim($form->data[‘chrono_security_answer’])) заменяем на:$secquest = json_decode (json_encode( trim($form->data[‘chrono_security_answer’]) ) );

$secquest = mb_strtolower($secquest);

$chrono_security_answer = $secquest;

Далее необходимо: Сохранить – Закрыть – Проверить. После этого правильные ответы пройдут валидацию, при этом не имеет значения, в каком регистре пользователь их вводит.

Формируя список вопросов и ответов, не будет лишним удостовериться, что пустые строки отсутствуют. Когда в списке будут присутствовать пустые строки, тогда форма выбросит случайно пустые вопросы. Безусловно, в этом эпизоде, она не пройдет валидацию.

Оставить ответ

Можно использовать: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

1111