关于php与js交互问题

    最近几天一直在做cutl模拟登陆的事,遇到一个rsa加密的问题,他的加密文件是security.js。那么问题来了,如何让PHP获取js加密后的结果。 

    众所周知(很遗憾,基础不好,摔了跤之后才意识到),php是服务端语言,js是客户端语言。两者是风牛马不相及的。最开始,我一直在构思用PHP获取js结果。运气还不错,找到一个。如下:

         var modulus =                                \"00b6b7f8531b19980c66ae08e3061c6295a1dfd9406b32b202a59737818d75dea03de45d44271a1473af8062e8a4df927f031668ba0b1ec80127ff323a24cd0100bef4d524fdabef56271b93146d64589c9a988b67bc1d7a62faa6c378362cfd0a875361ddc7253aa0c0085dd5b17029e179d64294842862e6b0981ca1bde29979\";

           var exponent = \"010001\";

           var key = RSAUtils.getKeyPair(exponent,\"\", modulus);

            var password=RSAUtils.encryptedString(key,password);

            return password;

};

//PHP传入变量调用

$password = "911219";"var password=\"$password\";encryption(password);";

但是,很遗憾的是,PHP没法获取到js执行结果。那么,就用php的js扩展吧,但是看到网上一大堆blabla。还是算了。那么,重点来了,我们可以用node.js搭个小型服务器,再用PHP获取。

涉及引入多个文件时,按照前端引入顺序,逐个合并文件内容,并把最终结果,放入nodeServer.js最后,然后把调用方法,写入getResult函数。有时候会遇到如window、location.href之类的调用,在如影响数据的情况下,选择性删除即可。

var something = require('./security.js');

var http = require("http");

var url = require('url');

http.createServer(function(request, response) {

var arg = url.parse(request.url, true).query;  //arg => { key : "111" }

response.writeHead(200, {"Content-Type": "text/plain"});

var result = getResult(arg.password);

response.write(result + "\n");

response.end();

}).listen(8888);

function getResult(password) {

var modulus = "00b6b7f8531b19980c66ae08e3061c6295a1dfd9406b32b202a59737818d75dea03de45d44271a1473af8062e8a4df927f031668ba0b1ec80127ff323a24cd0100bef4d524fdabef56271b93146d64589c9a988b67bc1d7a62faa6c378362cfd0a875361ddc7253aa0c0085dd5b17029e179d64294842862e6b0981ca1bde29979";

var exponent = "010001";

var key=RSAUtils.getKeyPair(exponent,"", modulus);

var password=RSAUtils.encryptedString(key,password);

return password;

}


node.js有一个问题,就是没有window全局变量,找到global是其支持的全局变量。修改,OK.

node。js中引用js文件。

var   something = require('./folder1/folder2/folder3/something.js');

你可能感兴趣的:(关于php与js交互问题)