从PHP执行javascript函数并返回响应

从PHP执行javascript函数并返回响应,php,javascript,html,json,Php,Javascript,Html,Json,我试图通过向我的javascript函数发送一个变量来从PHP脚本执行javascript函数,然后它将返回响应。我希望PHP脚本只回显javascript函数的响应,因此当客户端查看我的PHP文件的源代码时,他只看到javascript函数的响应,而不是javascript源代码 比如说, 我有一个名为validate()的javascript函数和一个名为check.PHP的PHP文件。客户端使用GET方法调用函数,如下所示 www.myserver.com/check.php?value=

我试图通过向我的javascript函数发送一个变量来从PHP脚本执行javascript函数,然后它将返回响应。我希望PHP脚本只回显javascript函数的响应,因此当客户端查看我的PHP文件的源代码时,他只看到javascript函数的响应,而不是javascript源代码

比如说,

我有一个名为validate()的javascript函数和一个名为check.PHP的PHP文件。客户端使用GET方法调用函数,如下所示

www.myserver.com/check.php?value=test

然后我希望check.php将变量$value发送到我的javascript函数validate(),以执行以下操作:

响应=验证($value)

然后javascript将值response返回给我的PHP脚本,并将其存储在变量$response中,然后它将回显$response。因此,当我查看源代码时,我只会看到变量answer中的内容

我找不到一个简单的方法来实现这一点:S。如果我使用AJAX,我需要在HTML中使用div,但是在源代码中只显示$response的内容很重要

有人能告诉我应该使用哪些PHP函数吗?谢谢大家!

你不应该起诉任何函数:p

然而,虽然这是一种看似可怕的验证方式,但您可以执行以下操作:

  • 将javascript输出到HTML文件。(放在容易找到的地方)
  • 使用
    fopen
    打开一个URL,其中包含js函数将获取的URL中的参数
  • 让PHP函数解析HTML文件(您使用
    fopen
    获取该文件)以获得输出,并搜索所需的特定输出

实际上,您应该在PHP脚本本身中进行验证。如果您想更改某些内容,则更安全、更容易、更易于以后使用。

PHP通常运行服务器端,Javascript通常运行客户端(在浏览器中)

在正常模型中,客户机向服务器发出请求,服务器作出响应。在这种情况下,PHP代码不可能直接“调用”Javascript函数

那么,你的问题的解决方案是什么

按优先顺序:

  • 第一个也是最好的选择是重新构建,这样就不需要从PHP中调用javascript
    validate()
    函数。例如,将Javascript逻辑移植到PHP

  • 如果无法移植,请在服务器端运行Javascript。Node.js在Linux和Windows的服务器端运行;如果您有Windows/IIS,更简单的选择是通过ASP classic提供Javascript,是的,ASP classic在当前的Windows服务器上仍然可用。PHP程序可以简单地通过curl请求本地Javascript资源;服务器调用逻辑并返回结果。在一般情况下,Javascript不需要在同一台服务器上运行

  • 最后,如果这不是一个选项,您可以让浏览器代表服务器执行
    validate()
    。PHP可以将javascript脚本块中的验证函数发送到浏览器。PHP还可以发出需要验证的东西——数据包或其他任何东西。然后,浏览器可以对该对象执行
    validate()
    ,并通过AJAX向PHP发布消息以报告结果。但是,这里有一个安全问题——请记住,客户端不在您的控制范围内,因此有可能有人会破坏客户端验证逻辑,并导致客户端向PHP服务器报告错误结果。你不能指望他


  • 因此,您需要在事务中嵌入某种类型的数据完整性检查——某种方式可以确保客户端javascript没有被修改。这将很难。

    谢谢你的回答,我理解这看起来是一个荒谬的问题,因为javascript是客户端的,但是,我有一个非常复杂的javascript函数,我需要使用它,我不想将它转换为PHP,因为我没有时间。我已经下载并安装了node.js到我的服务器上,它执行javascript服务器端,我相信这就是我问题的答案!再次感谢。很高兴它有帮助,但实际上,您应该用PHP编写函数。如果您的代码是编写的,那么您知道逻辑将起作用,并且将其转换为PHP将花费很少的时间,但会更加安全。在实现我提出的建议所花的时间里,我想你可以用PHP重新编码整个过程。你试图运行有效负载。回答得很好-谢谢。目前我正在使用node.js运行javascript服务器端。我知道这不是一个理想的解决方案,但目前我没有时间重新编写javascript代码。当我这样做时,我将摆脱node.js并将javascript文件转换为PHP函数。再次感谢。