以Ajax形式验证客户端,服务器端或两者的表单?

以Ajax形式验证客户端,服务器端或两者的表单?

问题描述:

我正在开发这个应用程序,它作为一个非常基本的Ajax窗体,我目前正在验证通过jQuery与它的默认验证插件的表单输入。以Ajax形式验证客户端,服务器端或两者的表单?

我想知道如果我应该在提交表单后做服务器端验证,或者只是忽略并假定一切都正确,因为客户端验证成功了吗?

有两件事情要记住,虽然:

1)虽然形式能够不使用JavaScript提交,服务器端脚本不会处理这种行为。我的意思是,数据将被处理并插入到数据库中,但不会返回任何内容,因此用户在提交表单后会看到空白页面。此外,这个应用程序在JavaScript上很强大,没有它就无法工作(顺便说一下,这是一个Facebook应用程序)。

2)现在,应用程序非常简单,只有2种选择。一个是文本框,它是唯一被验证的东西(它是必需的,并且只能是数字)。另一个选项是一组单选按钮,默认情况下它们中的一个被选中,所以即使用户忘记了这个选项,也会选择一些选项。它基本上是这个选项的默认值(尽管文本框没有默认值)。

服务器端:必要。总是这样做。

客户端:不错。让您的应用更具响应能力。可选的。

+0

为什么必要?假设客户端发生了一些事情,也许用户正在篡改应用程序,并且服务器端验证失败,那么我应该返回到客户端?我的意思是,客户端验证在每个字段旁边显示内联错误消息,我该如何处理服务器端响应? – 2010-09-11 18:49:43

+0

>>我该如何处理服务器端响应?那么,我希望你检测到服务器端的错误,并确保不写入数据库。然后记录它,以便您可以修复客户端(如果客户端有验证错误)。也许你可以在客户页面的顶部显示服务器端错误(也许他们可以做些什么或给你打电话)。 – 2010-09-20 15:01:24

总是验证服务器端!除了安全问题,可能不会在这方面发挥很大的作用,还有其他事情要坚持:当我提出类似的“两位数”场“Q8”(绕过客户端验证

  • 会发生什么)?
  • 如果用户没有选择任何设置默认选项,这并不是真的用户友好。

此外,如果只有两个表单域,我想,有没有那么多的实现服务器端验证的努力......

+0

当您提交“q8”时,验证将失败(客户端)。在服务器端,将数据插入数据库时​​可能会出现问题... – 2010-09-11 18:51:26

+0

它总是可能绕过客户端验证... – davehauser 2010-09-11 19:23:35