如果我的表单使用ajax提交方法(没有重新加载),我怎么能阻止垃圾邮件?

Ako*_*kos 3 javascript php forms ajax jquery

我有一个使用ajax进行数据提交的表单.这是html:

<form>
    <input type="text" id="content" name="content">
    <input type="submit" class="button" name="button">
</form>    
Run Code Online (Sandbox Code Playgroud)

和JavaScript(jQuery):

$(function() {
    //Update Message...
    $(".button").click(function() {
        var boxval = $("#content").val();
        var dataString = 'content='+ boxval;

        if(boxval=='')
        {
            alert("Please Enter Some Text");
        }
        else
        {
            $("#flash").show();
            $("#flash").fadeIn(400).html('<img src="ajax-loader.gif" align="absmiddle"> <span class="loading">Loading Comment...</span>');

            $.ajax({
                type: "POST",
                url: "update_data.php",
                data: dataString,
                cache: false,
                success: function(html){
                    $("ol#update").prepend(html);
                    $("ol#update li:first").slideDown("slow");
                    document.getElementById('content').value='';
                    document.getElementById('content').focus();
                    $("#flash").hide();
                }
            });
        } 
        return false;
    });
});
Run Code Online (Sandbox Code Playgroud)

一切正常,但存在一个大问题:我无法阻止垃圾邮件.上次我使用垃圾邮件过滤器时,它是在PHP中(我使用了隐藏的输入,然后在PHP文件中检查它是否已填写).但那完全是PHP,没有JS.

所以这是我的问题:如何在此表单提交中阻止垃圾邮件?另外,我可以ifupdate_data.php文件中创建一个语句吗?

dar*_*pet 5

我不想在这里添加Captcha是一个很好的解决方案:

首先添加在表单中用css隐藏的输入.如果机器人提交表单,隐藏字段将由机器人填充一些值.在正常情况下,人类不会看到它并且将是空的.在机器人的情况下,你会检查它,如果它有一些价值,你将丢弃.此外,您需要在文档就绪时添加带有javascript的输入(也用css隐藏).如果它是浏览器,它将执行javascript并将在表单中插入输入.如果它是机器人,那么机器人不执行js并且js不会生成输入字段,并且在服务器端你将看到没有这样的字段,你将丢弃该请求.

因此,在服务器端,您将检查第一个隐藏字段是否有值或第二个隐藏字段是否存在丢弃请求.