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


Execute a javascript function from PHP and return the response

我正试图从PHP脚本中执行一个javascript函数,方法是将一个变量发送到我的javascript函数,然后它将返回响应。我希望PHP脚本只回显javascript函数的响应,所以当客户查看我的PHP文件的源代码时,他只看到javascript函数的回应,而看不到javascript源代码。

例如

我有一个javascript函数validate()和一个PHP文件check.PHP

www.myserver.com/check.php?值=测试

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

响应=验证($value)

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

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

有人能告诉我应该使用哪些PHP函数吗?非常感谢。

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

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

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

按偏好排序:

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

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

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

因此,您需要在事务中嵌入某种数据完整性检查,以确保客户端javascript没有被修改。这将是艰难的。

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

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

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

实际上,您应该只在PHP脚本本身中进行验证。如果你想改变一些事情,那么会更安全、更容易,以后也更容易处理。