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  
 %>
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号