0

我正在使用简单的蜜罐

我的 HTML

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

我的 CSS

#mail{display:none;}

我的 PHP

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

当我提交表单时,总是输出否。据我了解,它应该输出是,对吧?问题出在哪里?

谢谢

4

2 回答 2

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 脚本在检测到蜜罐字段后立即死亡,那么您正在为自己节省 cpu 周期(因为不需要合理地回复机器人)。

有关蜜罐的更多信息,请参阅此问题: 如何将蜜罐字段添加到我的表单?

于 2014-04-13T05:27:15.223 回答
0

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

$('input[name=email]').remove();

从 dom 中删除元素

一定要包装:

$().ready(函数(){});

如果您不使用 jQuery,请告诉我!

于 2014-04-13T04:07:49.493 回答