Форма контактов в Wordpress

Советы защиты от спама в wordpress

Пользователи Wordpress для отправки сообщений с сайта используют плагин «WP-ContactForm». Для более эффективной защиты к этому плагину прилепляется и капча. Однако, капча не всегда защищает от спама и рассылка легко ее обходит. Усложнение рисунка капчи раздражает посетителей сайта. Наиболее простое решение в борьбе со спамом – это добавление дополнительного поля с контрольным вопросом. При относительной простоте вопроса и ответа, спам-робот не справляется с полем.

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

Переделка плагина «WP-ContactForm» под силу любому пользователю Wordpress и заключается в изменении нескольких строк скрипта php. В результате, в форме контактов появляется дополнительное поле, где необходимо ввести ответ на вопрос, который задал владелец сайта. При необходимости вопрос и ответ можно с легкостью поменять, чем достигается индивидуальность защиты от спама.

Чтоб добиться требуемого результата, необходимо подкорректировать скрипт php, только один файл плагина - wp-contactform.php, который располагается в папке wp-contact-form. Сохранить его в кодировке сайта и перезаписать на сервер. Откройте его с помощью блокнота и найдите строки

if(!(isset($_POST['wpcf_stage']))) {return false;} // Shortcircuit
 $_POST['wpcf_your_name'] = htmlentities(stripslashes(trim($_POST['wpcf_your_name'])), ENT_COMPAT, ‘UTF-8);
 $_POST['wpcf_email'] = htmlentities(stripslashes(trim($_POST['wpcf_email'])), ENT_COMPAT, ‘UTF-8);
 $_POST['wpcf_website'] = htmlentities(stripslashes(trim($_POST['wpcf_website'])), ENT_COMPAT, ‘UTF-8);
 $_POST['wpcf_msg'] = htmlentities(stripslashes(trim($_POST['wpcf_msg'])), ENT_COMPAT, ‘UTF-8);
 
global $wpcf_strings;
 $ok = true;

и замените на следующие

if(!(isset($_POST['wpcf_stage']))) {return false;} // Shortcircuit
 if (!strcmp($_POST['wpcf_spam'], “привет”))
 {
 $_POST['wpcf_your_name'] = htmlentities(stripslashes(trim($_POST['wpcf_your_name'])), ENT_COMPAT, ‘UTF-8);
 $_POST['wpcf_email'] = htmlentities(stripslashes(trim($_POST['wpcf_email'])), ENT_COMPAT, ‘UTF-8);
 $_POST['wpcf_website'] = htmlentities(stripslashes(trim($_POST['wpcf_website'])), ENT_COMPAT, ‘UTF-8);
 $_POST['wpcf_msg'] = htmlentities(stripslashes(trim($_POST['wpcf_msg'])), ENT_COMPAT, ‘UTF-8);
 
global $wpcf_strings;
 $ok = true;
 }

Обратите внимание на строку, приведенную ниже. Именно в ней задается условие сравнения введенного значения в форме посетителем с заданным значением владельца сайта. В этом скрипте php сохраненное значение - слово «привет». Чтоб изменить правильный ответ, замените это слово на нужное.

if (!strcmp($_POST['wpcf_spam'], “привет”))

Далее необходимо найти строки

‘name’ =><div class=”contactright”><input type=”text” name=”wpcf_your_name” id=”wpcf_your_name” size=30″ maxlength=50″ value=”‘ . $_POST['wpcf_your_name'] . ‘” /> (. __(’обязательно’, ‘wpcf’) .)</div>,
 ‘email’ =><div class=”contactright”><input type=”text” name=”wpcf_email” id=”wpcf_email” size=30″ maxlength=50″ value=”‘ . $_POST['wpcf_email'] . ‘” /> (. __(’обязательно’, ‘wpcf’) .)</div>,
 ‘msg’ =><div class=”contactright”><textarea name=”wpcf_msg” id=”wpcf_msg” cols=35″ rows=8>. $_POST['wpcf_msg'] .</textarea></div>,
 ‘error’ =>

и заменить на следующие

