2013-07-29 2 views
3

아래 코드는 잘 작동하지만 스팸 봇용입니다. 나는 captcha가 아니라 허니팟에 넣고 싶다. 아래 코드는 이름, 전자 메일, 메시지, 에 대한 유효성 검사와 함께 작동하지만 허니팟으로 작동시키지 못합니다.PHP 폼 - 유효성 검사 허니팟 포함

누구나 "허니팟"코드를보고 해결 방법을 알려 줄 수 있습니까?

양식에 $ 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 코드를 얻을, 그래서 수 없습니다 는 여기에서 찾을 수 있습니다 그것에 대한 링크가 첨부되었습니다. 그들은, 그들은 또한 페이지가로드 후 CSS를 변경하는 자바 스크립트를 사용하여 숨겨진해야 합법적 인 사운드 필드 이름이있는 경우

덕분에

+0

수정처럼 뭔가를 작성하는 경우

$(document).ready(function(){ $(".req").hide(); }); 

는 서버 측 그것을 거부 :

<div class='req'> <label for='website'>Leave blank</label> <input type='text' name='website'> </div> 

숨기기를 jQuery로 어떻게? 당신은 우리에게 그것이 어떻게 깨 졌는지 말해주지 않았습니다 ... –

+0

당신의 문제를 풀기위한 답을 줄 수는 없지만,이 게시물은 도움이 될 것입니다. http://stackoverflow.com/a/9447733/1415724 ** 및 * * http://stackoverflow.com/questions/1577918/blocking-comment-spam-without-using-captcha –

+0

예 6을 참고하십시오. 내게도 매력처럼 작동합니다. http://forums.phpfreaks.com/topic/271026-please-help-a-noob-simple-honeypot/- 그냥 거기에'else {...}'를 추가하십시오. –

답변

11

허니팟 가장 잘 작동합니다. (대부분의) 봇은 javascript를 사용할 수 없으므로이 필드를 입력하지 말아야한다는 것을 처리 할 수 ​​없습니다.

나는 이런 식으로 뭔가를 사용 : 필드가이

if($_POST['website'] != ''){ 
    echo "It appears you are a bot!"; 
} 
else{ 
//process the rest of the form 
} 
+0

감사합니다. 예, 로봇 이름을 변경하고 숨기려고했지만 인간으로 테스트 해 보았습니다. if ($ post) PHP를 사용할 때 Ajax 오류 팝업이 나타납니다. – mewebs

+2

30 초 동안 강제 sleep()을 사용하여 bot을 느리게 만든 다음 응답을 echoed하고 종료하는 것을 제외하고는 비슷한 것을 구현했습니다. –

+0

조금 늦었습니다.'return' 또는'die'를 사용할 수 있고'type = hidden '으로'input'을 쓸 수없는 이유는 무엇입니까 –