Modx Fromit AjaxForm antispam

Создаем hidden-поле и записываем в него сгенерированный на сервере ключ, который кладем в сессию. Когда аякс с формой уйдет на сервер, происходит сверка значения из hidden-поля с тем, что лежит в сессии. В случае, если значения не равны — это спам, следовательно останавливаем отправку формы на почту.

<input type="hidden" name="message-key" value="[[!getMessageKey]]" />

где сниппет *getMessageKey* со следующим содержимым

if (!isset($_SESSION['spamProtectionMessageKey']) || empty($_SESSION['spamProtectionMessageKey'])){
    $_SESSION['spamProtectionMessageKey'] = time();
}
return $_SESSION['spamProtectionMessageKey'];

И создаем еще один снимппет — хук: chekSpamProtectionMessageKey, со следующим содержимым:

$messageKey = $hook->getValue('message-key');
if (!isset($_SESSION['spamProtectionMessageKey']) || empty($_SESSION['spamProtectionMessageKey'])
    || empty($messageKey) || (int)$messageKey !== (int)$_SESSION['spamProtectionMessageKey']){
    return false;
}
return true;

и добавляем вы вызов данный хук

&hooks=`spam,chekSpamProtectionMessageKey,email`
Поделиться
Отправить
 147   2022   modx   spam