DCaptcha

Рубрика: WordPress - Статьи по CMS

Здравствуйте, уважаемые посетители сайта okITgo.ru! Сегодня хочу рассказать о плагине DCaptcha как о методе борьбы со спамом в комментариях вашего блога. Устройство плагина до безобразия простое, но работает DCaptcha как будто бы вполне неплохо, успешно отфильтровывая спам.


Установка DCaptcha

Сначала, естественно, качаем плагин либо с сайта автора, либо прямо с моего сайта.

Извлекаем скачанный архив в папку “dimoning.ru-captcha”, содержимое которой:

  • num\
  • dimoning.ru-captcha.php
  • install.php

Загружаем эту папку “dimoning.ru-captcha” в директорию WP с плагинами

wp-content/plugins/

В админке щелкаем меню “Плагины”, находим в списке плагин “DCaptcha” и нажимаем “Активировать” – прямо под названием плагина.

После этого открыв любую статью сайта (не залогиниваясь), в форме отправки отзыва (комментария) должен появиться дополнительный элемент:

DCaptcha

Теперь несколько действий по установке, специфических для плагина DCaptcha.

Устанавливаем права доступа 777 для папки

wp-content/plugins/dimoning.ru-captcha/num/

Теперь открываем страницу

http://<АДРЕС ВАШЕГО САЙТА>/wp-content/plugins/dimoning.ru-captcha/install.php

При этом откроется пустая страничка, но в папке

wp-content\plugins\dimoning.ru-captcha\num\
появится файлик num.txt с числовым кодом, который был сгенерирован при открытии страницы install.php (для этого собственно и давали права записи на папку “num”).


Проверка Работы DCaptcha

Окрываем какой-нибудь пост, при этом не залогиниваясь (например, используя другой браузер) и пишем тестовый комментарий, но галку в поле “Это не спам” не ставим. После попытки отправить комменатрий, должна открыться страница с таким содержанием:

wrong captcha. no spam, please.

Затем смотрим в админке, что комментарий действительно не прошел. В противном случае (комментарий все-таки просочился), необходимо предпринять дополнительные действия (см. ниже Настройка Работоспособности DCaptcha в Версиях WP 2.9 и Выше).

Теперь пишем другой тестовый комментарий и на этот раз ставим галочку. Комментарий должен успешно отправиться и ожидать модерации. Если опять вылезло сообщение “wrong captcha…”, то плагин не работает должным образом. Это может быть связано с тем, что Вы тестируете плагин на локальном хосте под управлением ОС Windows, для которой пути разграничиваются обратной косой чертой.

В этом случае надо подправить код в файле

wp-content\plugins\dimoning.ru-captcha\dimoning.ru-captcha.php
заменив строку
$file = str_replace (“dimoning.ru-captcha.php”, “”, __FILE__).”num/num.txt”;
на
$file = str_replace (“dimoning.ru-captcha.php”, “”, __FILE__).”num\\num.txt”;

После этого плагин должен заработать, но после переноса сайта на хостинг, надо изменения в файле dimoning.ru-captcha.php вернуть в исходное состояние, т.к. хостинг наверняка работает под управлением UNIX-подобной ОС, где пути разграничиваются прямой косой чертой.


Настройка Работоспособности DCaptcha в Версиях WP 2.9 и Выше

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

Чтобы вылечить эту проблему, открываем на редктирование файл

wp-content\plugins\dimoning.ru-captcha\dimoning.ru-captcha.php
и меняем строку
wp_set_comment_status ($id, ‘delete’);
на
wp_set_comment_status ($id, ‘trash’);

После этого при отправке комментария без галочки “Это не спам”, комментарий должен благополучно отправиться в корзину (проверяем в админке, кликнув меню “Комментарии”, справа щелкаем на ссылке “Корзина” и смотрим ее содержимое – комментарий должен быть там).

При желании можно сделать так, чтобы спам-комментарии, не прошедшие проверку DCaptcha, полностью удалялись, не попадая в корзину (и, соответственно, не записываясь в базу данных содержимого движка WordPress, на котором работает ваш сайт).

