Добрый день дорогой друг. Сегодня я вновь установил 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.
Комментарии приветствуются.
Поставил Captcha Code. Посмотрю теперь, как поможет.
Настройка самая наипростейшая
очень нужная статья) спасибо
Добрый день, большое спасибо за статью! Всё сделал, как вы описываете и уже более суток нет не одной спам регистрации!!!
На самом деле есть более простой способ, поставить плагин Captcha Code. Указав в настройках, что капча только для тех кто регистрируется.
Добрый день! Скажите пожалуйста, нет ли у вас статьи о настройках данного плагина «Captcha Code»? Спасибо!
Нет я не делал ее. Там настолько просто, что описывать наверно не имеет смысла. Скачиваете, активируете и включаете в его настройках только один параметр: Код подтверждения в форме:ДА
Из за ваших гребаных кодов база данных полетела.
Как она могла полететь, если вы редактируете только PHP файлы и пишите код в котором нет ни одного запроса к базе.
Благодарю за полезную информацию! Пересмотрел около десятка различных вариантов защиты блога, без плагина. Остановился на данном способе, произвёл установку, протестировал оставив комментарий из другого браузера всё устраивает. Надеюсь, что спама больше не будет!
Все сделал, как написано в статье — теперь вообще никто не может зарегаться, потому как выдает ошибку — «Поле заполнено. Завершаем работу.»
Не работает этот код. После его применения страница входа не отображается. Может от того что у меня в файле wp-login вместо stripslashes($user_login) присутствует wp_unslash($user_login).
На сколько я понимаю wp_unslash() используется для удаления слэшей, а wp_unslash($user_login) удаляет экранирование символов. У них разный функционал.
Давно думала, как избавиться от ботов, даже регистрацию на блоге закрыла. потому как от ботов реально житья не было, по 3-4 сотни за сутки регистрировались, теперь попробую этот способ.
Отличная идея, т.к. по ряду причин не устанавливаю плагины. Этот способ защиты от регистрации ботов прост и, надеюсь, эффективен. Если сработает на одном сайте, установлю на других.
Респект автору =)
У тебя в условии ошибка:
Если подмену не заполнили, выбиваем ошибку. Так же никто не зарегистрируется никогда. Кроме спам — ботов.
Регистрация работает. Укажи код который тебя смущает.
Автору: хочу поставить такиеже комментарии как у вас на сайте, посоветуйте плагин :idea:
AKISMET.
Буду проблемы пишите, поставлю и активирую. За скромную сумму.
Попробуй Securitron, botы дохнут как мухи :).
Самая простая защита — самая эффективная!!! Отличный пост!!!
Спасибо. Сейчас проверку проходит, на блоге пока тишина.
О, здорово! Теперь буду знать, как защитить свой ресурс!
Великолепная,а главное очень нужная статья) :roll:
Пользуйся на здоровье!!!