Защита от спама ModxEvo и сниппет eform

В данной статье рассмотрим вариант защиты от спама для сайта созданного на modxEvo и использующего сниппет eform для отправки форм.

Метод заключается в проверке имени пользователя, или любого другого поля на наличие английских букв.

Для нужно создать сниппет, назовем его например checkBot и вызвать в нем такую функцию:

<?php
function checkBot ($fields) {
		$bot = false;
		if (strlen($fields["name"])!=strlen(preg_replace("/[a-zA-Z]/i", "", $fields["name"])))
				{$bot=true;}
			if ($bot==true){
				return false;
			} else {
				return true;
				
			}
	}

В данном случае в массиве $fields содержатся все поля отправленной формы.

Ключи в данном массиве - являются именами полей т.е. в шаблоне формы имеем такой код:

<input type="text" placeholder="Введите ваше имя" autofocus="" required="" name="name" eform="Имя::1">

Соответсвенно в массиве $fields будет значение поля name, мы его проверяем на наличие английских букв.

Теперь перед первым вызовом eform на странице необходимо вызвать наш сниппет, а в вызов eform дописать функцию для обработки события отправки письма

[/!checkBot]][/!eForm? &formid=`contact-form` &tpl=`form-tpl` &to=`` &report=`report-tpl` &thankyou=`thank-tpl` &subject=`Сообщение с сайта` &eFormOnBeforeMailSent=`checkBot`]]

Минус данного метода в том, что он не выводит сообщение об ошибке, а просто не отправляет сообщение и не показывает формы.

Данный метод подходит для грубой защиты посадочных страниц, landing page и прочих "не промышленных сайтов"

Смотрите также

Мокапы картонных бирок (Label tag mockup)
100 качественных реалистичных мокапов
Melica - шаблон блога для Wordpress

Группа Вконтакте