我有一个表单,其中使用ajax的数据提交。下面是html:
<form>
<input type="text" id="content" name="content">
<input type="submit" class="button" name="button">
</form> 和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;
});
});这一切都很好,但有一个大问题:我无法阻止垃圾邮件。我上一次使用垃圾邮件过滤器是在PHP中(我使用了一个隐藏的输入,如果填满了PHP文件,则将其签入)。但那完全是用PHP写的,没有JS。
所以我的问题是:我怎样才能阻止这个表单提交中的垃圾邮件?另外,我可以在update_data.php文件中创建一条if语句吗?
发布于 2011-10-02 17:12:18
如果你不喜欢在这里添加验证码,这是一个很好的解决方案:
首先,在表单中添加使用css隐藏的输入。如果机器人提交表单,隐藏字段将由机器人填充一些值。在正常情况下,人类不会看到它,并将是空的。在机器人的情况下,你将检查它,如果它有一些值,你将丢弃它。此外,您还需要添加输入(也隐藏与css)与javascript文档就绪。如果是浏览器,它将执行javascript并在表单中插入输入。如果它是一个机器人,那么机器人不会执行js,也不会有js生成的输入域,在服务器端,你会看到没有这样的域,你会丢弃这个请求。
因此,在服务器端,您将检查第一个隐藏字段是否有值,或者第二个隐藏字段是否不存在,丢弃请求。
发布于 2011-10-02 16:53:29
第一个快速答案是在表单中放入一些东西,可以帮助您了解提交表单的用户是否是机器人。
当然是验证码,或者只是一个机器人不容易回答的问题。
https://stackoverflow.com/questions/7625383
复制相似问题