Защита WordPress от спама в комментариях без плагинов

Защита WordPress от спама в комментариях без плагиновЗдравствуйте уважаемые читатели блога pyatilistnik.info, в прошлый раз мы с вами разобрали как устанавливать Denwer, продолжаем изучать дальше сайтостроение. Проблема спама в наше время очень актуальна, особенно в wordpress. По статистике 70% блогов как раз приходится на эту CMS и как следует спам машины оптимизированы на поиск дырок в wordpress. Как обычно к движку предлагается множество плагинов для защиты от спама. С самого начала жизни моего блога был установлен  плагин Antispam Bee, мощный инструмент, но и он пропускает спам.

На днях проснувшись, обнаружил на блоге просто тьму спам комментов с одним текстом, с разных ip и прочих атрибутов. Общее количество составило 75 шт., причем, когда начал их удалять, комменты стали снова появляться, т.е. эта адская машина не успокоилась. Вот после этого я понял, что  нужно что-то кардинально менять. У меня было парочку идей: первая - поставить капчу, которая принесет неудобство блогу, но освободит меня от проблемы со спамом, вторая идея -  поставить вот такую капу, как говорят – железный занавес, которая освободит меня вообще от комментариев и только даст возможность комментировать самым сильным людям.

 

Но, слава богу, мою злость отпустило, и я начал смотреть в сети решение моей проблемы. И как обычно не следует изобретать велосипед, наткнулся на интересный  способ. Вкратце расскажу механизм поведения спам машин.
Защита WordPress от спама
Робот, скрипт, паук и др. сканируют сайт на предмет наличия формы, т.е. ищут HTML  теги <form> и <input>. Суть состоит в том, что у каждого инпута есть имя, которое позже при заполнении и отправки преобразовывается из  массива POST в переменную и идет дальше в обработчик формы. Так вот, практически везде, не только в wordpress, эти имена одинаковые и спам машина это знает и определяет их. Для того чтобы было понятнее вот эти имена: name="author", name="email", name="url".

Наша задача состоит в том чтобы переименовать имена инпутов. Ниже будет описание как это сделать.

Редактируем форму комментариев для защиты от спама в WordPress.

Первым делом на необходимо зайти в редактор блога и найти файл отвечающий за комментарии, в зависимости от шаблона имеет разные имена, у меня он называется comments.php. В этом файле на необходимо найти форму (кто не знает как в HTML создается форма, рекомендую погуглить).

Вот часть кода, которая нам нужна.

<p><input type="text" name="author" id="author" value="<?php echo $comment_author; ?>" size="22" tabindex="1" <?php if $req echo "aria-required='true'"; ?> />
<label for="author"><small>Имя <?php if $req echo "*"; ?></small></label></p>
 
<p><input type="text" name="email" id="email" value="<?php echo $comment_author_email; ?>" size="22" tabindex="2" <?php if $req echo "aria-required='true'"; ?> />
<label for="email"><small>Mail (не будет опубликовано) <?php if $req echo "*"; ?></small></label></p>
 
<p><input type="text" name="url" id="url" value="<?php echo $comment_author_url; ?>" size="22" tabindex="3" />
<label for="url"><small>Вебсайт</small></label></p>

Здесь нам необходимо заменить  name у наших импутов, можете придумать любое название.

<p><input type="text" name="sivwayauthor" id="author" value="<?php echo $comment_author; ?>" size="22" tabindex="1" <?php if $req echo "aria-required='true'"; ?> />
<label for="author"><small>Имя <?php if $req echo "*"; ?></small></label></p>
 
<p><input type="text" name="sivwayemail" id="email" value="<?php echo $comment_author_email; ?>" size="22" tabindex="2" <?php if $req echo "aria-required='true'"; ?> />
<label for="email"><small>Mail (не будет опубликовано) <?php if $req echo "*"; ?></small></label></p>
 
<p><input type="text" name="sivwayurl" id="url" value="<?php echo $comment_author_url; ?>" size="22" tabindex="3" />
<label for="url"><small>Вебсайт</small></label></p>

После этого нам необходимо так же заменить эти имена в обработчике.

Для этого переходим в главный каталог нашего сайта,  находим файл wp-comments-post.php и заменяем в нем следующее.

В коде

$comment_author =  isset$_POST'author'  ? trimstrip_tags$_POST'author' : null;
$comment_author_email =  isset$_POST'email'  ? trim$_POST'email' : null;
$comment_author_url =  isset$_POST'url'  ? trim$_POST'url' : null;

Заменяем на

$comment_author =  isset$_POST'sivwayauthor'  ? trimstrip_tags$_POST'sivwayauthor' : null;
$comment_author_email =  isset$_POST'sivwayemail'  ? trim$_POST'sivwayemail' : null;
$comment_author_url =  isset$_POST'sivwayurl'  ? trim$_POST'sivwayurl' : null;

После чего проверяем, как работает форма комментариев. Тестируем сами и просим знакомого тоже оставить коммент.

На этом все! Подписывайтесь на новости блога, вопросы можете оставлять в комментариях.

Защита WordPress от спама в комментариях без плагинов: 2 комментария

  1. Добрый день! что-то у меня не так выглядят эти строки в comment.php :((
    <input type="hidden" name="action" value="» />
    <input type="hidden" name="c" value="comment_ID); ?>» />

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *