Форма PHP - с проверкой honeypot
У меня есть ниже, что работает хорошо, но открыто для спам-ботов. Я хочу поставить honeypot, а не капчу. Приведенный ниже код работает с проверкой имени, электронной почты, сообщения, но я не могу заставить его работать с honeypot.
Кто-нибудь может взглянуть на код "honeypot" и подсказать, как это исправить?
Я хотел бы, чтобы форма давала $success2 = "Спам запрещен", который действует так, как форма была отправлена, но фактически не отправляет форму.
Спасибо
Форма:
<form id="contactform" action="send2.php" method="post"><div id="success"></div><div id="error"></div>
<label for="name">Name:</label><input type="text" id="name" name="name"/>
<label for="email">Email:</label><input type="text" id="email" name="email"/>
<label for="message">Message:</label><textarea id="message" name="message" rows="12" cols="20"></textarea>
<label id="robot">Are you a robot?</label><input type="text" name="robot" id="robot">
<input type="submit" value="Send your message" id="send" />
</form>
PHP: можно найти здесь: http://goviewmy.com/contact/showcode/
Извините, но я не могу получить код PHP для публикации в этом вопросе, поэтому я прикрепил ссылку на него.
Спасибо
1 ответ
Honeypots работают лучше всего, если у них есть имя поля, которое звучит правдоподобно, их также следует скрыть, используя javascript для изменения css после загрузки страницы. (Большинство) боты не имеют включенного JavaScript, поэтому они не могут обработать, что это поле не должно быть заполнено.
Я использую что-то вроде этого:
<div class='req'>
<label for='website'>Leave blank</label>
<input type='text' name='website'>
</div>
Скройте это с помощью jquery:
$(document).ready(function(){
$(".req").hide();
});
отклонить его на стороне сервера, если поле заполнено чем-то вроде этого
if($_POST['website'] != ''){
echo "It appears you are a bot!";
}
else{
//process the rest of the form
}