Php 有哪些系统来管理后端和前端逻辑/验证?

Php 有哪些系统来管理后端和前端逻辑/验证?,php,javascript,validation,Php,Javascript,Validation,我只是想知道团队中的工作人员如何管理后端(比如php)中的逻辑和验证与前端(比如JavaScript)中完全相同的逻辑和验证之间的关系 理想情况下,后端应该有最终发言权,但为了使应用程序更易于访问,最好在前端使用JavaScript尽可能多地进行模拟。很明显,我在尽量减少代码的重复,随着项目越来越大,我发现管理前端内容如何从后端内容“复制”变得越来越困难。危险在于,由于前端验证与后端验证不紧密耦合,有时前端验证可能与后端“不同步”——特别是当有流氓JavaScript开发人员认为他们有更好的验证

我只是想知道团队中的工作人员如何管理后端(比如php)中的逻辑和验证与前端(比如JavaScript)中完全相同的逻辑和验证之间的关系

理想情况下,后端应该有最终发言权,但为了使应用程序更易于访问,最好在前端使用JavaScript尽可能多地进行模拟。很明显,我在尽量减少代码的重复,随着项目越来越大,我发现管理前端内容如何从后端内容“复制”变得越来越困难。危险在于,由于前端验证与后端验证不紧密耦合,有时前端验证可能与后端“不同步”——特别是当有流氓JavaScript开发人员认为他们有更好的验证方法时

有人有什么见解吗

编辑


更简洁地说,我的问题实际上是关于当涉及到逻辑重复时,团队如何管理“书面记录”(或者前端如何访问后端,如下面Fanis所建议的),而不是实际的实现。例如,您是否在后端代码中留下“前端复制/访问此位”的注释,或者是否有更“专业”的方法来跟踪正在做什么?

无论哪个部分实际使用数据,都应该是具有最终发言权的部分,即后端,并且应该有最严格的验证规则。对我来说,前端的验证是为了改善用户体验,这样用户就可以在不等待页面重新加载的情况下更快地获得输入错误的反馈。我会同意前端有一小部分最通用的验证规则(即字段为空、格式错误的电子邮件地址等),让后端做任何繁重的工作(例如重复条目检测)

但是,如果您需要将完整的验证带到前端,请考虑这一点:

  • 使后端的验证与任何表单提交逻辑分离
  • 设置一个单独的端点(API),该端点将接收数据、执行验证并回显任何错误或“确定”
  • 让前端通过ajax将表单数据传递到该端点,并返回任何要显示的错误
  • 如果一切正常,那么让表单提交继续进行
这样,您的后端只有一个验证规则副本

请注意,您将进行两次验证,如果验证成本很高(即使用启发式方法在大型数据集上重复检测),那么这可能是不可取的。如果没有发现错误,您可以通过在第一次验证期间将表单数据存储在用户会话中来解决这个问题。然后,当表单实际提交时,后端将不会重新验证它


如果不启用javascript,这将很好地降低性能。

您最近看过NodeJ吗?通过一点工作和适当的框架(比如mootools),您可以在客户端和服务器端运行完全相同的验证类

正如您所说,使用API访问后端使用的相同验证逻辑听起来有点昂贵,但我看到整个网站都通过AJAX在DOM操作上运行,所以可能不会太糟糕。我喜欢在会话中存储第一次验证的结果……如果将验证与表单提交处理分离,那么实现起来应该很简单,通过存储验证结果可以避免重复检查。可以将其视为预先批准的表单提交:)AJAX想法是一个好主意,但对慢速连接不好,在每个表单之后连接到服务器AJAX想法是一个好主意,但对慢速连接不好,在每个表单字段之后连接到服务器可能会让人讨厌。也许可以将后端验证配置为在页面加载时返回一组统计信息(如果字段为max length等)。这可以转换为JS,JS函数可以使用stats进行离线验证。但是,你不能用这种方式进行“已经存在”类型的验证。它不必在每个表单字段之后触发,只需在你关心的字段(如电子邮件和用户名)之后触发。如果连接很慢,并且在用户实际点击提交之前前端验证没有时间完成,那么您可以中断表单提交并等待验证完成,如果没有错误,则继续进行,或者只是提交并让后端完成其工作。前端验证只是为了提供更好的用户体验,它可能不应该阻止通常的表单提交作为一种退路。你有任何例子吗?我快速浏览了一遍,但没有看到像你建议的任何内容?当然,我最近在伦敦ajax小组会议上看到了这一点。引用作者Piotr Zalewa(mozilla)的话:这是一个在3-4小时内为我在伦敦Ajax和PDF上的演讲编写的快速而肮脏的MVC:-他在做演讲之前从未使用过nodejs。