‘name’ =><div class=”contactright”><input type=”text” name=”wpcf_your_name” id=”wpcf_your_name” size=30″ maxlength=50″ value=”‘ . $_POST['wpcf_your_name'] . ‘” /> (. __(’обязательно’, ‘wpcf’) .)</div>,
 ‘email’ =><div class=”contactright”><input type=”text” name=”wpcf_email” id=”wpcf_email” size=30″ maxlength=50″ value=”‘ . $_POST['wpcf_email'] . ‘” /> (. __(’обязательно’, ‘wpcf’) .)</div>,
 ’spam’ =><div class=”contactright”><input type=”text” name=”wpcf_spam” id=”wpcf_spame” size=30″ maxlength=50″ value=”‘ . $_POST['wpcf_spam'] . ‘” /> (. __(’защита от спама’, ‘wpcf’) .)</div>,
 ‘msg’ =><div class=”contactright”><textarea name=”wpcf_msg” id=”wpcf_msg” cols=35″ rows=8>. $_POST['wpcf_msg'] .</textarea></div>,
 ‘error’ =>

И вновь ищем строки

<form action=”‘ . get_permalink() . ‘” method=”post”>
 <div class=”contactleft”><label for=”wpcf_your_name”>. __(’Ваше имя:, ‘wpcf’) .</label></div>. $wpcf_strings['name'] .<div class=”contactleft”><label for=”wpcf_email”>. __(’Ваш почтовый ящик:, ‘wpcf’) .</label></div>. $wpcf_strings['email'] .<div class=”contactleft”><label for=”wpcf_website”>. __(’Ваш вебсайт:, ‘wpcf’) .</label></div><div class=”contactright”><input type=”text” name=”wpcf_website” id=”wpcf_website” size=30″ maxlength=100″ value=”‘ . $_POST['wpcf_website'] . ‘” /></div>
 <div class=”contactleft”><label for=”wpcf_msg”>. __(’Ваше сообщение:, ‘wpcf’) .</label></div>. $wpcf_strings['msg'] .<div class=”contactright”><input type=”submit” name=”Submit” value=”‘ . __(’Отправить’, ‘wpcf’) . ‘” id=”contactsubmit” /><input type=”hidden” name=”wpcf_stage” value=”process” /></div>
 </form>

и заменяем на эти строки

<form action=”‘ . get_permalink() . ‘” method=”post”>
 <div class=”contactleft”><label for=”wpcf_your_name”>. __(’Ваше имя:, ‘wpcf’) .</label></div>. $wpcf_strings['name'] .<div class=”contactleft”><label for=”wpcf_email”>. __(’Ваш почтовый ящик:, ‘wpcf’) .</label></div>. $wpcf_strings['email'] .<div class=”contactleft”><label for=”wpcf_spam”>. __(‘Введите слово привет ‘, ‘wpcf’) .</label></div>. $wpcf_strings['spam'] .<div class=”contactleft”><label for=”wpcf_msg”>. __(’Ваше сообщение:, ‘wpcf’) .</label></div>. $wpcf_strings['msg'] .<div class=”contactright”><input type=”submit” name=”Submit” value=”‘ . __(’Отправить’, ‘wpcf’) . ‘” id=”contactsubmit” /><input type=”hidden” name=”wpcf_stage” value=”process” /></div>
 </form>

Процедура изменения скрипта php закончена. Может показаться, что в файле происходит довольно большое количество замены текста, на самом деле в каждый замененный блок текста добавляется одна строка, которая будет выводить дополнительное поле для вопроса на форме и отправлять его для сравнения с исходным словом.



Оставьте свой комментарий

Навигатор по сайту
Яндекс.Метрика Подпишись на новости с сайта
Работа в сети
Работа в интернете
Платежные системы
Социальные сети
Приколы интернета
Социальные сети
Электронная почта
Поисковые ресурсы
Уроки начинающему
Связь
Казахтелеком
Мобильная связь
Новости связи
Провайдеры и хостинг
Монополия Мегалайн
Интернет от Билайн
Скорость интернета
Хостинг для сайтов
Компьютеры
Защита компьютера
Компьютерные новинки
Современные флешки
Беспроводной wi-fi
Диски DVD
Энергия
Экономим энергию
Аккумуляторы и батарейки
Бытовая техника
Новинки техники
Роботы в быту
Выбираем телевизор
Обсуждаем утюги
Стиральная машина
Все о фотоаппарате
Встречаем холодильник
Видеонаблюдение
GPS навигация
Программы
Полезные программы
Программы microsoft
Скрипт php для сайтов
Высокие технологии
Информационные технологии
Нанотехнологии
Высокие технологии
Познавательно
Государство и общество
Обсуждаем чиновников
Частное мнение
Налоги и платежи
Правила дорожного движения
Авторские права
Разное
Инструмент для ремонта
Советы по ремонту