标准方法是有一个隐藏的文本字段。这是一个 type=text 的字段,但应用了 CSS 规则,因此它是不可见的。
标记:
<input type="text" name="put_some_innocuous_name_here" class="some_innocuous_css_class_name_here" value="" />
CSS:
input.some_innocuous_css_class_name_here {
display: none;
}
PHP:
if ((isset ($_POST ['put_some_innocuous_name_here']))
&& ($_POST ['put_some_innocuous_name_here'] != ''))
{
throw new Exception ('Suspected bot!');
}
其工作方式非常简单。普通用户永远不会看到您隐藏的文本字段,因为 CSS 规则会将其隐藏。因此,真正的用户永远不会填写它。
但是,大多数垃圾邮件机器人并不了解 CSS。他们只是解析表单标记,然后看到一个似乎需要填写的文本字段。所以他们用一些随机数据填写了这个字段。因为一个普通用户不应该看到的表单域已被填写,这意味着您可能正在与机器人打交道。
不要为此使用 input type=hidden,因为大多数垃圾邮件机器人足够聪明,可以注意到它们并忽略它们。