另一种防止垃圾邮件的方法

Another spambot prevention method

本文关键字:方法 另一种      更新时间:2023-09-26

我知道以前有人问过这个问题,但是我没有在其他地方看到下面的解决方案。

我有一个有很多形式的网站,我正在寻找一种方法,而不需要为每个形式编辑php,以抵御机器人。

我建议使用这个,但是我在想如果有人有任何想法或理由为什么我不应该使用它?

    <form method="POST" action="enableJavascript.html">
        <!-- I change the action to a page to tell the user 
              that javascript is required-->
        <input name="action" value="contact.php" type="hidden"/>
        <!-- and add an input that contains the original action-->

        <input name="name"/>
        <input name="email"/>
        <input type="submit" value="submit"/>
    </form>

下面是javascript/jQuery处理发送表单:

        $(function() {
            $('form').submit(function(e) {
                var $this = $(this);
                if (e.originalEvent) { // only change the action if the form was 
                                       // submitted via user input
                    e.preventDefault();
                    $this.attr('action', $('input[name=action]',$this).val());
                    $this.submit();
                }
            });
        });

我想这将失败,如果机器人是已知的"点击"按钮,但我不知道如果是这种情况?

这真的无法阻止机器人,原因如下:机器人将进入并从表单中抓取字段名,然后制作它们自己的POST请求。他们不会看到,更不用说服从你的JavaScript事件停止。

你应该做的是制作一个AJAX页面,并让表单以这种方式提交它。这使得机器人更难填写和提交,因为没有<form action="page.php">可以遵循。另一种方法是安装验证码,比如ReCaptcha