Как защитить блог WordPress от спамных автоматических регистраций ботами

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

На сайте WordPress.org есть много плагинов, которые добавляют всевозможные капчи в регистрацию, но боты научились ее обходить, а также многим пользователям не нравиться вводить капчу (картинка из разных символов). Поэтому я покажу? как защитить блог от спамных регистраций без использования плагинов.

Вкратце опишу, как будет работать защита. Регистрация в wordpress проходит в файле wp-login.php, боты написаны так, чтобы передавать значения в поле input text, у которого атрибут name равен user_login. Для реального пользователя, мы создадим новое поле input text с другим параметром атрибута name.

1. Создаем новые переменные

Открываем файл wp-login.php, который находиться в корне WordPress. Находим в нем нижеприведенную строку:


$user_login = $_POST['user_login'];

На момент написания данной статьи, в последней версии WordPress это 670 строка.

Заменяем на:


 $user_login = $_POST['user_login'];
 if(!empty($user_login)) wp_die('Завершаем работу.');
 $user_login = $_POST['login_1578'];

login_1578 – уникальное значение, которое присвоим ниже для поля input text. Вы можете изменить его на другое, только в пункте 2 значение должно быть таким же, как и в 1 пункте.

2. Скрываем поле для бота

Ищем:


<p>
<label for="user_login"><?php _e('Username') ?><br />
<input type="text" name="user_login" id="user_login" class="input" value="<?php echo esc_attr(wp_unslash($user_login)); ?>" size="20" /></label>
</p>

У меня это строка 695

Меняем на:


<p style="display: none;>
<label for="user_login"><?php _e('Username') ?><br />
<input type="text" name="user_login" id="user_login" class="input" value="<?php echo esc_attr(wp_unslash($user_login)); ?>" size="20" /></label>
</p>
<p>
<label for="user_login"><?php _e('Username') ?><br />
<input type="text" name="login_1578" id="user_login" class="input" value="<?php echo esc_attr(wp_unslash($user_login)); ?>" size="20" /></label>
</p>

Если вы меняли значение в первом пункте, то во втором поле input type=”text” значение name должно совпадать с тем, которое вы прописали в первом пункте.

Вот и все, после этого бот не сможет зарегистрироваться на вашем сайте. Разве что бота настроят конкретно под ваш сайт, но вы в любой момент можете изменить значение полей в пункте 1 и 2, и он вновь перестанет работать.

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

Метки: , , , Дата 11.07.2014
Хотите подобный функционал, верстку либо помощь в настройке вашего сайта?
Свяжитесь со мной

Оставить отзыв

(обязательно)

(обязательно)


Наши друзья
- ARTtime - Блог о Photoshop и Дизайн
- Блог о дизайне и арте
Реклама