У меня есть ниже, потому что это хорошо работает, но открыто для спам-ботов. Я хочу положить в honeypot, а не капчу. Код ниже работает с проверкой имени, сообщения электронной почты, сообщения, но я не могу заставить его работать с honeypot.
Может ли кто-нибудь взглянуть на код «honeypot» и рассказать мне, как его исправить?
Я хотел бы, чтобы форма давала $ success2 = «No Spamming allowed», которая действует как форма, была отправлена, но фактически не представляет форму.
благодаря
Форма:
<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-код для публикации в этом вопросе, поэтому я добавил ссылку на него.
благодаря
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 }