【问题标题】:DRY when validating calculations made client side (Javascript) on the server (PHP)验证计算时在服务器 (PHP) 上进行客户端 (Javascript) 的 DRY
【发布时间】:2014-11-13 11:49:13
【问题描述】:

当我在服务器 (PHP) 上验证客户端 (javascript) 进行的计算时,我正在寻找 DRY。我正在服务器上进行验证以防止恶意用户复制 javascript,但我正在客户端上进行计算以避免 AJAX 中的延迟和服务器压力返回服务器进行验证。

我的问题:有什么方法可以干这个,还是我必须用两种语言写出代码?如果必须写出来,是为了 DRY 目的将 AJAX 返回服务器更好,还是应该用两种语言写出相同的验证代码?

This question 正是我正在寻找的答案,但从未得到令人满意的答案。

编辑(2015 年 1 月 25 日): 虽然接受的答案是有效的,特别是因为我最初的问题指定服务器在 PHP 上运行,但我认为值得指出的是服务器端验证可以使用Node.js 完成,它允许javascript 代码在后端服务器上运行。我随后转向了这种方法,它确实允许在客户端和服务器上重用代码,这将允许上述那种只写一次的验证。回想一下@slebetman 下面的评论确定了对我来说最好的方法。

【问题讨论】:

  • 不幸的是,你必须写两次。
  • 在服务器端编写它并使用 AJAX 被认为是更好的做法,还是两次编写它被认为是更好的做法?
  • 我会说最好写两次。
  • 我发现做这个 DRY 的唯一真正方法是使用 node.js(或类似的东西 - 使用 js 作为服务器端语言)。当然,总是有一种正则表达式方式,即一次将验证代码编写为正则表达式,然后将其发送到 JSON 数组中的客户端并在 PHP 中处理它的服务器端。但是正则表达式不能以可读的方式做所有事情。具体比较数字范围等虽然可行,但在正则表达式中变得无法维护。

标签: javascript php validation dry


【解决方案1】:

客户端验证就是为了节省用户时间。通过不必向服务器发送错误数据然后拒绝请求,我们可以节省加载时间。

服务器端验证是关于安全性的。我们需要确保我们在服务器上获得的数据是有效的,不会给我们带来任何问题。

所以在我看来,最好写两次代码,除非你必须这样做,否则不要使用 AJAX 请求来验证数据

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-17
    • 2010-09-14
    • 2020-09-08
    • 2016-10-16
    • 2012-10-05
    • 2016-10-10
    相关资源
    最近更新 更多