【问题标题】:Why should you validate forms using javascript?为什么要使用 javascript 验证表单?
【发布时间】:2010-08-09 21:59:48
【问题描述】:

如果您总是需要使用 PHP 验证表单,那么使用 Javascript 验证 HTML 表单有什么意义?我意识到您可以从中获得速度提升,并且对用户来说更方便,但除此之外,花在它上面的时间值得吗?如果有人对此有任何好的证据,我很想听听。

感谢您的帮助!
大都会

更新

在收到许多答案后,我想稍微改变一下问题。我们都知道 javascript 对用户来说更方便,它提供更快的反馈。我想知道的是:有没有人见过任何“证据”证明它值得?还是我们只是因为它让事情变得更好而每个人都说我们应该这样做?速度差异并不显着,随着互联网变得更快,我认为 javascript 验证将变得更加过时。

我开始怀疑是否可以更好地花费使用 javascript 验证页面的时间。

【问题讨论】:

  • 我完全同意你的观点,我从不使用 JS 进行验证,仅用于装饰:)
  • 通过这个问题,我们意识到您了解服务器验证和用户验证,所以 这里真正的问题是,是否浪费了创建更好的用户体验所花费的时间 .这是相当主观的。
  • @Frankie 是的,你是对的......我真正想要的是好的“证据”,即果汁值得挤压。有没有这方面的研究?我在这里收到的大多数答案已经告诉了我我所知道的。每个人都说“javascript 让用户更轻松”,但它真的有回报吗?还是我们这样做只是因为它让他们更容易并假设它有回报?
  • 以暴雪为例,他们花费大量时间确保用户体验尽可能完美(Apple 也是如此)。其他一些公司更愿意尽快发布产品。这是主观的,与您的业务计划相关。
  • @Frankie 我不再是暴雪的忠实粉丝了,哈哈。我认为他们花费了大量时间,因为他们永远让 2 个人参与其中,并利用这段时间来炒作游戏,以便赚更多钱。我认为暴雪现在就是为了钱,他们已经失去了曾经让他们变得伟大的火。另外,我相信 javascript 极大地提高了可用性,但 javascript 验证并没有像 javascript 功能那样提高可用性。它只是与 php 已经在做的大部分事情重叠。

标签: php javascript validation


【解决方案1】:

理想情况下,您可以通过 javascript 和(在您的情况下)PHP 进行验证。

两种验证方法将协同工作,以确保您为最终用户获得最强大且用户友好的功能。

您将使用客户端验证来确保所有字段均已填写,电子邮件地址有效等。这将提供即时反馈,不会对您的服务器或用户的互联网连接造成负担。

您验证服务器端的安全性。您可以控制服务器上的所有内容,而客户端计算机上的任何内容都无法控制。在这里,您可以确保所有输入的数据都是非恶意且正确的。

记住这一点:如果您只打算使用一种类型的验证,请选择服务器端验证,因为它更安全。您应该永远依赖客户端代码来确保任何类型的安全性。

同时使用这两种类型的验证可以为您带来两全其美(响应能力和安全性),同时没有任何缺点。当然,这意味着您必须编写更多代码,但在我看来,这是值得的。

编辑:回应 cmets

是的,您必须以这种方式编写更多代码...根据经验,如果程序员更难,它对用户来说更容易。在某些预算中,同时进行这两种类型的验证可能没有意义,而这是您将不得不做出的决定。无论如何,请确保您的服务器端验证是坚如磐石的。

是的,时间就是金钱,投入改善用户体验的时间就是物有所值。如果您现在负担不起(截止日期/时间表/预算),那么请在可能的情况下进行。

【讨论】:

  • 所以你真正得到的唯一东西就是速度?但是您花在进行 javascript 验证上以节省几秒钟(或在大多数情况下更少)的所有额外时间?不要误会我的意思,直到现在我一直都这样做。但我刚想出一个包含 14 个字段的表单,我开始认为它不值得麻烦。
  • 停止考虑什么对您方便,而开始考虑什么对用户方便。 ;)
  • @Liam Spencer,如果用户想要 javascript,他们可以自带 ;)
  • @Metropolis 如果验证 14 个字段不值得麻烦,您应该考虑研究(替代)JavaScript 库来为您处理繁琐的工作。
  • 如果您经常进行表单验证并且没有花时间学习一个为您做的库(并且有很多这样做),或者推出您自己的、可重用的解决方案,我会倾向于说“你做错了”。见鬼,我从不做任何表单验证,我仍然决定制作自己的验证库作为学习练习。
