paip.asp vbs通过CLI命令行调用PHP代码

paip.asp vbs通过CLI命令行调用PHP代码


前几天ASP调用PHP参数传递用的是自定义加密算法,还是想用DES标准加密算法来处理参数。。

与是,想用ASP通过CLI接口来调用本地PHP的DES算法,然后加密后发送往远程的PHP模块。。

然后抓取控制台输出。。

1.主要是以下三行代码调用命令行

  Set  WshShell  =  server.CreateObject("Wscript.Shell")
    commandLine="cmd /c C:\Users\Administrator\Desktop\phprun.bat "&msg&" 

"&key 
    Set oExec = WshShell.Exec(commandLine)
   
2. 先调用BAT文件,phprun.bat。。这个文件主要动作是切换至desApi.php所在目录下,然后

调用PHP。EXE
@d:
@cd "D:\UCenter_1.6.0_SC_UTF8\upload\m_dx\"
@"C:\wamp\bin\php\php5.2.6\php.exe"  -c C:\wamp\bin\apache\apache2.2.8\bin

\php.ini  -f "D:\UCenter_1.6.0_SC_UTF8\upload\m_dx\desApi.php"  %1  %2

3.然后在desApi.php中,代码如下
 $param=$argv[1]; 
 $key=$argv[2]; // "iluvnjyn";
 $val =DES::Encrypt($key,$param);
  echo($val);

----------------在运行ASP Wscript.Shell的时候提示权限不足的解决-------------------
我的是WIN7 ,IIS7.5
先查看进程W3WP的用户,一般是应用程序池的名字一样。。然后把"IIS AppPool\用户名“加入

到ADMIN组里中..这个用户名在用户管理那里隐藏看不到。。不过可以填加进去就OK了。。
然后重启IIS,以应用此账户权限..

参考:IIS7.5中神秘的ApplicationPoolIdentity

 


-------------------------------ASP源码如下---------------------
<%

'for test
desFromPhpResult=""    '返回PHP的DES结果
errMsg=""  '错误控制台输出
stdMsg=""  '标准控制台输出
msg_L715="admin"
key_L715="iluvnjyn"

temp=desFromPhp(msg_L715,key_L715)
if(desFromPhpResult="") then
    Response.Write("err:"&errmsg&"<p>stdout::::"&stdMsg)
else
    Response.Write("sucess::: "&desFromPhpResult)
end if
 %>

<%
'ati 2012.7.18
'SLEEP 单位毫秒
Sub MySleep(mySleepTime)
 Dim myTime
 myTime = Timer()*1000
 
 While Timer()*1000- myTime<mySleepTime
 ' WScript.Echo(Timer()*1000- myTime)
 ' WScript.Echo(vbCrLf)
 Wend 
End Sub

'Call MySleep(200)
'ati 2012.7.18
'返回PHP的DES结果
desFromPhpResult="" 
errMsg=""  '错误控制台输出
stdMsg=""  '标准控制台输出

Function desFromPhp(msg,key)
    'dim key
   ' key="iluvnjyn"
    Set  WshShell  =  server.CreateObject("Wscript.Shell")
    commandLine="cmd /c C:\Users\Administrator\Desktop\phprun.bat "&msg&" 

"&key 
    Set oExec = WshShell.Exec(commandLine)
   
    '等待执行完毕  0为执行中,1为完毕
    Do While oExec.Status = 0    
        Call MySleep(200)
    Loop
   
    errMsg = oExec.StdErr.ReadAll()
    stdMsg = oExec.StdOut.ReadAll()
    If(oExec.exitcode=0) Then 'cmderr:1,phperr:255,ok:0
        desFromPhpResult=stdMsg   
    End If
End Function 
%>

 

posted @ 2012-07-19 23:38  attilaxAti  阅读(22)  评论(0编辑  收藏  举报