WordPress: Защита от регистрации спам пользователей без использования Капчи

Защита блога от спам пользователей WordPressДобрый день дорогой друг. Сегодня я вновь установил wordpress, для нового сайта. И сразу возник вопрос: как быть с несуществующими пользователями, которые начнут пачками регистрироваться?

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

Я подменил поле для ввода логина на другое, а настоящее спрятал с помощью CSS:
[html] <div style="display: none;"></div>
[/html]

Принцип реализации: я добавил поле INPUT с другим именем «login_777» заменив старое «user_login«, сделав его скрытым с помощью CSS стиля. И ввел проверку на заполненность по средствам PHP. В результате человек открыв форуму регистрации ничего не заметит, а бот(робот) заполнит поле «user_login» которое пройдет проверку, будет вызвана ошибка регистрации.

Если хотите сильнее усложнить скрипт, то можете вместо имени «login_777» вписать любое другое не содержащее слово LOGIN.

Реализовываем защиту на практике.
За регистрацию в wordpress отвечает файл wp-login.php.
Ищем в нем данную строку, она находиться примерно в районе 500 строки.
[php] $user_login = $_POST[‘user_login’];
[/php]

Меняем ее на:

[php] $user_login = $_POST[‘user_login’];
if(!empty($user_login)) wp_die(‘Поле заполнено. Завершаем работу.’);
$user_login = $_POST[‘login_777’];
[/php]

Далее ищем поле ввода которое находиться чуть ниже :
[html] <p>
<label><?php _e(‘Username’) ?><br />
<input type="text" name="user_login" id="user_login" class="input" value="<?php echo esc_attr(stripslashes($user_login)); ?>" size="20" tabindex="10" /></label>
</p>
[/html] И меняем его(поле) на:
[html] <div style="display: none;">
<p>
<label><?php _e(‘Username’) ?><br />
<input type="text" name="user_login" id="user_login" class="input" value="<?php echo esc_attr(stripslashes($user_login)); ?>" size="20" tabindex="10" /></label>
</p>
</div>

<p>
<label><?php _e(‘Username’) ?><br />
<input type="text" name="login_777" id="user_login" class="input" value="<?php echo esc_attr(stripslashes($user_login)); ?>" size="20" tabindex="10" /></label>
</p>
[/html]

Ну вот и все. Защита хоть и не самая совершенная, но от автоматических регистраций вас защитит.
Если вы уже нахватали фантомных пользователей и хотите их удалить, то вам поможет плагин Clean Up Users.

Комментарии приветствуются.

Метки: нет меток

25 комментариев

Добавить комментарий для razraz Отменить ответ

Your email address will not be published. Required fields are marked *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.