【解决方案2】:

一切都与可用性有关。用户在页面重新加载之前阅读他们犯了什么错误要方便得多,而不是不断地提交和重新加载页面。我认为,它还可以通过一些 AJAX 之类的方式提供更好的外观,而不是重新加载页面和看起来非常难看的红色错误消息。那么优势呢?比单独进行服务器端验证更有用。

【讨论】:

    【解决方案3】:

    为了提供更好的用户体验。

    JS 验证的反馈更快,因此比表单提交的服务器端验证更好。

    【讨论】:

      【解决方案4】:

      JavaScript 验证(如果可用)的主要目的是改善用户体验。到服务器的往返需要页面加载和相关的令人讨厌的闪烁,因为它重绘。在 JavaScript 代码中进行验证允许您显示一条消息,而无需所有这些。

      话虽如此,服务器端验证仍然是必需的,因为 JavaScript 并不总是可用(NoScript 非常流行),而且恶意用户会绕过 JavaScript。

      【讨论】:

        【解决方案5】:

        特别是对于数据库支持的网站,您往往需要进行服务器端验证。例如确保您将有效数据输入到数据库或其他系统中。根据网站正在更新的内容,这可能是绝对关键的。

        但是,客户端验证可以提供更好的用户体验。它可用于提供即时反馈。例如当您将焦点从文本框移开时,验证器可以提供即时反馈,这在您填写冗长复杂的表单时非常有用。

        最重要的是,您仍然需要将好的数据输入到您的数据库中。而且存储在那里的信息越正确,您以后遇到的系统问题就越少。两者都需要。

        例如如果将来有人更新网站代码并破坏验证怎么办?或者有人编写了一个脚本来自动输入数据,绕过你的网络前端所有的验证?

        我再说一遍。两者都需要。

        【讨论】:

          【解决方案6】:

          ...我认为你也在保持你的业力更清洁,当你的成百上千的用户不希望你因为让他们填写 5-7 个字段(带有 textarea)而被告知下一页他们打错了他们的电子邮件,所以他们必须重新开始:D 合并javascript并没有占用我太多时间,我说1个表格最多1-2分钟。它节省了我用户的大量神经细胞。做一个人文主义者!爱你的邻居!))

          【讨论】:

            【解决方案7】:

            客户端验证可提高用户体验。你给用户的反馈会减少挫败感,减少错误,更多的转化,更多的钱。 通过这种验证,您通常会有更好的响应率,这非常有价值。

            高质量的软件需要这个。用户感到快乐,他们会传播他们的快乐。体验不好的用户不会来也不会告诉他的朋友。

            当你做生意和销售时,它不仅仅是装饰。 ;) 投资回报是值得的。

            【讨论】:

              【解决方案8】:

              简单。

              Javascript 帮助用户输入正确格式的数据。 PHP 以确保在进一步处理之前清除进入脚本的任何内容。

              当然,你必须同时做这两件事。用户想要它,您的客户想要它,坦率地说,您认为提交后收到 php 错误消息也很糟糕。

              我不认为必须编写额外的 .js 代码可能会占用您的时间/预算的论点有任何道理。那里有很多库和脚本,任何一个都可以让您立即设置迪斯科验证。但是,不要因处理眼睛糖果而得意忘形。 .js 验证只是为了提供帮助。不要给人留下深刻印象。

              【讨论】:

                【解决方案9】:

                PHP 运行服务器端,javascript 运行客户端。当您可以让客户端计算机执行此操作时,您不希望服务器处理表单验证。此外,它还节省了带宽。

                【讨论】:

                • 下一个:客户端 sql 注入预防。
                • 我已经知道这些事情了......这就是为什么我说“我意识到你可以从中获得速度提升”。我想知道的是,我还能得到什么吗?因为需要php的时候两端都需要时间验证,而javascript真的不用。
                • 这没有错,是rwogn。 rwogn,rwogn,rwogn,rwogn,rwogn,rwogn,rwogn,rwogn
                猜你喜欢
                • 1970-01-01
                • 2021-10-08
                • 2023-03-22
                • 1970-01-01
                • 2021-03-19
                • 1970-01-01
                • 2011-12-02
                • 2020-06-22
                相关资源
                最近更新 更多