我需要一个javascript代码来阻止机器人提交表单。 但我需要一个javascript中的客户端代码,它像CAPTCHA一样工作但不调用服务器
谢谢
答案 0 :(得分:3)
最简单直接的方法是在实际点击按钮时即时添加或编辑表单数据:
<input type="hidden" name="SubmittedByHuman" value="NO" />
<input type="submit" value="Submit me" onclick="this.form.elements['SubmittedByHuman'] = 'YES';" />
有了这个,在服务器端检查名为“SubmittedByHuman”的表单元素的值 - 如果它将是“NO”则意味着绕过了提交按钮 - 或者正如人们在评论中提到的那样,用户确实点击了但已禁用的JavaScript。
答案 1 :(得分:1)
做类似
的事情<h1>Type the result in the input box : 1+1</h1>
<input id="sum" type="text"/>
在提交之前,检查输入中的值是否为2,然后提交。
要改进这种类型的代码,您可以在h1中随机创建这两个值并将它们保存到var中,然后在提交之前检查输入和总和是否相同。
答案 2 :(得分:1)
我怀疑这是可能的,因为机器人足够精通以绕过大多数事情。
请记住,机器人不会在浏览器中打开网页并按提交。它可能会扫描页面中的<form>
,列出所有<input>
个字段,然后执行POST请求,其中包含每个字段的所有数据。
它不会运行任何JavaScript,或按任何按钮。你必须在服务器端进行检查。