【问题标题】:Same code on browser/server浏览器/服务器上的相同代码
【发布时间】:2011-01-09 16:25:57
【问题描述】:

我正在使用 PHP 编写一个 Web 应用程序,并且遇到了几种情况,我需要在服务器和浏览器上使用类似的代码。例如:

  • 我想验证用户输入,并在两边生成相同的错误消息。
  • 我想使用某些规则来格式化数据(例如,如果给定的字段小于 1,则以两位小数显示,否则不显示),并且无论哪一侧呈现它,都让它看起来相同。

这似乎应该是一个常见问题,因为人们正在将更多逻辑从服务器转移到浏览器。但是是否有任何通用的模式或库来处理它(尤其是 PHP)?

【问题讨论】:

  • 好问题,虽然严格来说,移动从服务器到浏览器的验证对于安全来说是个坏主意。最好在浏览器中“预先验证”(以获取即时用户反馈)并在服务器上重新验证(以确保安全)。
  • 当然——我在两个地方都想要。

标签: php javascript code-reuse


【解决方案1】:

一种解决方案是使用server-side JavaScript。这样你就可以共享大量代码了。

【讨论】:

    【解决方案2】:

    有趣的问题! 据我所知,PHP 有 2 个选项:

    • 使用 Ajax 进行表单验证,所以一切都发生在服务器上。
    • 正在努力将 PHP 函数引入 JS,这至少应该简化移植:http://phpjs.org/

    但是,在 Java 中,您可以使用 Rhino 运行 Javascript。

    我能想到的其他事情是使用 Flash 或 Java 小程序进行丑陋的 hack,或者涉及像 Pyjamas 这样的框架。

    【讨论】:

      【解决方案3】:

      您可以尝试使用haxe 语言。它可以翻译成 js/php 甚至 actionscript (flash)。

      【讨论】:

        【解决方案4】:

        部分解决方案是 AJAX。例如,在服务器上编写一次验证代码,然后让表单与服务器对话以查看输入是否有效,如果无效则要求显示错误消息。

        【讨论】:

        • 虽然(除非您只是在谈论共享代码但仍在双方进行验证)这假设 JavaScript 已启用/可用
        【解决方案5】:

        json_encodejson_decode 是一个很好的开始 - 所需的 php 数组和 json 对象中可用的相同数据源。

        json_encoded 数据可以通过<script> 标签或您认为合适的 ajax 提供。

        【讨论】:

          【解决方案6】:

          在客户端进行快速验证(例如模式匹配、日期和数字的正确性)和服务器端的安全检查。
          您也可以使用 AJAX 进行服务器端验证,但这样您可以在用户输入和验证结果之间产生响应差距。因此,使用 JavaScript 进行快速和基本的验证,并使用 PHP 进行繁重的验证。

          【讨论】:

            【解决方案7】:

            您可以使用http://phpjs.org/ 在客户端运行您的php 代码。这适用于 php 中的大多数函数。

            【讨论】:

              猜你喜欢
              • 2013-11-14
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2016-11-26
              相关资源
              最近更新 更多