【发布时间】: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