Математический хук (math hook) позволяет Вам включать вопросы с числами в форму для предотвращения спама. Он будет выводить числовой вопрос, на который нужно дать правильный ответ, вроде:
12 + 23?
Доступные свойства
Имя |
Описание |
По умолчанию |
mathMinRange |
Минимальный диапазон для каждого числа в уравнении. |
10 |
mathMaxRange |
Максимальный диапазон для каждого числа в уравнении. |
100 |
mathField |
Имя поля ввода ответа. |
math |
mathOp1Field |
Имя поля 1-го числа в уравнении. |
op1 |
mathOp2Field |
Имя поля 2-го числа в уравнении. |
op2 |
mathOperatorField |
Имя поля оператора в уравнении. |
operator |
Использование
Просто укажите его как хук в своем запросе FormIt:
[[!FormIt? &hooks=`math`]]
Далее вставьте этот HTML в ту часть формы, где должен появляться математический вопрос:
<label>
[[!+fi.op1]] [[!+fi.operator]] [[!+fi.op2]]
?</label>
[[!+fi.error.math]]
<input type="text" name="math:required" value="
[[!+fi.math]]
" />
<input type="hidden" name="op1" value="
[[!+fi.op1]]
" />
<input type="hidden" name="op2" value="
[[!+fi.op2]]
" />
<input type="hidden" name="operator" value="
[[!+fi.operator]]
" />
Таким образом математический вопрос загрузится в место вывода под именем «math». Скрытые поля имеют решающее значение, так как они указывают FormIt, каким будет уравнение (так как при первой загрузке оно случайное).
Настройка оператора Text
Если Вы не хотите, чтобы в качестве оператора был просто «-» или «+», но хотите скрыть его от спам-ботов, можете использовать фильтры вывода для дальнейшего увеличения неоднозначности математического равенства. Измените с текстом уравнения текст на:
<label>
[[!+fi.op1]] plus [[!+fi.op2]]
?</label><br /><br />
Таким образом, равенство будет представляться как «23 plus 41?» или «50 minus 12?» вместо символов -/+, усложняя задачу спам-ботам.