21.09.10

Защита от спама простой формы в TYPO3 (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, во вторых скопировал аналогичный код из «рабочего» блока выше. И все стало отображаться корректно.

Понравился пост? Подпишись на TYPO3 блог typo3 blog RSSRSS, RSS typo3 blogEmail или typo3 twittertwitter!
Веб разработка Экстеншены

комментариев 9 к статье “Защита от спама простой формы в TYPO3 (captcha + maag_formcaptcha)”

  1. Юрий   26.10.10

    Хорошая статья, спасибо!
    В моем случае предложенное решение проблемы с кодировкой не сработало. Отображаются кракозябры. Сработал следующий код:

    —————————-
    default:
    if ($confData[‘required’]) {
    $fieldlist[] = rawurlencode($confData[‘fieldname’]);
    $fieldlist[] = $confData[‘label’];
    }
    break;

  2. Tod   13.12.10

    Юрий, спасибо за код, а то в typo3 частенько приходится находить разные варианты решения задачи, которые в одном случае работает, в другом отказываются:)

  3. Toha   14.05.11

    Спасибо за хорошую статью!
    Но как можно защитить chc_forum?? я пробовал расширение chc_forum_captcha но у меня оно не захотело работать 🙁

  4. Tod   20.05.11

    Toha, с форумом не сталкивался, поэтому не смогу подсказать.

  5. Toha   20.05.11

    Уже разобрался.

    Кстати, есть очень интересная тема для typo3: twitter
    есть много расширений про которые в рунете нет ни единого слова

  6. Елена   23.06.12

    В статье всё изложено доступно и просто, но вот у меня картинка не генерируется…. вернее вообще не отображается, отображается только символ картинки и всё… подскажите в чём может быть проблема? Другие картинки на сайте отображаются корректно

  7. Tod   23.06.12

    Елена, помню тоже когда-то с таким сталкивался, но увы не помню решение, какое тогда нашел, это было года 3 назад)) Если с генерацией картинок все ок и с ImageMagick нет проблем, тогда я бы поискал, возможно, просто другой экстеншен (модуль) для защитного кода от спама, там вроде бы еще были варианты. Возможно, кстати, я просто поставил другой плагин. В чем причина глюка я так и не разобрался, это был максимум 1-2 раза из 100 успешных установок.

  8. Света   18.07.12

    Все установила, при заполнении формы уведомление оповещает, что сообщение отправлено, но письма на ящик не приходят. С чем это может быть связано, подскажите, пожалуйста?

  9. Tod   18.07.12

    Света, сложно сказать, глюк какой-то:) там где-то в настройках typo3 есть тестирование отправки сообщений (почты) с сервера — я бы проверил, хотя обычно там все ок, какой хостинг такого не предоставляет.
    Можно, конечно, еще покопаться в настройках часик-другой, потестировать либо сразу поискать альтернативу.

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

Полезные блоги

  • для блоггеров и вебмастеров