javascript代码,以防止提交表单

问题描述:

我需要一个javascript代码来防止bot提交表单。 但我需要在JavaScript客户端代码工作就像CAPTCHA但不调用服务器javascript代码,以防止提交表单

谢谢

+0

[纯JavaScript/jQuery/HTML验证码]的可能重复(http://*.com/questions/3614467/pure-javascript-jquery-html-captcha) – 2012-03-14 11:32:05

+2

如果有人关闭JavaScript,该怎么办? – 2012-03-14 11:32:19

+0

Felix提到如果javascript被关闭,你会怎么做?欢迎来到机器人:D – 2012-03-14 11:33:10

这样做

<h1>Type the result in the input box : 1+1</h1> 

<input id="sum" type="text"/> 

之前提交你检查的值输入是2,然后提交它。

为了改进这种类型的代码,你可以在h1中随机创建这两个值,并将它们保存到var中,并在提交前检查输入和sum是否相同。

最直接,最简单的方法将是在飞行中添加或编辑表单数据当按钮被实际点击:

<input type="hidden" name="SubmittedByHuman" value="NO" /> 
<input type="submit" value="Submit me" onclick="this.form.elements['SubmittedByHuman'] = 'YES';" /> 

到这一点,在服务器端检查表单元素叫值“ SubmittedByHuman“ - 如果它是”否“,则意味着绕过了提交按钮 - 或者正如人们在评论中正确提到的那样,用户确实点击了但已禁用了JavaScript。

我怀疑这是可能的,因为机器人足够复杂以绕过大多数事情。

请记住,机器人不打算在浏览器中打开网页,然后按提交。它可能会扫描页面寻找<form>,制作所有<input>字段的列表,然后执行包含每个字段所有数据的POST请求。

它不会运行任何JavaScript,或按任何按钮。你必须做检查服务器端。