首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >蜜罐实现

蜜罐实现
EN

Stack Overflow用户
提问于 2013-05-31 15:55:38
回答 1查看 15.9K关注 0票数 10

试图从在线表单中过滤垃圾邮件。我有一个带有输入的隐藏的div。这样做的想法是,如果有什么东西进入到字段中,表单将将用户标识为一个机器人,并拒绝提交。在尝试实现此方法之后,机器人仍在通过。我不太熟悉javascript (或者垃圾邮件过滤)--下面是我正在做的工作:

html (在表单中):

代码语言:javascript
复制
<form action="#" method='post' id='vsurvey' name='defer'>
<div id="hp-div">
    If you see this, leave this form field blank 
    and invest in CSS support.
    <input type="text" name="question_20579" value="" />
</div>
<input type="submit" value="Submit Request" />
</form>

css:

代码语言:javascript
复制
#hp-div { display: none }

联署材料:

代码语言:javascript
复制
<script type="text/javascript" charset="ISO-8859-1" src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>

<script type="text/javascript" charset="ISO-8859-1" src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/jquery.validate.min.js"></script>

<script type="text/javascript">
if(!String.IsNullOrEmpty(Request.Form["question_20579"]))
  IgnoreComment();
</script>

<![if !IE]>
    <script type="text/javascript"> 
        $(document).ready(function(){
            $("#vsurvey").validate({
                invalidHandler: function(form, validator) {
                    var errors = validator.numberOfInvalids();
                    if (errors) {
                        var message = errors == 1 
                            ? 'Oops! You missed 1 field. It has been highlighted' 
                            : 'Oops! You missed ' + errors + ' fields. They have been highlighted below';
                        $("div.alert span").html(message);
                        $("div.alert").show();
                    } else {
                        $("div.alert").hide();
                    }
                },
                errorPlacement: function(error, element) { 
                    return true; 
                }
            })
        }); 
    </script>
<![endif]>
EN

回答 1

Stack Overflow用户

发布于 2013-10-09 16:06:47

在我看来,蜜罐应该包括以下所有内容:

  • 由CSS隐藏的字段
  • 由JavaScript隐藏的字段
  • 需要空白输入的字段
  • 需要特定输入的字段

例如:

代码语言:javascript
复制
<div class="input-field">
  Please leave this blank
  <input type="text" name="contact" value="" />
</div>
<div class="text-field">
  Please do not change this field
  <input type="text" name="email" value="your@email.com" />
</div>

使用CSS,隐藏第一个字段:

代码语言:javascript
复制
.input-field { display: none; }

使用jQuery,隐藏第二个字段:

代码语言:javascript
复制
$('.text-field').hide();
// or
$('.text-field').addClass('hide');

然后在PHP中进行几个非常简单的检查:

代码语言:javascript
复制
if($_POST['contact'] == '' && $_POST['email'] == 'your@email.com') {
  // Not a bot
}
票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16861325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档