美文网首页
关于php与js交互问题

关于php与js交互问题

作者: 我在太行山下 | 来源:发表于2015-12-21 11:28 被阅读0次

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

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

    <?php                                                                                                                   echo "function encryption(password){

             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交互问题

          本文链接:https://www.haomeiwen.com/subject/uuemhttx.html