蜜罐认为我是一个机器人,为什么?

时间:2014-04-13 03:54:20

标签: php validation honeypot

我使用简单的蜜罐

我的HTML

<input type="text" name="mail" id="mail">

我的CSS

#mail{display:none;}

我的PHP

if(isset($_POST["mail"])){
    $honeycomb_passed = "No";
} else {
    $honeycomb_passed = "Yes"; 
}

当我提交表格总是输出号码。根据我的理解,它应该输出是,对吧?问题在哪里?

由于

2 个答案:

答案 0 :(得分:0)

仅仅因为该字段隐藏在CSS中并不意味着它不会发送到服务器。 如果您不希望将电子邮件值发送到服务器 - 请尝试使用以下内容:

$( '输入[名称=邮件')除去();

从dom中删除元素

一定要包装:

$()就绪(函数(){});

如果你没有使用jQuery,请告诉我!

答案 1 :(得分:0)

你做错了。

工作蜜罐

HTML

<form>
 <input type="text" name="mail" id="mail">
 <input type="submit">
</form>
<style>
 #mail{display:none;}
</style>

<强> PHP

if($_POST && $_POST["mail"] != ""){
        die("Sorry, no robots");
}

它是如何运作的

表单中有隐藏字段。通常,机器人将尝试填充数据可用的任何表单字段,希望它不会被拒绝。提交该表单后,您的脚本将检测输入并死掉。如果一个人填写它,他们将看不到隐藏的输入(type = text style = display:none)并将其留空。因此,php将允许提交继续。

如果PHP脚本在检测到honeypot字段后立即死亡,那么您将自行保存cpu周期(因为无需合理地回复机器人)。

有关honeypot的更多信息,请参阅此问题: How do I add Honey pot fields to my forms?