使用 javascript 与 php 进行表单验证
Posted
技术标签:
【中文标题】使用 javascript 与 php 进行表单验证【英文标题】:form validation with javascript vs php 【发布时间】:2010-12-16 03:29:15 【问题描述】:既然用户可能关闭了对 javascript 的支持,为什么我还要使用 JavaScript 进行表单验证。
不是没有必要吗?
更新:
好的,谢谢您的回答。在客户端也有它听起来是个好主意。我在哪里可以下载好的 JavaScript 验证?
你知道当你注册一个帐户时我可以在哪里下载一个像雅虎那样的验证脚本吗?
【问题讨论】:
毫无疑问,最先进且定期更新的验证工具是github.com/google/libphonenumber,它是 npm 端口:github.com/ruimarinho/google-libphonenumber 问题是在前端应用程序中捆绑 libphonenumber 需要 >500Kb。 (bundlephobia.com/package/google-libphonenumber@3.2.22) 值得一读,虚假程序员相信电话号码:github.com/google/libphonenumber/blob/master/FALSEHOODS.md 考虑到复杂性,我也会考虑使用专门的在线服务,例如:validatephonenumber.com 【参考方案1】:... 对用户的礼貌。让那些时不时做一些人类事情的普通用户的生活更轻松。
【讨论】:
第二。尤其是在连接速度较慢时,通知错误的 Javascript 警告大大提高了便利性。【参考方案2】:Javascript 验证允许您的用户在将表单提交到服务器之前被告知任何错误。这可以节省烦人的页面重新加载(因为在提交时 JS 会捕获事件并验证表单,如果发现错误则阻止表单提交)并最大限度地减少他们必须再次重新输入信息的机会(一次又一次...... ),或在正确填写表格之前离开。 JS 验证不能替代服务器端验证(因为用户可以看到 JS,并且通过保存页面和修改 JS 为所欲为);但这对他们来说很方便。
这只是渐进增强概念的一部分,JS 提供了一种机制来增强用户的体验,如果它存在并打开,并希望使他们与您的网站的交互愉快,或者至少是最低限度的烦人。
编辑以回应 OP 关于“在哪里下载 JS 验证工具”的问题。
虽然我不能 - 必然 - 推荐任何一个库(我倾向于根据需要编写自己的库,或者从以前自己编写的示例中借用),Google search 抛出了这些选项:
http://www.jsvalidate.com/ Stephen Walther 的页面,讨论微软的 CDN 和 jQuery-validation,链接到 jQuery Validation 插件: jQuery.validate(托管在 MS 的 ajax.microsoft.com 子域) jQuery.validate.min jQuery validate plug-in homepage (bassistance.de)。【讨论】:
所以最好的做法是为 javascript 和 php 端实现表单验证? 当然,客户端只是对您的用户的一种功能性礼遇,绝不应将其视为“安全”。在存储之前,所有用户提交的数据都应在服务器端进行验证和完整性检查。【参考方案3】:这是您是否希望您的表单(以及整个网站)具有交互性和用户友好性的问题。您可以让服务器端进行验证并将错误返回给用户,但这会比在用户提交表单之前警告用户更少交互和更不友好(尽管您仍然需要验证服务器上的输入- 无论如何)。只是我的 2 美分:P
【讨论】:
【参考方案4】:您应该始终在服务器端使用 PHP 进行验证,而在 JavaScript 中进行验证是为用户提供便利的客户端验证。由于对客户端用户的验证,可能会在他的表单中发现错误而无需重新加载页面。但是用户可以在没有数据脚本验证的情况下发送表单数据 (例如他可能在 Web 浏览器中没有 JS 支持),因此始终在服务器端进行验证。
【讨论】:
我应该只在 JavaScript 中验证它,然后当它有效时,提交并在 PHP 中验证以确保?这将需要我在 JS 和 PHP 中检查完全相同的内容以防止任何不便?【参考方案5】:我建议您使用框架使用统一的服务器端和客户端验证,因为它可以避免用户面对在客户端有效但被服务器拒绝的数据,或者相反(客户端过于限制)。 以下框架列表提供了有关服务器/客户端验证的信息: http://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks
【讨论】:
【参考方案6】:是的,最好从客户端和服务器端验证用户输入值,
在某些情况下客户端被禁用了 javascript 或没有 javascript 的移动浏览器,请记住也有垃圾邮件发送者。
【讨论】:
【参考方案7】:我建议客户端使用 Javascript,服务器端使用 Php 这将使交互或用户友好的网站在用户提交错误数据的情况下减少多次重新加载页面
【讨论】:
【参考方案8】:在我看来,由于安全原因,只有客户端检查表单输入是行不通的。想象一下,您想检查用户密码(如果“yourpwd” == userinput),使用 js,用户将看到密码,因为它在浏览器源代码中。使用 php,它不可见,因为 php 出于某种原因被隐藏了。
【讨论】:
以上是关于使用 javascript 与 php 进行表单验证的主要内容,如果未能解决你的问题,请参考以下文章