Для этого необходимо во-первых опять же внести изменения в файл

wp-content\plugins\dimoning.ru-captcha\dimoning.ru-captcha.php
заменив строку
wp_set_comment_status ($id, ‘trash’);
(которая в исходном варианте, если Вы еще не редактировали файл, имела вид
wp_set_comment_status ($id, ‘delete’);
) на строку
wp_delete_comment ($id);

Теперь комментарии, не прошедшию проверку DCaptcha, также будут попадать в корзину. Но характер работы функции удаления комментария wp_delete_comment отличается от работы функции установки статуса комментария wp_set_comment_status. Если сейчас отключить корзину совсем, то комментарии, не прошедшие капчу, будут удаляться полностью, не попадая в корзину и базу данных WP. Таким образом, осталось выполнить второй шаг – отключить корзину WordPress.

Отключение Корзины WordPress

Открываем файл с константами движка по умолчанию

wp-includes\default-constants.php
находим строку
define(‘EMPTY_TRASH_DAYS’, 30);
и меняем количество дней хранения “мусора” с 30-ти на 0, после чего сохраняем изменения. Теперь можете зайти в админку, щелкнуть пункт меню “Комментарии” и убедиться, что Корзина исчезла, а в раскрывающемся списке “Действия с выбранными” вместо пункта “Отправить в корзину” стал пункт “Удалить“.

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


Настройка Внешнего Вида DCaptcha

Поговорим о вопросах оформления.

1) Можно заменить подпись “Это не спам” на другую, например, “Я не робот”. Для этого открываем файл плагина

wp-content\plugins\dimoning.ru-captcha\dimoning.ru-captcha.php
и меняем строку
  Это не спам.<br>
на строку, которая должна отображаться
  Я не робот<br>

2) Можно изменить стиль div-контейнера с id=”dcaptcha”, добавив в таблицу стилей

wp-content\themes\<НАЗВАНИЕ ВАШЕЙ ТЕМЫ>\style.css
соответствующий css-код (например, сделать текст надписи красным)
#dcaptcha {
  color:#ff0000;
}

3) Можно убрать подпись сделано dimoning.ru под чекбоксом DCaptha, содержащую ссылку на сайт автора плагина, для этого удаляем кусок кода

<sup><small>сделано <a href=’http://dimoning.ru/’>dimoning.ru</a></small></sup>
в файле dimoning.ru-captcha.php (лежит в папке плагина DCaptcha, выше неоднократно прописывал путь).

4) Ну и наконец, думаю, стоит поменять оповещение

wrong captcha. no spam, please.
выводимое, если комментатор не знал (или забыл) поставить галочку DCaptcha на более понятную русскоязычному пользователю фразу или инструкцию, например:
Чтобы отправить комментарий, поставьте, пожалуйста, галочку “Это не спам”, чтобы подтвердить, что Вы не робот.
Для этого надо будет опять же немного изменить файл dimoning.ru-captcha.php. Находим в нем строку
  echo “wrong captcha. no spam, please.”;
и заменяем на кусок кода
echo <<< _ANTI_SPAM
<html>
<head>
  <meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″ />
  <meta name=”robots” content=”noindex, nofollow”>
  <title>Анти-спам проверка не пройдена</title>
</head>
<body>
<h1>Анти-спам проверка не пройдена</h1>
<p>Чтобы отправить комментарий, поставьте, пожалуйста, галочку “Это не спам”, чтобы подтвердить, что Вы не робот.</p>
</body>
</html>
_ANTI_SPAM;
Собственно главное тут указать правильную кодировку страницы (в данном примере UTF-8), иначе могут появиться крюкозябры.

На этом, пожалуй, закончу описание плагина DCaptcha. Желаю Вам, какой бы метод борьбы со спамом в комментариях Вы не избрали, успешно претворить этот метод в жизнь. Спасибо за внимание! До новых встреч на страницах сайта okITgo.ru.

Один отзыв на «DCaptcha»

  1. vyhori пишет:

    у меня ГАЛОЧКА вообще не отображается. Версия движка последняя

Ваш отзыв