Javascript 我只希望我的表格是关键的,由我的客户给出具体的答案,如何?

Javascript 我只希望我的表格是关键的,由我的客户给出具体的答案,如何?,javascript,Javascript,我不想在我的网站上使用captacha。因此,我只希望我的客户以我创建的表单键入具体答案 例如=什么是3+4?我只希望字段是数字为7的键。例如,如果我的客户键入任何其他数字,然后是7,则该表格将不会提交,并会要求提供正确答案 我正在尝试使用spry小部件来执行此技巧,但即使在更改html代码后也多次失败 代码如下: 请提供答案 var sprytextfield4=new Spry.Widget.ValidationTextField(“sprytextfield4”,“text”,{min

我不想在我的网站上使用captacha。因此,我只希望我的客户以我创建的表单键入具体答案

例如=什么是3+4?我只希望字段是数字为7的键。例如,如果我的客户键入任何其他数字,然后是7,则该表格将不会提交,并会要求提供正确答案

我正在尝试使用spry小部件来执行此技巧,但即使在更改html代码后也多次失败

代码如下:


请提供答案
var sprytextfield4=new Spry.Widget.ValidationTextField(“sprytextfield4”,“text”,{minValue:7,maxValue:7,maxChars:1});

如果您想在客户端上使用javascript进行验证,下面是我使用的一种快速而肮脏的方法

注意:您仍然需要在服务器上验证相同的问题,以确保垃圾邮件发送者没有通过禁用Javascript来规避问题

jQuery

$('#submit').click(function (event) {
    var color = $('#color').val().toLowerCase();
    if (color != 'orange') {
        alert('incorrect');
    } else {
        alert('yay!');
        // submit the form
        // BUT DON'T FORGET TO VALIDATE input.color AGAIN ON THE SERVER.
    }
});


如果你的网站对垃圾邮件发送者的重要性很低。。。IE:不是StackOverflow或Redit,您通常可以通过这种类型的验证来避免收到垃圾邮件。如果您的站点成为攻击的直接目标,并且编写bot是为了规避这种极低级别的保护,那么您应该考虑使用许多预构建的验证码库中的一个,并实现服务器端和客户端验证。例如,我无法忍受图像验证码,因此我更喜欢一种侵入性较小的“人工验证”方法。

请注意,客户端验证,即在浏览器中检查字段值,并不等同于在服务器端验证的验证码。您这样做是错误的。我强烈建议您不要使用JavaScript验证码,因为它将完全删除验证码的点,而验证码将在服务器端进行验证。@NabeelSheikh JavaScript验证码与服务器端验证配合使用时效果很好。@ChaseFlorell,虽然为true,用户没有表示他们理解这个想法。@ChaseFlorell Asker说,如果答案是错误的,就不应该提交表格。这意味着JS验证而不是服务器端。现在,机器人只需使用
标记的
.innerHTML
,然后找到
橙色
。对于99%的网站,机器人的程序不适合挖掘角落案例。。。他们尝试提交,然后继续。如果你需要更高的安全性,因为你在互联网上确实有一些重要的东西,你可以使用几十个预先构建的验证码之一,并结合提供的服务器端验证过程。这不是一个需要改造的轮子。如果你希望机器人不会攻击你的网站,不要使用验证码。但是验证码是用来测试客户是否是人的,所以不要使用损坏的验证码!!阅读,尤其是“验证码解决方案不得存储在客户端”