|            
写这个小东西的出发点,由于经常的需要在线利用asp脚本的ado对数据库执行建表,修改字段 每次都要ftp修改升级文件传上去或在线修改好了运行!很是麻烦 于是写了这个小东西!很方便~~
  脚本特点: 1.可以运行除了 ssi(如#include file) 和 预处理指令(如@ language=javascript)外的任何 asp vbscript 脚本 比如数据库连接,记录集的建立,甚至Fso等 2.并可运行<%%> <%=%> HTML混编的 ASP脚本  3.有简单的容错处理机制,可以简单的知道是脚本那个部分错误 4.具有验证码登陆,密码和用户名在代码runasp.asp 的头部修改,缺省提供的是帐号:admin 密码:admin
  看起来这个脚本很简陋,其实功能极其强大的可怕! 虽然有简单的登陆验证,但还是不建议你使用在你的站点上,做为一个辅助调试asp代码的小工具 个人认为比较实用的!所以你可以自己测试,玩玩,或作为临时的论坛代码解决问题的测试工具! 因为每次都要进入调试环境来运行asp的确麻烦! 还需要注意一点的是象 <td width=50%> 的50%一定要写加引号
  演示(admin 密码admin): www.paintblue.net/myasp/runasp.asp (实际执行功能已经屏蔽,请下载或粘贴下面代码测试使用):
  下载:  http://www.paintblue.net/myasp/runasp.rar
   
  <% @ LANGUAGE="VBSCRIPT" %> <%Option Explicit response.buffer=true dim Spassword,SUserName  SUserName="admin"  Spassword="admin" dim SQLMutiStr dim i dim action  action=request.querystring("action")
  IF action="GetCode" then '---------TOT  NumCodeJS ELSE '--------TOT  Response.Write("<!DOCTYPE HTML PUBLIC ""-//W3C//DTD HTML 4.0 Transitional//EN"">")  Response.Write("<HTML>")  Response.Write("<HEAD>")  Response.Write("<TITLE>ASP RunCode SCR V1.0 / Create By PaintBlue.Net V37</TITLE>")  Response.Write("<META NAME=""Generator"" CONTENT=""EditPlus,V37,PaintBlue.Net"">")  Response.Write("<META NAME=""Author"" CONTENT=""V37,PaintBlue.Net"">")  Response.Write("<META NAME=""Keywords"" CONTENT=""PaintBlue.Net,,V37,RunCode,ASP,Script,BlueIdea.COM,Lfgbox.com"">")  Response.Write("<META NAME=""Description"" CONTENT=""运行ASP代码的ASP脚本!"">")  Response.Write("</HEAD>")  Response.Write("<BODY bgcolor=#D4D0C8>")
   SQLMutiStr=trim(Request.Form("SQLMutiStr"))  if session("login")="" and action="chkpass" then   session("login")=checkPass()  end if  if action="exit" then session("login")=""  if session("login")="1" then    if action="RunCode" then       if SQLMutiStr="" then      Response.write "没有输入要运行的代码!"      Response.write "<br><br><a href=""javascript:window.history.back();"">返回运行页面</a><br><br>"      Response.write "<a href=""?action=exit"">退出登陆</a>"      response.end     else      dim ExeStrArr      dim re      dim tempSQL,tempSQL2       dim ScriptArr,ScriptSubArr       tempSQL2=""      tempSQL=split(SQLMutiStr,vbcrlf)      if inStr(lcase(tempSQL(0)),"language")>0 then       tempSQL2=tempSQL(1)       if ubound(tempSQL)>1 then        for i=1 to ubound(tempSQL)         tempSQL2=tempSQL2&tempSQL(i)        next       end if       tempSQL2=trim(tempSQL2)      else       tempSQL2=SQLMutiStr      end if       tempSQL2=replace(tempSQL2,"<%"&"=","<"&"%response.write ")       do         tempSQL2=replace(tempSQL2,vbcrlf&vbcrlf,vbcrlf)       loop while instr(tempSQL2,vbcrlf&vbcrlf)>0        tempSQL2=trim(tempSQL2)        tempSQL2="<"&"%%"&">"&tempSQL2&"<"&"%%"&">"        ScriptArr=split(tempSQL2,"%"&">")       dim ub,kub        ub=ubound(ScriptArr)       for i=0 to ub-1        ScriptSubArr=split(ScriptArr(i),"<"&"%")        if i>0 then response.write (ScriptSubArr(0))        ExeCuteIt(ScriptSubArr(1))       next      call EndProc("<font color=#009900>代码运行完毕!</font>")     end if    else     %>     输入要运行的ASP代码:     <FORM METHOD=POST ACTION="?action=RunCode" style="margin:0px;">     <TEXTAREA NAME="SQLMutiStr" wrap='OFF' ROWS="20" style="width:100%;height:100%;table-layout:fixed;word-break:break-all;"><%=Server.Htmlencode(SQLMutiStr)%></TEXTAREA>     <br>     <INPUT TYPE="button" onclick="window.location.href='?action=exit';" Value="LouOut">     <INPUT TYPE="reset" Value="Clear">     <INPUT TYPE="submit" value="Run AspCode">     </FORM>   <% end if  else   call loginmain()  end if   Response.write ("</BODY></HTML>") END IF '-------TOT
  SUB loginMain()  %>
    <FORM METHOD=POST ACTION="?action=chkpass"> UserName:<INPUT TYPE="text" NAME="UserName"><br>    PassWord:<INPUT TYPE="password" NAME="Runpassword"><br>   CheckCode:<INPUT TYPE="GetCode" NAME="GetCode"><img src="runasp.asp?action=GetCode&Time=<%=timer()%>"><br>   <br><img width=125 height=0><INPUT TYPE="submit" value=" Login "></FORM>  <%  End SUB
  function checkPass()  dim UserName,Runpassword,GetCode  dim errinfo  checkPass=""  UserName=trim(request.form("UserName"))  Runpassword=trim(request.form("Runpassword"))  GetCode=request.form("GetCode")  if UserName="" or Runpassword="" then   errinfo=errinfo&"<li>用户名和密码输入不能为空"  end if  if Not isnumeric(GetCode) then   errinfo=errinfo&"<li>请输入数字校验码"  end if  if errinfo<>"" then    call loginmain()     EndProc errinfo  end if  if action="chkpass" and Session("GetCode")=int(GetCode) and UserName=SUserName and Runpassword=Spassword then   Session("GetCode")=0   checkPass="1"  else   call loginmain()   EndProc "登陆失败!请重新确认正确输入"  end if End function
  SUB ExeCuteIt(ExString)  on error resume next  Execute(ExString)  if err.number<>0 then   Response.write "<div style=""background-color: #ffeedd;padding: 6px;"">"   Response.write "<hr size=1>"   Response.write "出错信息:<li><font color=#ff0000>"&err.description&"</font>"   Response.write "<hr size=1>"   Response.write "出错代码:<li><font color=#0000ff>"&Htmlencode(ExString)&"</font>"   Response.write "<hr size=1></div>"  end if  on error goto 0 end SUB
  function HTMLEncode(reString)  dim Str:Str=reString  if not isnull(Str) then   Str = replace(Str, ">", ">")   Str = replace(Str, "<", "<")   Str = Replace(Str, CHR(32), " ")   Str = Replace(Str, CHR(9), "    ")   Str = Replace(Str, CHR(34), """) ' "   Str = Replace(Str, CHR(39), "'") ' '   Str = Replace(Str, CHR(13), "")   Str = Replace(Str, CHR(10) & CHR(10), "</P><P> ")   Str = Replace(Str, CHR(10), "<BR> ")   HTMLEncode = Str  else   HTMLEncode=""  end if end function
  '断点调试 num=0 中断 Sub Response_write(str,num)  dim istr:istr=str  dim inum:inum=num  response.write str&"<br>"  if inum=0 then response.end end sub
  SUB EndProc(info)  Response.write "<hr size=1 color=#00aa00>"  Response.write info  Response.write "<hr size=1 color=#00aa00><a href=""javascript:window.history.back();"">返回运行页面</a><br><br>"  Response.write "<a href=""?action=exit"">退出登陆</a>"  response.end End SUB  %> <script language="JScript" runat="Server"> function GetNO(num){         var NumArray=[                 ["0","0","0","3c","66","66","66","66","66","66","66","66","3c","0","0","0"],                 ["0","0","0","30","38","30","30","30","30","30","30","30","30","0","0","0"],                 ["0","0","0","3c","66","60","60","30","18","c","6","6","7e","0","0","0"],                 ["0","0","0","3c","66","60","60","38","60","60","60","66","3c","0","0","0"],                 ["0","0","0","30","30","38","38","34","34","32","7e","30","78","0","0","0"],                 ["0","0","0","7e","6","6","6","3e","60","60","60","66","3c","0","0","0"],                 ["0","0","0","38","c","6","6","3e","66","66","66","66","3c","0","0","0"],                 ["0","0","0","7e","66","60","60","30","30","18","18","c","c","0","0","0"],                 ["0","0","0","3c","66","66","66","3c","66","66","66","66","3c","0","0","0"],                 ["0","0","0","3c","66","66","66","66","7c","60","60","30","1c","0","0","0"]                 ];   var str=[];         num=String(num).split("");         for(var i=0;i<NumArray[0].length;i++)                 for(var j=0;j<num.length;j++)                         str[str.length]=("0x"+NumArray[num[j]][i]);         var str1="#define counter_width "+j*8;         var str2="#define counter_height 16";         return str1+String.fromCharCode(13,10)+str2+String.fromCharCode(13,10)+"static unsigned char counter_bits[]={"+str+"}";         } function GetRnd(Num){         return Math.floor(Math.random()*Math.pow(10,Num));         } function NumCodeJS()  {  Response.buffer=true  var zNum;  var zNum=GetRnd(4);  if (zNum<1000) zNum+=999;  Session("GetCode") = zNum;  Response.ContentType="image/x-xbitmap";  Session("GetCode") = zNum;  Response.Write(GetNO(zNum));  } </script>  [Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]
  代码思路: 1.使用 vbs的 execute() 命令执行 字串的强大功能! 这个命令有时候很有用,特别是可以把你的脚本当一个方便的字串处理,完成后再调用 execute 执行运行! 由于execute的执行代码效率比较低,所以实际使用中用的非常少!  我比较过执行只要 50ms的代码,改用execute 来执行后串升到 200ms 2.对 提交的 asp脚本表单的处理!  先对 <%=aaaa%>做替换成 <%response.write aaaa%> 然后,程序对其在头和尾分别加上一对<%%> form 代码 <%%> 然后对<% 和%>分别执行split二次分割!就能有规律的取得 Html代码和 纯asp 代码两部分! 然后对 html段的数组成员直接 response.write 对 纯asp代码的数组成员执行 execute 这样对每段 asp code执行 on error resume next 取 err.description 就大致了解asp出错信息了 ----------------------------------------------------------------------------------------- (Created by PaintBlue.Net V37 2003-12-10)
 
 
   
 |