繁体   English   中英

在提交之前通过 Javascript 进行一些表单验证是否明智?

[英]Is it smart to do some form validation through Javascript before submitting?

我真的很喜欢在服务器端验证 forms 客户端之前的想法。 如果客户端验证通过,我可以使用 Javascript 提交表单。

但是,我听说一些专门的浏览器,比如视障浏览器,不支持 Javascript。 因此,这些用户将无法提交我的 forms。 因此,我应该避免我刚才想做的事情,还是可以?

编辑:(回应答案):我想我没有解释这一点,但除了客户端之外,我还计划进行服务器端验证。 对不起!

谢谢

Javascript 是一个很好的验证方法。 它让用户立即知道出了什么问题,此外它还最大限度地减少了对数据库的潜在调用。

如果有浏览器出于可访问性原因禁用 javascript,您不必太担心。 这就是服务器端检查的帮助。

因此,您应该同时使用两者,并在打开或关闭 javascript 的情况下进行测试。 永远不要使用 javascript 作为唯一的验证器 - 你可以在浏览器中关闭 javascript 并且 POST 数据将通过 go !

您应该同时进行客户端验证和服务器端验证。 您通过客户端验证捕获的所有内容都是一个改善用户体验的机会,并在他们提交表单之前准确告诉他们缺少什么或错误什么。 如果由于任何原因未启用 javascript,您仍将在服务器上进行验证(正如您一直应该做的那样),并且如果需要,可以通过服务器的表单响应返回错误。

因此,如果可用,使用客户端验证总是一个好主意。

客户端验证聪明吗? 是的,干净的输入比会出错的输入更能提高性能。

伟大的用户体验? 是的,用户获得快速、相关的反馈很重要。

安全的? 一点都不。 黑客不会使用您的界面来入侵您的网站。

越来越多的浏览器可以对运行 JS 进行站点选择。

最后,如果您担心平等访问,最好的办法是构建网站的可访问版本。

客户端验证通常会改善用户体验,因为用户可以立即看到他的数据是否有效。

如果是一些简单的验证,比如模式匹配或密码长度检查,一定要这样做。 但当然它不是服务器端验证的替代品,无论如何它都不是一种安全手段。 永远不要相信用户输入。

不显眼的方式集成客户端验证,以便在关闭 JS 时表单提交仍然有效。

“两者兼而有之”就是答案。 验证客户端是为了方便和改善用户体验,但您应该始终验证服务器端。

没有 JavaScript 的浏览器根本不会执行 JavaScript,因此它们仍然可以提交您的表单。 不用担心。

客户端验证通过拦截正常的提交事件并根据表单是否有效返回true或false来完成。 这样,在没有启用javascript的情况下,提交不会被拦截,正常进行。

幸运的是,这是最容易优雅降级的事情之一:)

不确定我们是否可以说在提交之前处理表单“控制”是明智的:这“只是”客户舒适,因为这些控制......从安全角度来看是无效的。 因此,从安全角度来看,这是在增加编码工作而没有增加价值。 但这增加了客户舒适度的努力。 这很聪明。

简单的方法:根本没有客户端控制,只有服务器端。 不需要在客户端启用 js。
这是应始终启用且完全安全有效的点。

中间方式:实现简单的方式并在顶部添加一些javascript“控件”,“手工编码”或使用js库。 这是一种挑剔的方式,因为这是在现有服务器核心代码之上添加一层,通常意味着一些服务器端代码更改或重构。 所以在我看来,这是最糟糕的方式。 但这是学习和理解客户端-服务器交换的好方法。 痛苦但有用。

最好的方法:将所有努力都放在服务器端验证上,但要确保从编码起点开始,也能够嵌入“很高兴拥有”,例如。 客户端不错的“控件”。 这意味着您必须在开始编写任何行之前考虑您的代码架构。 怎么做? 在服务器端使用 Ajax 编码 forms。 这表明了使用特定 php 表单类的理想编码方式。 例如, ZendFramework使用 dojo 或 jQuery 提供这种可能性。

将“更清洁”的数据传递到服务器总是更好。 防止错误和恶意数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM