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

时间:2012-07-17 01:28:16

标签: php javascript html json

我试图通过将变量发送到我的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(),执行以下操作,

响应=验证($值)

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

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

有人能指出我应该使用的PHP功能吗?谢谢!

2 个答案:

答案 0 :(得分:2)

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

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

那么问题的解决方案是什么?

按优先顺序排列:

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

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

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

  4. 因此,您需要在事务中嵌入某种数据完整性检查 - 某种方式可以确保客户端javascript未被修改。这很难。

答案 1 :(得分:0)

你不应该起诉任何功能:P

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

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

但实际上,您应该只在PHP脚本中进行验证。如果你想改变一些东西,那么以后更安全,更容易和更容易使用。