Онлайн заработок, создание и монетизация сайтов, веб-разработка, SEO и SMO продвижение, фриланс, партнерки, полезные сервисы вебмастерам, блоггинг.

Защита от спама простой формы в TYPO3 (captcha + maag_formcaptcha)

captcha + maag_formcaptchaК сожалению, не всегда интернет используется в благих целях и некоторые особенности интернет сайтов могут быть использованы против их же владельцев. В частности речь идет о спаме. Если у вас есть форум, гостевая книга или комментарии, то без постоянно модерации, увы, не обойтись. Отчасти то же касается и форм обратной связи — подобный спам не является видимым на самом сайте, но может захламлять вашу почту или базу данный интернет проекта, что не совсем хорошо. Учитывая тот факт, что в большинстве случае спам отправляется на автомате, в качестве борьбы с этим нехорошим явлением может применяться размещение специального кода, который нужно вводить для отправки сообщений.

Предлагаю сегодня рассмотреть вопрос защиты от спама для простой (стандартной) формы обратной связи в TYPO3, о которой мы говорили в прошлый раз. Размещение специального цифрового кода поможет вам избавиться от 99% возможного спама. Форма при этом будет выглядеть приблизительно следующим образом:

TYPO3 Форма с защитой от спама

Для реализации защиты от спама используются два специальных экстеншена (модуля) — captcha + maag_formcaptcha. Раньше, кстати, я применял связку плагинов captcha + nd_antispam, но с недавних пор последних стал недоступен. В репозитории сказано, что maag_formcaptcha основан именно на нем, поэтому я и решил попробовать его использовать.  Никаких особых отличий при установки практически нет, поэтому все прошло весьма успешно.

Итак, алгоритм защиты от спама для простой почтовой формы в TYPO3 (рассказываю действия уже после установки формы обратной связи).

1. Устанавливаем экстеншен Captcha Library (captcha).   Обязательно загляните в настройки модуля, там есть много интересный параметров для каптчи — можно изменить размеры картинки, используемые символы, параметры шрифта и «помех» на заднем фоне и т.п.

2. Дальше скачиваем и устанавливаем экстеншен Maag Form Captcha (maag_formcaptcha).

3. Создаем отдельную подстраницу для страницы контактов, которая будет скрыта в меню — это будет страница, куда пользователь попадает при неправильном вводе каптчи. На ней размещаем сообщений по типу:

Ошибка!

Вы ошиблись при заполнения числового кода.
Ваше сообщение не принято.

« Вернуться к форме

4. Заходим на страницу контактов, отрываем форму и запускаем «Мастер создания формы«. Здесь мы должно добавить 4 поля как показано на рисунке:

добавляем каптчу в TYPO3

Рассмотрим эти поля более подробно:

  • Первое имеет тип «метка» с фразой «Перед отправкой формы введите цифры, которые Вы видите на картинке» — конечно, текст предупреждения можно менять как угодно.
  • Тип «Captcha Image» будет выводить изображения с кодом против спама.
  • Дальше создаем поле с типом «Captcha Input field», отмечаем его обязательным и в качестве метки указываем что-то вроде «Код против спама«.
  • Последнее поля типа «Captcha Error page» содержит ссылку на страницу ошибки, которую мыс создали на предыдущем шаге.

После добавления этих полей сохраняем нашу форму обратной связи и проверяем работы защиты от спама. Никаких дополнительных настроек или TypoScript кода вводить ненужно.

Проблемы с русскими символами в maag_formcaptcha

Единственное, что получилось не совсем хорошо в работе с экстеншеном maag_formcaptcha, так это его некорректная работа с русскими названиями полей формы. В процессе проверки формы обратной связи и не введенных обязательных полях вы должны увидеть следующее сообщение:

Форма обратной связи TYPO3

Но после установки модуля maag_formcaptcha все русские тексты заменялись на знаки вопроса. Сначала я было подумал, что это старый глюк с валидацией формы jsfunc.validateform.js, но оказалось, что проблема возникает в файле экстеншена class.ux_tslib_cObj.php.  Я долго изучал различные варианты с кодировками, но суть проблемы понять не смог. В результате просто немного изменил PHP код файла:

...
default:
 if ($confData['required']) { 
  $fieldlist[] = rawurlencode($confData['fieldname']);  
  //$fieldlist[] = rawurlencode(utf8_decode($confData['label']));
  $fieldlist[] = rawurlencode($confData['label']);
  }
break;
...

Во-первых, закомментировал строку с utf8_decode, во вторых скопировал аналогичный код из «рабочего» блока выше. И все стало отображаться корректно.

23.09.10

Категории: TYPO3.

Теги: , , , , ,

Добавить комментарий

Ваш e-mail не публикуется. Обязательные поля помечены *
Если вы комментируете впервые, то текст будет отправлен на модерацию.