/**
* 运行js 仅在node环境下
* 参数 jsFile js文件名
* 参数 v 要传递的参数
* 参数 path js目录
* by:LingMax
*/
function js_node($jsFile,$v,$path = './JsDecrypt/')
{
$cmd = 'node "' . realpath($path.'node_api.js');
$cmd .= '" "' . realpath($path.$jsFile).'" "'.$v.'"';
//echo $cmd.'<br>';
return exec($cmd);
}
/**
* 运行js 仅在win平台下
* 参数 jsFile js文件名
* 参数 exec 要传递的参数
* 参数 path js目录
* by:LingMax
* 注意:需要打开该扩展插件 extension=php_com_dotnet.dll
*/
function js_run($jsFile,$v,$path = './JsDecrypt/')
{
$oScript = new \COM("MSScriptControl.ScriptControl");#创建com组件
$oScript->Language = "JavaScript";#设置脚本类型
$oScript->AllowUI = false;#不显示提示框
$code = file_get_contents($path.$jsFile);
#编码自动转换
$bm = 'GB2312';
$encode=mb_detect_encoding($code,array("ASCII","UTF-8","GB2312","GBK","BIG5"));
if ($encode != $bm and $encode !="GB2312"){
$code=mb_convert_encoding($code,$bm,$encode);
}
$oScript->AddCode($code);#添加js代码 只支持gbk格式文本
return $oScript->Run("eval", 'tmd("'.$v.'")');#运行代码
}
node_api.js 文件内容如下
//console.log(process.argv);
require(process.argv[2]);//C://xx.js 绝对路径
console.log(tmd(process.argv[3]));
qrl_fanzhoutech_com.js 文件内容如下
function tmd(pwd) {
var a = 'aaa';
return pwd + a;
}
//兼容node环境
if(typeof(global) != 'undefined'){
global.tmd = tmd;
}
node "C:\EXE\JsDecrypt\node_api.js" "C:\EXE\JsDecrypt\qrl_fanzhoutech_com.js" "222222"