我的网络表单中的蜜罐似乎并没有阻止机器人提交



我的网页上有一个表单。我经常收到来自我认为是网络机器人的空提交。为了阻止这种情况,我遵循了这篇帖子中被接受的答案的建议,并制作了一个"蜂蜜陷阱"来阻止自动提交。

我不确定我是否做错了什么,但我仍然每天收到一次空的投稿。

我做错了什么吗?或者还有其他原因可以让这种方法奏效吗?

我的HTML:

<form action="post.php" method="post">
<label for="email"></label>
<input type="email" placeholder="Enter your email address..."
name="email" required>
<input type="checkbox" name="contact_me_by_fax_only" value="1" style="display:none !important" tabindex="-1" autocomplete="off">
<button type="submit" class="signupbtn">Sign Up</button>
</form>

我的PHP:

<?PHP
$honeypot = FALSE;
$email = $_POST["email"];
if (!empty($_REQUEST['contact_me_by_fax_only']) && (bool) $_REQUEST['contact_me_by_fax_only'] == TRUE) {
$honeypot = TRUE;
log_spambot($_REQUEST);
# treat as spambot
} else {
mail("my@email.com", "Message from $email", "message here");
header('Location: thanks.html');
}
?>

最好将isset()与复选框一起使用,而不是使用!empty()。您的复选框的值为1,因此它被视为不为空。

复选框的工作方式是,如果选中了它,那么它就是"设置"的。

这更多是一个逻辑问题。

如果你想阻止机器人自动执行你的代码,请检查复选框是否"未"设置/单击,然后从那里进行处理。

逻辑:

  • 如果复选框被选中,则说明有人执行了该操作,然后继续
  • 检查需要有人输入的空字段。

  • 如果一切顺利,请继续邮寄。

  • 如果没有选中复选框,请停止脚本继续执行,并可能显示有关它的消息并将其记录下来。

您也可以将复选框设为"必需",但使用服务器端方法来处理所有复选框。

相关内容

最新更新