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`