我使用简单的蜜罐
我的HTML
<input type="text" name="mail" id="mail">
我的CSS
#mail{display:none;}
我的PHP
if(isset($_POST["mail"])){
$honeycomb_passed = "No";
} else {
$honeycomb_passed = "Yes";
}
当我提交表格总是输出号码。根据我的理解,它应该输出是,对吧?问题在哪里?
由于
答案 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?