有没有办法使用Javascript健壮进行验证?

时间:2011-01-12 20:57:00

标签: javascript validation

我看到所有关于如何使用Javascript进行输入验证的教程(例如检查电子邮件是否有效),但没有任何东西阻止某人加载表单,禁用Javascript,然后提交错误的输入通过测试。

我试着想办法让你克服这个问题,而我能想到的最好的事情就是拥有一个隐藏的输入字段,并在输入验证后使用Javascript在其中插入一个特殊值。然后,如果服务器发现它没有插入,它可以告诉某些事情是错误的。

但是,再一次,js文件被发送给用户,他们可以看到HTML,也不应该太难以解决这个问题。

我越是想到它越多我就越确定使用javascript验证内容是没有意义的,因为无论如何你都需要在服务器端重复测试,这就引出了人们为什么甚至打扰Javascript的问题。验证工具。

我错过了什么吗?

6 个答案:

答案 0 :(得分:2)

虽然服务器端验证是必须的,但绝对建议使用Javascript进行客户端验证。

  • 互动反馈。用户可以看到他的输入是否有效的即时反馈。
  • 限制页面刷新。服务器端验证需要对服务器进行查询,而客户端则不需要。大多数验证“失败”是由于遗漏字段或无效数据导致的,可通过javascript验证轻松识别。

有许多库可以帮助添加使用javascript的一般客户端验证。他们中的大多数人几乎不需要努力融入表格。

答案 1 :(得分:1)

JavaScript允许您在没有额外网络负载和等待时间的情况下告知用户错误和误解。当然,它不会阻止提交故意错误甚至是错误的数据,您需要在服务器端执行二次检查。

答案 2 :(得分:1)

使客户端验证健壮的唯一方法是在服务器上重复它。

人们为客户端验证而烦恼的原因是用户体验之一。客户端验证提供即时反馈 - 服务器端验证不会。此外,在高负载情况下,通过不允许发布无效表单来帮助减轻服务器的负担。

答案 3 :(得分:1)

客户端验证的重点是向用户提供快速反馈,我不想因为输入的电话号码错误或错过其他内容而点击提交100次。

所有客户端验证确实提供了更好的用户体验,因为最终您可以从不信任客户端。

答案 4 :(得分:1)

客户端验证消除了对服务器进行网络往返的需要,并改善了用户体验。

服务器端验证可保护数据完整性。永远不要相信用户,也很少信任程序员。

答案 5 :(得分:0)

JavaScript验证永远不可信任。用户友好的方式告诉用户他失败了。始终可以使用http请求添加无效数据。 JavaScript正在客户端计算机上运行。客户不可信任。他们犯错误,做你没想到的愚蠢的东西绕过验证,禁用javascript让他们感到安全,创建自定义的http请求,因为他们感觉很酷,他们可以“破解”等等。 用户是愚蠢,邪恶,笨拙,不可靠,有时甚至比你聪明。