0

一个常见的问题是,对于验证,您需要在服务器和客户端上运行相同的代码。在 JavaScript 繁重的页面上,您希望在双方之间共享许多其他功能。由于您无法在客户端上运行 PHP,因此如果可以从 PHP 运行 Javascript 函数,我会感到很困惑。我正在考虑像Rhino这样的服务器端 JS ,但我不知道如何将它包含到 PHP 中。

4

4 回答 4

2

PHP 有一个 V8 扩展: http: //php.net/manual/en/class.v8js.php从未尝试过那么多,但可能有用

编辑:这里是 pecl 包链接:http ://pecl.php.net/package/v8js

于 2012-06-20T13:33:10.930 回答
2

您可以使用服务器端 javascript 服务,即node.js并使用 PHP 调用它,但这不是解决问题的直接或微不足道的解决方案。如果它是一个大型应用程序,在验证逻辑中存在大量交叉,这可能才值得。

于 2012-06-20T13:35:29.287 回答
1

在 php 中试试这个:

echo "<script type='text/javascript'>
         myfunction();
      </script>";
于 2012-06-20T14:12:37.910 回答
1

我的感觉和 AlexeyKa 一样。

我认为您需要走相反的路线,而不是在客户端和服务器上运行 JavaScript。在服务器端创建您的验证代码,并在表单提交之前使用 Ajax 调用验证。这样您就可以使用相同的代码进行验证(无重复),并且您不必担心在服务器上运行 JavaScript 引擎。

此外,如果您向客户端提供您将在服务器上运行的验证代码,那么您只是要求某人在您的验证代码中找到一个漏洞。在服务器上保留验证可以使您的验证代码远离用户。

更新:

我没有意识到您的问题不仅仅是验证。这不是 PHP 解决方案,但 Google 的Closure Tools是一种允许您的客户端与您的服务器相同的技术。您编写 UI 模板并定义它们应该如何工作(布局、验证、持久性),然后框架创建 HTML、JavaScript 和服务器代码。这一切都是为了确保您编写一次代码,并且客户端和服务器之间的任何相似代码都由框架处理。

于 2012-06-20T23:49:36.570 回答