首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果我的表单使用ajax提交方法(不需要重新加载),我如何阻止垃圾邮件?

问如果我的表单使用ajax提交方法(不需要重新加载),我如何阻止垃圾邮件?
EN

Stack Overflow用户
提问于 2011-10-02 16:44:45
回答 2查看 4.4K关注 0票数 3

我有一个表单,其中使用ajax的数据提交。下面是html:

代码语言:javascript
复制
<form>
    <input type="text" id="content" name="content">
    <input type="submit" class="button" name="button">
</form>    

和JavaScript (jQuery):

代码语言:javascript
复制
$(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;
    });
});

这一切都很好,但有一个大问题:我无法阻止垃圾邮件。我上一次使用垃圾邮件过滤器是在PHP中(我使用了一个隐藏的输入,如果填满了PHP文件,则将其签入)。但那完全是用PHP写的,没有JS。

所以我的问题是:我怎样才能阻止这个表单提交中的垃圾邮件?另外,我可以在update_data.php文件中创建一条if语句吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-02 17:12:18

如果你不喜欢在这里添加验证码,这是一个很好的解决方案:

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

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

票数 5
EN

Stack Overflow用户

发布于 2011-10-02 16:53:29

第一个快速答案是在表单中放入一些东西,可以帮助您了解提交表单的用户是否是机器人。

当然是验证码,或者只是一个机器人不容易回答的问题。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7625383

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档