自从我们使用JavaScript验证表单以来,已经很长时间了。我敢肯定,大多数其他开发人员都是如此。
题:
如果用户(或可能是坏人)禁用JavaScript怎么办?
你迷路了!
- JavaScript验证值得吗?
- 我们现在应该使用它吗?
- 有什么解决办法吗?
如果我错了,请纠正我。
Answers:
JavaScript验证值得吗?
是的,因为它可以提供更好的用户体验并保留带宽。
我们现在应该使用它吗?
是的,由于上述原因。
有什么解决办法吗?
是的,也请使用服务器端验证。
JavaScript可以改善产品或服务的用户交互。用户交互(用户输入和机器响应,反之亦然)是我们应用程序的重要特征。众所周知,产品比以往任何时候都更具交互性。而这种互动部分能够(只)在JavaScript(精雕细琢的ActionScript的Flash播放器)。我们都同意这一点-总有一定数量的工作量可以转移到客户端(机器),以避免在不打扰发送给服务器的情况下避免调用。有许多应用程序严重依赖于客户端脚本脚本。如果他们发现您不允许使用必需的脚本,他们会要求您在其中留言noscript标签。但是我认为每个人都希望启用它,因为我们都使用Gmail,Facebook等启动了一个标签页。
但是,这仍然不容忽视,因为我们渴望抓住每一个机会(受众/客户),并且与之合作至少比分崩离析更好。它仍然有效!
作为Microsoft开发平台用户,平台上有一个便捷的解决方案.NET。在这些问题上,不需要双重努力。使用和禁用脚本时,请使用客户端验证。Page.Validate()Page.IsValid
protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsPostBack) {
Page.Validate(); // If you missed, then you got the second chance ...
}
}
protected void btnSubmit_Click(object sender, EventArgs e)
{
if (Page.IsValid) { // Confirm you do a proper validation before moving to perform any process
Response.Write("Done!");
}
}
我希望这将有所帮助。
通过使用支持两者的框架,可以使服务器验证和客户端验证变得非常轻松。过去,对于ASP.NET,我使用了Peter Blum验证器:
这样,您就可以将验证控件放到页面上,将它们连接到输入(文本框,下拉列表等),并指定验证属性(最小长度,必填项,错误消息等)。当页面运行时,框架会为客户端(JavaScript)和服务器(ASP.NET)吐出等效代码以执行验证。
正如其他发布者所指出的那样,如果没有这样的框架,验证可能会很费力。
我很想知道PHP或其他技术的相似之处。
在多层/面向服务的环境中,验证应在多个级别上进行,以便在保持安全应用程序的同时更好地重用。无论是在桌面应用程序中还是在网站/应用程序中,都应该在客户端进行验证,以提供更好的用户体验,以防止每次都回发到服务器进行验证,从而浪费更多的带宽和用户时间。如果客户端验证不能完全移到前端,则可以考虑使用ajax将其部分回发到服务器端验证例程,同时保留更好的客户体验,但允许程序员集中维护验证规则。
其次是客户端,但更重要的是,服务器端代码应在对数据进行持久化或将其传递给另一服务器端方法/服务之前验证数据,以围绕数据采用业务规则并帮助防止数据完整性错误。最后,持久层本身(与数据库或其他存储机制的直接接口)应验证所存储的数据,以再次防止数据完整性错误和可能的其他业务规则。您想要的最后一件事是包含无用数据的数据存储。
使用此方法将使您的数据安全和完整。如果重新设计了持久层,数据层或此后的前端演示文稿,则可以在自己的站点(或通过Web服务,桌面应用程序或移动应用程序)中对它们进行重用(如果设计得当),这些验证例程已经到位并且可以重新就业。如果您是团队工作,那么这对您自己以及您的同事和管理层都是非常有益的。
Is JavaScript validation worth of it?
好吧,是的。购买使用JavaScript验证,可以比JavaScript验证更轻松地获取有关客户端站点的任何信息,从而提供更好的用户体验
Should we ever use it now?
是的,您可以这样做,因为用户可以实时看到错误或他们在做什么错
Are there any solutions to this?
是的,您也可以使用服务器端验证。但是有时它会花费更多时间。它也不安全