信息系统项目管理师_2024年软考学习应考交流_信息系统项目管理师考试

 找回密码
 马上注册

QQ登录

只需一步,快速开始

楼主: 翔羽
打印 上一主题 下一主题

[转帖]ASP编程常用的代码

  [复制链接]

该用户从未签到

升级  30.8%

81
 楼主| 发表于 2006-2-25 12:38:43 | 只看该作者
<p><strong>产生一个密码,并记录到数据库,然后发送给用户</strong></p><hr/><p><br/>This article Generates a password random, Requires a database and Mails the Password.</p><p></p><p>&lt;%@language="vbscript" %&gt;</p><p></p><p>******************************<br/>&lt;% <br/>'code by Manikantan<br/>'Web Developer <br/>'3rd Agenda<br/>'Nungambakkam, Chennai India <br/>%&gt;</p><p></p><p>&lt;% </p><p></p><p>set mail= server.CreateObject("cdonts.newmail") <br/>mail.subject="Thank You for Registering" <br/>mail.to = mailid mail.from ="Webmaster@thesite" <br/>mail.body= "This is the Initial Password to our site...." &amp; vbcrlf <br/>&amp;href='mailto:mailid="user@ursite.com'&gt;mailid="user@ursite.com"<br/>address="address"</p><p></p><p><br/>'other data like phone number as per the member database in the site<br/>'all these values are obtained from the request method from a .htm which submits to this file<br/>'Mainly employed in registration<br/>'Assumes You have cdonts.dll installed in the web server.</p><p></p><p>set conn = server.CreateObject("adodb.connection")<br/>conn.Open "dsn","uid","pwd"<br/>set rec= conn.Execute("select count(*) from membertable")<br/>id = cint(rec.fields(0))+1 <br/>r=rnd *50<br/>Response.Write r &amp; "&lt;br&gt;"<br/>for i = 0 to 20<br/>if cint(r)&gt;0 and cint(r)&lt;26 then str=str +chr(97 + cint(r))<br/>r=rnd *100<br/>next </p><p></p><p>Response.Write str<br/>pwd=left(str,2)<br/>pwd=pwd &amp; id<br/>pwd=pwd &amp; right(str,2)<br/>pwd=pwd &amp; second(time)</p><p></p><p>'An Update Query can be Passed from here for the username ,password and other details or can be triggered <br/>from another page 'when the user responds to the mail...Something like sending a url as a mail and on <br/>click of the url in the mail..call another page 'which updates ..so we can be sure that only confirmed <br/>users are updated</p><p></p><p>%&gt;<br/>&lt;br&gt;<br/>&lt;% <br/>set mail= server.CreateObject("cdonts.newmail")<br/>mail.subject="Thank You for Registering"<br/>mail.to = mailid<br/>mail.from ="Webmaster@thesite"<br/>mail.body= "This is the Initial Password to our site...." &amp; vbcrlf &amp; "Change it if You Want" &amp; vbcrlf &amp; <br/>pwd &amp; vbcrlf &amp; "Thank You for Using the Site"<br/>mail.send<br/>%&gt;</p>

该用户从未签到

升级  30.8%

82
 楼主| 发表于 2006-2-25 12:39:09 | 只看该作者
<p><strong>会员系统“找回密码”的制作方法</strong></p><hr/><p>会员注册以后,有些会员可能会遇到忘记登录密码的问题,因而网站具备“找回密码”功能不仅是必须的,而且是服务贴心的具体表现之一。在此,levitian写了一个“找回密码”的小教程,供初学动态网站设计的朋友们借鉴,希望对大家有所帮助。<br/><br/>●相关说明:<br/>·levitian假设您已经作好了会员系统,接下来准备作“找回密码”功能但还没有作,或者您不知道怎么作这个功能,那么刚好可以看看本教程。<br/>·国内大多数服务器都支持Jmail邮件组件,因而levitian就使用该组件实现邮件发送功能;<br/>·传统的“找回密码”功能要使用“密码取回问题”和“密码取回答案”等字段,但levitian认为大可不必这么繁琐,反正最终目的是将密码发进用户的邮箱里,而用户的邮箱只有自己可以收发邮件,那么以上这两个字段就可以省略了。实际上只要填上用户名和自己的邮箱,按“找回密码”,启动Jmail邮件组件把密码发至用户邮箱--就这么简单!<br/>·levitian用的是Dreamweaver MX,您用Dreamweaver UltraDev当然也没问题了。<br/>·本系统主要用到了DW服务器行为中的“登录用户”和“插入”菜单中的“文件头标签”中的“刷新”子功能。用户不知道登录密码没关系,他可以用自己的用户名和邮箱找回密码,但如果该用户的邮箱是假的(胡填的),或根本没有在自己的注册资料中填邮箱,或者他输入了别人的邮箱,那么他也就无法进入找回密码的页面,当然也就无法找回自己的密码了~<br/><br/>好了,说了一大堆废话:) 赶快GO →<br/><br/>●步骤一:制作相关的ASP页面<br/>我们需要增加三个页面,一个页面是“找回密码登录页面”,这里我命名为getbackpass.asp;另一个是“密码发送成功报告页面”,这里我命名为getbackpassok.asp;第三个页面为邮箱不存在或用户名不正确时显示错误信息的页面,这里我命名为getbackpassfail.asp。<br/><br/>●步骤二:在会员登录页面增加“找回密码”文本型链接或图片型链接<br/>在会员登录界面中输入文本“找回密码”或者插入一张图片,将其链接至找回密码登录页面getbackpass.asp;如果您想把“找回密码”链接放在其它页面,当然没问题了。<br/><br/>●步骤三:制作找回密码登录页面getbackpass.asp<br/>·打开找回密码登录页面getbackpass.asp,建立表单域,插入两个文本域,第一个命名为MemberName,第二个命名为MemberEmail(您的会员信息数据表中的会员姓名字段和会员邮箱字段如不是MemberName和MemberEmail,请修改成相应的字段名),接下来插入一个“按钮”,命名为“取回密码”。<br/>·打开服务器行为面板,点击“+”,选择“用户身份验证”中的“登录用户”,在“登录用户”面板中,我主要说说以下项目的设置:<br/>使用连接验证:我们选择已经定义好的DSN连接<br/>表格:我们选择会员注册信息表单<br/>用户名列:我们选择MemberName<br/>密码列:我们选择MemberEmail<br/>如果登录成功转到:我们选择getbackpassok.asp<br/>如果登录失败转到:我们选择getbackpassfail.asp<br/>基于以下项限制访问:我们选择“用户名和密码”<br/>OK!可以按“确定”按钮了。<br/>·加入表单验证代码<br/>为防止用户不填表单就登录,可加入以下代码,让用户必须填写内容:<br/>将DW切换到源代码视图,首先,将以下代码加入&lt;head&gt; &lt;/head&gt;之间:<br/><br/>&lt;script language="JavaScript"&gt;<br/>&lt;!--<br/>function checkdata() {<br/>if (document.form1.MemberName.value=="") {<br/>window.alert ("请输入用户名 !")<br/>return false<br/>}<br/>if (document.form1.MemberEmail.value=="") {<br/>window.alert ("请输入您的邮箱 !")<br/>return false<br/>}<br/>return true<br/>}<br/>//--&gt;<br/>&lt;/script&gt;<br/><br/>接下来,在&lt;form&gt;标签里插入以下代码:onSubmit="return checkdata()"<br/>这样,表单验证就作好了。<br/><br/>●步骤四:制作密码发送成功报告页面getbackpassok.asp<br/>·打开密码发送成功报告页面getbackpassok.asp,输入文本“密码已发至您的邮箱中,请查询密码后登录本站!”<br/>·建立数据集member,您当然可以用其它的数据集名称:<br/>连接:一栏选择您定义的DSN连接<br/>表格:一栏选择会员信息数据表member<br/>列:一栏选定会员ID、用户名、密码和邮箱这四个字段<br/>筛选:MemberName=阶段变量MM_Username<br/>排序:不用填<br/>至此,数据集就建立好了。在筛选里,我们之所以用阶段变量(Session Variable),是因为我们需要筛选出找回密码的用户。使用DW服务器行为的“登录用户”行为以后,登录者的名称(数据库中的MemberName字段)就自动保存在名为MM_Username的Session变量中。这们使用“MemberName=阶段变量MM_Username”作为筛选条件,自然可以筛选出想找回密码的用户了。<br/>·接下来我们加入Jmail邮件发送代码。将Dreamweaver设计界面切换到显示代码视图,找见如下代码:<br/>&lt;%<br/>Dim member__MMColParam<br/>member__MMColParam = "1"<br/>If (Session("MM_Username") &lt;&gt; "") Then <br/>member__MMColParam = Session("MM_Username")<br/>End If<br/>%&gt;<br/>&lt;%<br/>set member = Server.CreateObject("ADODB.Recordset")<br/>member.ActiveConnection = MM_spsguavaskirtdate_STRING<br/>member.Source = "SELECT MemberID, MemberName, Password, MemberEmail FROM Member WHERE MemberName = '" + Replace(member__MMColParam, "'", "''") + "'"<br/>member.CursorType = 0<br/>member.CursorLocation = 2<br/>member.LockType = 3<br/>member.Open()<br/>member_numRows = 0<br/>%&gt;<br/>这是数据集形成的代码,然后在倒数第二行,即%&gt;上一行,插入以下Jmail组件代码:<br/>Set JMail = Server.CreateObject("JMail.SMTPMail") <br/>JMail.ServerAddress = "mail.emaichina.net:25"<br/>JMail.Sender = "emai@emaichina.net" <br/>JMail.Subject = "您的登录密码"<br/>JMail.AddRecipient(member.Fields.Item("MemberEmail").Value)<br/>JMail.Body = "尊敬的用户您好,首先感谢您使用我们的服务!." &amp; vbCrLf &amp; vbCrLf<br/>JMail.Body = JMail.Body &amp; "您的用户名是:" &amp;(member.Fields.Item("MemberName").Value) &amp; vbCrLf <br/>JMail.Body = JMail.Body &amp; "您的注册邮箱是:" &amp;(member.Fields.Item("MemberEmail").Value) &amp; vbCrLf <br/>JMail.Body = JMail.Body &amp; "您的登录密码是:" &amp;(member.Fields.Item("assword").Value) &amp; vbCrLf<br/>JMail.Body = JMail.Body &amp; "请妥善保管您的密码,如再次遗忘密码,请登录至http://www.emaichina.net/member/memberpage/getbackpass.asp 取回您的密码,谢谢您使用本系统。" &amp; vbCrLf<br/>JMail.Body = JMail.Body &amp; "顺祝商祺!" &amp; vbCrLf<br/>JMail.Body = JMail.Body &amp; "译媒艺术咨询有限公司"<br/>JMail.Priority = 3<br/>JMail.AddHeader "Originating-IP", Request.ServerVariables("REMOTE_ADDR")<br/>JMail.Execute<br/><br/>以上代码简单说明如下:<br/>JMail.ServerAddress= 后面填上您的SMTP服务器,如"mail.emaichina.net:25,千万别忘了填端口号:25;<br/>JMail.Sender= 后面填上您的邮箱,如emai@emaichina.net,请确保此邮箱可以正常收发邮件;<br/>JMail.Subject = 后面输入信件标题,如"您的登录密码",切记,文本之间一定要加上“"”;<br/>JMail.AddRecipient后面插入数据集member中的邮箱字段,如(member.Fields.Item("MemberEmail").Value);<br/>JMail.Body =后面输入信件的称谓部分,如: "尊敬的用户您好,首先感谢您使用我们的服务!." &amp; vbCrLf &amp; vbCrLf<br/>JMail.Body = 后面开始输入信件内容,如果是动态内容,那么插入数据集中的相应字段,如果是静态内容,则直接输入文本即可。每一段使用一个JMail.Body =,结尾都加上vbCrLf,有多少段就拷贝粘贴多少个JMail.Body =,这样就可以写出来一封完整的找回密码回复信。<br/>关于vbCrLf说明:vbCrLf的作用是换行,您想空一行就加一个 vbCrLf,想空两行就加两个vbCrLf…但在vbCrLf和vbCrLf之间一定要加“&amp;”符号将它们隔开,否则会出现错误提示。<br/></p>

该用户从未签到

升级  30.8%

83
 楼主| 发表于 2006-2-25 12:39:30 | 只看该作者
●制作显示错误信息页面getbackpassfail.asp<br/>如果用户名、密码错误或用户名和密码根本不存在,那么系统会转到显示错误信息页面,并且在2秒后自动返回“找回密码登录页面”。下面是制作方法:<br/>打开getbackpassfail.asp,在页面中输入文本“您的邮箱不存在,请确认您在注册资料中填写了邮箱! ”,然后,打开DW软件菜单中的→插入”→“文件头标签”→“刷新”,“延迟”填上2,就是2秒,如果您想让页面保持时间更长,也可以填3秒、5秒甚至10秒;“操作”选择“转到URL”,填上getbackpass.asp,这样这个页面2秒钟后就会自动回到“找回密码登录页面”了。<br/>OK!这个页面就做好了,很简单!<br/><br/>●测试这个找回密码系统<br/>以上系统作好后,您可以测试一下。如果您在本地测试,并且不是用的Win98操作系统,那么需要安装Jmail邮件组件(这个组件可去下载网站下载,是免费的);如果您用的是Win98操作系统或您的计算机中没有安装Jmail邮件组件,那么,可把这个系统上传到支持Jmail邮件组件的服务器空间上,试着找回密码,如果没问题,说明您成功了。如果有问题,请仔细查看制作步骤或代码有没有错误,这里祝您好运!<br/>说明:学会“找回密码系统”的制作方法后,您可以举一反三作一个会员注册后的邮件自动回复系统,也相当简单,大家可以试一下。<br/><br/>●“找回密码”邮件样式<br/>以下是levitian测试本系统后,在Foxmail收到的邮件,样式基本上这样的:<br/>------------------------------------------------<br/>尊敬的用户您好,首先感谢您使用我们的服务!.<br/><br/>您的用户名是:levi<br/>您的注册邮箱是:levitian@163.com<br/>您的登录密码是:741127<br/>请妥善保管您的密码,如再次遗忘密码,请登录至http://www.emaichina.net/member/memberpage/getbackpass.asp 取回您的密码,谢谢您使用本系统。<br/>顺祝商祺!<br/>

该用户从未签到

升级  30.8%

84
 楼主| 发表于 2006-2-25 12:40:05 | 只看该作者
<p><strong>从数据库中动态选取下拉列表的方法</strong></p><hr/><p>有一页填表的页面,其中有几个下拉表单是通过一个表的某个字段动态<br/>生成,比如省下面的城市名,希望选择某一个省即可自动在另一下拉表<br/>单内生成城市名,.....然后提交给asp处理加入到另外一个表内。</p><p>&lt;form name=f1 METHOD="OST"&gt;<br/>&lt;%<br/>OpenDB objConn, "xxxx"<br/>Set RSClass = objConn.Execute("SELECT * FROM class Order by fldClass")<br/>If RSClass.EOF Then <br/>Response.Write "没有记录。&lt;BR&gt;"</p><p>Else</p><p>Response.Write "&lt;SELECT NAME=""class"" style=""FONT-SIZE: 9pt"" SIZE=10" &amp; _<br/>" ONCHANGE=""classselected(this);"" &gt;"<br/>sJavaScript = "function classselected(elem){" &amp;_<br/>vbCrlf &amp; _<br/>"for (var i = document.f1.sort.options.length; i &gt;= 0; i--){" &amp; vbCrlf &amp; _<br/>"document.f1.sort.options = null;" &amp; _ <br/>vbCrlf<br/>Do Until RSClass.EOF<br/>If sLastClass &lt;&gt; RSClass("fldClass") Then<br/>sLastClass = RSClass("fldClass")<br/>Response.Write "&lt;OPTION VALUE=" &amp; RSClass("fldID") &amp; "&gt;" &amp; sLastClass &amp; "&lt;/OPTION&gt;"<br/>sJavaScript = sJavaScript &amp; "}" &amp; vbCrlf &amp; _<br/>"if (elem.options[elem.selectedIndex].value==" &amp; _<br/>RSClass("fldID") &amp; "){" &amp; vbCrlf<br/>End If<br/>sJavaScript = sJavaScript &amp; _<br/>"document.f1.sort.options[document." &amp; _<br/>"f1.sort.options.length] = new Option('" &amp; _<br/>RSClass("fldSort") &amp; "','" &amp; RSClass("fldID") &amp; "');" &amp; _<br/>vbCrlf<br/>RSClass.MoveNext<br/>Loop<br/>Response.Write "&lt;/SELECT&gt;"<br/>Response.Write "&lt;SELECT NAME=""sort"" style=""FONT-SIZE: 9pt"" SIZE=10&gt;"<br/>Response.Write "&lt;OPTION&gt;[请选择]&lt;/OPTION&gt;"<br/>Response.Write "&lt;/SELECT&gt;"<br/><br/>sJavaScript = sJavaScript &amp; vbCrlf &amp; "}" &amp; vbCrlf &amp; "}" &amp; vbCrlf<br/>Response.Write "&lt;SCR" &amp; "IPT LANGUAGE=""JavaScript""&gt;" &amp; vbCrlf<br/>Response.Write sJavaScript &amp; vbCrlf &amp; "&lt;/SCR" &amp; "IPT&gt;" &amp; vbCrlf<br/>End If<br/>RSClass.Close<br/>Set RSClass = Nothing%&gt;<br/>&lt;/form&gt;</p>

该用户从未签到

升级  30.8%

85
 楼主| 发表于 2006-2-25 12:40:34 | 只看该作者
<strong>在asp中加密与解密对应的函数<hr/></strong><p>在ASP中加密方法有对应的解密方法好象不多,现在根据前辈资料整理出在asp中加密与解密函数 </p><p>rsa.asp <br/>&lt;% <br/>rem 在ASP中实现加密与解密,加密方法:根据RSA <br/>rem 联系:hnsoso@sina.com <br/>Class clsRSA </p><p>  Public PrivateKey <br/>  Public PublicKey <br/>  Public Modulus <br/>   <br/>   <br/>   <br/>  Public Function Crypt(pLngMessage, pLngKey) <br/>    On Error Resume Next <br/>    Dim lLngMod <br/>    Dim lLngResult <br/>    Dim lLngIndex <br/>    If pLngKey Mod 2 = 0 Then <br/>      lLngResult = 1 <br/>      For lLngIndex = 1 To pLngKey / 2 <br/>        lLngMod = (pLngMessage ^ 2) Mod Modulus <br/>        ' Mod may error on key generation <br/>        lLngResult = (lLngMod * lLngResult) Mod Modulus <br/>        If Err Then Exit Function <br/>      Next <br/>    Else <br/>      lLngResult = pLngMessage <br/>      For lLngIndex = 1 To pLngKey / 2 <br/>        lLngMod = (pLngMessage ^ 2) Mod Modulus <br/>        On Error Resume Next <br/>        ' Mod may error on key generation <br/>        lLngResult = (lLngMod * lLngResult) Mod Modulus <br/>        If Err Then Exit Function <br/>      Next <br/>    End If <br/>    Crypt = lLngResult <br/>  End Function </p><p></p><p>  Public Function Encode(ByVal pStrMessage) <br/>    Dim lLngIndex <br/>    Dim lLngMaxIndex <br/>    Dim lBytAscii <br/>    Dim lLngEncrypted <br/>    lLngMaxIndex = Len(pStrMessage) <br/>    If lLngMaxIndex = 0 Then Exit Function <br/>    For lLngIndex = 1 To lLngMaxIndex <br/>      lBytAscii = Asc(Mid(pStrMessage, lLngIndex, 1)) <br/>      lLngEncrypted = Crypt(lBytAscii, PublicKey) <br/>      Encode = Encode &amp; NumberToHex(lLngEncrypted, 4) <br/>    Next <br/>  End Function <br/>   <br/>  Public Function Decode(ByVal pStrMessage) <br/>    Dim lBytAscii <br/>    Dim lLngIndex <br/>    Dim lLngMaxIndex <br/>    Dim lLngEncryptedData <br/>    Decode = "" <br/>    lLngMaxIndex = Len(pStrMessage) <br/>    For lLngIndex = 1 To lLngMaxIndex Step 4 <br/>      lLngEncryptedData = HexToNumber(Mid(pStrMessage, lLngIndex, 4)) <br/>      lBytAscii = Crypt(lLngEncryptedData, PrivateKey) <br/>      Decode = Decode &amp; Chr(lBytAscii) <br/>    Next <br/>  End Function <br/>   <br/>  Private Function NumberToHex(ByRef pLngNumber, ByRef pLngLength) <br/>    NumberToHex = Right(String(pLngLength, "0") &amp; Hex(pLngNumber), pLngLength) <br/>  End Function </p><p>  Private Function HexToNumber(ByRef pStrHex) <br/>    HexToNumber = CLng("&amp;h" &amp; pStrHex) <br/>  End Function </p><p>End Class <br/>%&gt; </p><p></p><p>test.asp <br/>&lt;!--#INCLUDE FILE="RSA.asp"--&gt; <br/>&lt;% <br/>function Encryptstr(Message) <br/>Dim LngKeyE <br/>Dim LngKeyD <br/>Dim LngKeyN <br/>Dim StrMessage <br/>Dim ObjRSA </p><p><br/>  LngKeyE = "32823" <br/>  LngKeyD = "20643" <br/>  LngKeyN = "29893" <br/>  StrMessage = Message <br/>   <br/>  Set ObjRSA = New clsRSA <br/>   <br/>  <br/>      ObjRSA.PublicKey = LngKeyE <br/>      ObjRSA.Modulus = LngKeyN <br/>      Encryptstr = ObjRSA.Encode(StrMessage) <br/>  Set ObjRSA = Nothing <br/>end function </p><p></p><p><br/>function decryptstr(Message) <br/>Dim LngKeyE <br/>Dim LngKeyD <br/>Dim LngKeyN <br/>Dim StrMessage <br/>Dim ObjRSA </p><p><br/>  LngKeyE = "32823" <br/>  LngKeyD = "20643" <br/>  LngKeyN = "29893" <br/>  StrMessage = Message <br/>   <br/>  Set ObjRSA = New clsRSA </p><p>      ObjRSA.PrivateKey =LngKeyD <br/>      ObjRSA.Modulus=LngKeyN <br/>      decryptstr=ObjRSA.Decode(StrMessage) <br/>  Set ObjRSA = Nothing <br/>end function </p><p></p><p>dim last,first <br/>first="sohu" <br/>Response.Write "加密前为:"&amp;first <br/>last=Encryptstr(first) <br/>Response.Write "加密后为"&amp;last <br/>Response.Write "解密后为" &amp;decryptstr(last) </p><p>%&gt;</p>

该用户从未签到

升级  30.8%

86
 楼主| 发表于 2006-2-25 12:41:03 | 只看该作者
<p><strong>使用ASP生成HTML文件</strong></p><hr/><p>&lt;!--index.htm--&gt;</p><p>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"<br/>"http://www.w3.org/TR/html4/loose.dtd"&gt;<br/>&lt;html&gt;<br/>&lt;head&gt;<br/>&lt;title&gt;Untitled Document&lt;/title&gt;<br/>&lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312"&gt;<br/>&lt;/head&gt;</p><p>&lt;body&gt;<br/>&lt;table width="770" border="0" align="center" cellpadding="0" cellspacing="0"&gt;<br/>&lt;tr&gt;<br/>&lt;td&gt;&lt;form name="form1" method="post" action="send.asp"&gt;<br/>&lt;table width="100%" border="0" cellpadding="0" cellspacing="0" bgcolor="#CCFFFF"&gt;<br/>&lt;tr&gt;<br/>&lt;td height="20"&gt;&lt;div align="center"&gt;发送消息&lt;/div&gt;&lt;/td&gt;<br/>&lt;/tr&gt;<br/>&lt;tr&gt;<br/>&lt;td&gt;&lt;div align="center"&gt;<br/>&lt;textarea name="msg" cols="100" rows="6"&gt;&lt;/textarea&gt;<br/>&lt;/div&gt;&lt;/td&gt;<br/>&lt;/tr&gt;<br/>&lt;tr&gt;<br/>&lt;td&gt;&lt;div align="center"&gt;<br/>&lt;input type="submit" name="Submit" value="Submit"&gt;<br/>&lt;input type="reset" name="Submit2" value="Reset"&gt;<br/>&lt;/div&gt;&lt;/td&gt;<br/>&lt;/tr&gt;<br/>&lt;/table&gt;<br/>&lt;/form&gt;&lt;/td&gt;<br/>&lt;/tr&gt;<br/>&lt;/table&gt;<br/>&lt;/body&gt;<br/>&lt;/html&gt;<br/>'//send.asp</p><hr/><p>&lt;%<br/>function chan_time(shijian)'转换日期时间函数<br/>s_year=year(shijian)<br/>if len(s_year)=2 then s_year="20"&amp;s_year<br/>s_month=month(shijian)<br/>if s_month&lt;10 then s_month="0"&amp;s_month<br/>s_day=day(shijian)<br/>if s_day&lt;10 then s_day="0"&amp;s_day<br/>s_hour=hour(shijian)<br/>if s_hour&lt;10 then s_hour="0"&amp;s_hour<br/>s_minute=minute(shijian)<br/>if s_minute&lt;10 then s_minute="0"&amp;s_minute<br/>chan_time=s_year &amp; s_month &amp; s_day &amp; s_hour &amp; s_minute<br/>end function</p><p>function chan_data(shijian) '转换日期时间函数<br/>s_year=year(shijian)<br/>if len(s_year)=2 then s_year="20"&amp;s_year<br/>s_month=month(shijian)<br/>if s_month&lt;10 then s_month="0"&amp;s_month<br/>s_day=day(shijian)<br/>if s_day&lt;10 then s_day="0"&amp;s_day<br/>chan_data=s_year &amp; s_month &amp; s_day<br/>end function</p><p>function chan_file(shijian)'转换日期时间函数<br/>s_month=month(shijian)<br/>if s_month&lt;10 then s_month="0"&amp;s_month<br/>s_day=day(shijian)<br/>if s_day&lt;10 then s_day="0"&amp;s_day<br/>s_hour=hour(shijian)<br/>if s_hour&lt;10 then s_hour="0"&amp;s_hour<br/>s_minute=minute(shijian)<br/>if s_minute&lt;10 then s_minute="0"&amp;s_minute<br/>s_ss=second(shijian)<br/>if s_ss&lt;10 then s_ss="0"&amp;s_ss<br/>chan_file = s_month &amp; s_day &amp; s_hour &amp; s_minute &amp; s_ss<br/>end function<br/>top="&lt;html&gt;&lt;head&gt;&lt;title&gt;news&lt;/title&gt;&lt;/head&gt;&lt;body&gt;"<br/>botom="&lt;/body&gt;&lt;/html&gt;"<br/>msg=request.Form("msg")<br/>msg=replace(msg,vbcrlf,"")<br/>msg=replace(msg,chr(9),"") <br/>msg=replace(msg," ","&amp;nbsp;")<br/>msg=replace(msg,"\r\n","&lt;br&gt;")<br/>msg=replace(msg,"\n","&lt;br&gt;")<br/>msg=top&amp;msg&amp;botom<br/>Set fs=Server.CreateObject("Scripting.FileSystemObject")<br/>all_tree2=server.mappath("news")&amp;"\"&amp;chan_data(now)<br/>if (fs.FolderExists(all_tree2)) then'判断今天的文件夹是否存在<br/>else<br/>fs.CreateFolder(all_tree2)<br/>end if <br/>pass=chan_file(now)<br/>randomize '使用系统计时器来初始化乱数产生器<br/>pass=rnd(pass)<br/>pass=get_pass(pass)<br/>pass=left(pass,10)</p><hr/><br/>file1=pass<br/>files=file1&amp;".txt"<br/>filez=all_tree2&amp;"\"&amp;files <p>set ts = fs.createtextfile(filez,true) '写文件<br/>for z=1 to len(msg)<br/>write_now=mid(msg,z,1)<br/>ts.write(write_now)<br/>next<br/>' ts.writeline(all_msg)<br/>ts.close<br/>set ts=nothing '文件生成</p><p>if err.number&lt;&gt;0 or err then%&gt;<br/>&lt;script language="javascript"&gt;<br/>alert("不能完成")<br/>&lt;/script&gt;<br/>&lt;%else%&gt;<br/>&lt;script language="javascript"&gt;<br/>alert("已完成")<br/>history.back();<br/>&lt;/script&gt;<br/>&lt;%end if<br/>Set MyFile = fs.GetFile(filez) <br/>all_tree2=server.mappath("news")&amp;"\"&amp;chan_data(now)<br/>if (fs.FolderExists(all_tree2)) then<br/>else<br/>fs.CreateFolder(all_tree2)<br/>end if <br/>MyFile.name= left(MyFile.name,len(MyFile.name)-4)&amp;".htm" <br/>set MyFile=nothing <br/>set fs=nothing<br/>set fdir=nothing<br/>function get_pass(pass)</p><p>pass=cstr(pass)<br/>pass=replace(pass," ","")<br/>pass=replace(pass," ","")<br/>pass=replace(pass,"-","")<br/>pass=replace(pass," ","")<br/>pass=replace(pass,":","")<br/>pass=replace(pass,".","")<br/>pass=replace(pass,"+","")<br/>pass=replace(pass,"_","")<br/>pass=replace(pass,"&lt;","")<br/>pass=replace(pass,"&gt;","")<br/>pass=replace(pass,"!","")<br/>pass=replace(pass,"@","")<br/>pass=replace(pass,"#","")<br/>pass=replace(pass,"$","")<br/>pass=replace(pass,"%","")<br/>pass=replace(pass,"^","")<br/>pass=replace(pass,"&amp;","")<br/>pass=replace(pass,"*","")<br/>pass=replace(pass,"(","")<br/>pass=replace(pass,")","")<br/>pass=replace(pass,"=","")<br/>pass=replace(pass,"\","")<br/>pass=replace(pass,"/","")<br/>pass=replace(pass,"|","")<br/>get_pass=pass</p>

该用户从未签到

升级  30.8%

87
 楼主| 发表于 2006-2-25 12:41:29 | 只看该作者
<p><strong>彩色校验码的制作</strong></p><hr/><p>要读懂这些代码主要是要了解ASP中操作二进制数据的对象ADODB.Stream!本程序主要用的就是Adodb.Stream,如果你有这个基础,就可以进一步添加更多的功能如加入杂点,渐变底色,数字行列错位,笔画短点,提高被ocr识别的不可能。目前还没有好的识别引擎,昨天下载了个号称能识别图像验证码90%的!把4321识别成 89910,所以图像码还是比较安全的。</p><p>在网上看到有暴力破解的方法,如果我用图像附加码+禁止外部提交+10次密码错误封帐号 +50次密码错误琐死IP+10秒的防刷新间隔注册页,登陆页均要加上+禁止外部提交,这样,暴力破解应该就没戏了。</p><p>Asp文件:Code.Asp<br/>数据文件:body.Fix , Head.Fix<br/>用法:&lt;img src="code.asp"&gt;</p><p>Response.buffer = true<br/>NumCode</p><p>Function NumCode()<br/>Response.Expires = -1<br/>Response.AddHeader "ragma","no-cache"<br/>Response.AddHeader "cache-ctrol","no-cache"<br/>dim zNum,i,j<br/>dim Ados,Ados1<br/>Randomize timer<br/>生成随机四位数字:<br/>zNum = cint(8999*Rnd+1000)<br/>传递给session<br/>Session("GetCode") = zNum<br/>该for循环是将随机数字放入一个下标3的数组,便于提供给后面的阵列变换<br/>dim zimg(3),NStr<br/>NStr=cstr(zNum)<br/>For i=0 to 3<br/>zimg(i)=cint(mid(NStr,i+1,1))<br/>Next<br/>dim Pos</p><p>'定义二个 ADODB.Stream binary对象,作图像数据操作之用:</p><p>set Ados=Server.CreateObject("Adodb.Stream")<br/>Ados.Mode=3<br/>Ados.Type=1<br/>Ados.Open<br/>set Ados1=Server.CreateObject("Adodb.Stream")<br/>Ados1.Mode=3<br/>Ados1.Type=1<br/>Ados1.Open<br/>'载入0~9的数字数据10x100的,Gbr的阵列数据,每个320字节,10个数字3200byte<br/>'BGR一个点,10x10个点一个数字,一个点三个字节(二进制8位,16进制 00~FF)<br/>'一行10个点 30字节 + 行结束标记 00 00 二字节 32字节,所以一个10x100宽小于长的图像每个数字10x10是320字节<br/>'长大于宽的则无行结束标记 0000,直接是300字节<br/>这些就是BMP 24bit的数据详细信息了<br/>‘至于头部,也很简单,包含长宽,图像开始标记等等~~才54字节,远没jpg什么的复杂</p><p>Ados.LoadFromFile(Server.mappath("body.Fix"))<br/>Ados1.write Ados.read(1280)<br/>'第一个for循环,按生成的随机数字顺序从 10X100的数字阵列中提取出相应的四个数字<br/>但是竖排的数字阵列<br/>for i=0 to 3<br/>Ados.Position=(9-zimg(i))*320<br/>Ados1.Position=i*320<br/>Ados1.write ados.read(320)<br/>next<br/>'清空已经用完的ADOS的数据,调入替换新的图像头54字节的头文件 <br/>Ados.LoadFromFile(Server.mappath("head.fix"))<br/>os=lenb(Ados.read())<br/>Ados.Position=Pos '指定Pos位置,即可再偏移54字节的位置添加图形数据<br/>第二个for循环,进行数字的阵列变换,由竖排的块转换为横排的数字块<br/>方法是隔320字节抽取4次30字节写入ados对象,再抽取偏移第二行的图像数据<br/>30字节是因为bmp 宽大于长时无00 00的行结束标记<br/>for i=0 to 9 step 1<br/>for j=0 to 3<br/>Ados1.Position=i*32+j*320<br/>Ados.Position=Pos+30*j+i*120<br/>Ados.write ados1.read(30)<br/>next<br/>next<br/>Ados.Position=0<br/>response.BinaryWrite直接向客户端发送图像数据<br/>Response.ContentType = "image/BMP"<br/>Response.BinaryWrite Ados.read()<br/>Ados.Close:set Ados=nothing<br/>Ados1.Close:set Ados1=nothing<br/>End Function</p>

该用户从未签到

升级  30.8%

88
 楼主| 发表于 2006-2-25 12:42:43 | 只看该作者
<p><strong>远程获取内容,并将内容存在本地电脑上,包括任何文件</strong></p><hr/><p>&lt;%<br/>'------------------------------------------------------------------------<br/>'-------------------无垠网域:http://www.5inet.net/ ---------------------<br/>'-------------------作者:嘻哈呵嘿 ,webmaster@5inet.net -----------------<br/>'----------远程获取内容,并将内容存在本地电脑上,包括任何文件!----------<br/>'---------------利用xmlhttp和adodb.stream,酷!绝对原创!-----------------<br/>'On Error Resume Next<br/>'Set the content type to the specific type that you are sending.<br/>'Response.ContentType = "IMAGE/JPEG"<br/>'-------------------------------定义输出格式----------------------------- <br/><br/><br/>ath=request.querystring("p")<br/>sPath = Path<br/>if left(lcase(path),7) &lt;&gt; "http://" then <br/>'-------------如果前面没有http就是本地文件,交给LocalFile处理------------<br/>LocalFile(path)<br/>else<br/>'--------------------否则为远程文件,交给RemoteFile处理------------------<br/>RemoteFile(Path)<br/>end if<br/>'Response.Write err.Description <br/><br/>sub LocalFile(Path)<br/>'-------------------如果为本地文件则简单的跳转到该页面-------------------<br/>Response.Redirect Path<br/>End Sub<br/><br/>Sub RemoteFile(sPath)<br/>'-------------------------处理远程文件函数------------------------------<br/>FileName = GetFileName(sPath)<br/>'-------------GetFileName为把地址转换为合格的文件名过程-------------<br/>FileName = Server.MapPath("/UploadFile/Cache/" &amp; FileName)<br/>Set objFso = Server.CreateObject("Scripting.FileSystemObject")<br/>'Response.Write fileName<br/>if objFso.FileExists(FileName) Then<br/>'--------------检查文件是否是已经访问过,如是,则简单跳转------------<br/>Response.Redirect "/uploadfile/cache/" &amp; GetFileName(path)<br/>Else<br/>'----------------否则的话就先用GetBody函数读取----------------------<br/>'Response.Write Path<br/>t = GetBody(Path)<br/>'-----------------用二进制方法写到浏览器上--------------------------<br/>Response.BinaryWrite t<br/>Response.Flush<br/>'-----------------输出缓冲------------------------------------------<br/>SaveFile t,GetFileName(path)<br/>'------------------将文件内容缓存到本地路径,以待下次访问-----------<br/>End if <br/>Set objFso = Nothing<br/>End Sub<br/><br/>Function GetBody(url) <br/>'-----------------------本函数为远程获取内容的函数---------------------<br/>'on error resume next<br/>'Response.Write url<br/>Set Retrieval = CreateObject("Microsoft.XMLHTTP") <br/>'----------------------建立XMLHTTP对象-----------------------------<br/>With Retrieval <br/>.Open "Get", url, False, "", "" <br/>'------------------用Get,异步的方法发送-----------------------<br/>.Send <br/>'GetBody = .ResponseText<br/>GetBody = .ResponseBody<br/>'------------------函数返回获取的内容--------------------------<br/>End With <br/>Set Retrieval = Nothing <br/>'response.Write err.Description <br/>End Function<br/><br/>Function GetFileName(str)<br/>'-------------------------本函数为合格化的文件名函数-------------------<br/>str = Replace(lcase(str),"http://","")<br/>str = Replace(lcase(str),"//","/")<br/>str = Replace(str,"/","")<br/>str = replace(str,vbcrlf,"")<br/>GetFileName = str<br/>End Function<br/><br/>sub SaveFile(str,fName)<br/>'-------------------------本函数为将流内容存盘的函数-------------------<br/>'on error resume next<br/>Set objStream = Server.CreateObject("ADODB.Stream")<br/>'--------------建立ADODB.Stream对象,必须要ADO 2.5以上版本---------<br/>objStream.Type = adTypeBinary<br/>'-------------以二进制模式打开-------------------------------------<br/>objStream.Open<br/>objstream.write str<br/>'--------------------将字符串内容写入缓冲--------------------------<br/>'response.Write fname<br/>objstream.SaveToFile "c:\inetpub\myweb\uploadfile\cache\" &amp; fName,adSaveCreateOverWrite<br/>'--------------------将缓冲的内容写入文件--------------------------<br/>'response.BinaryWrite objstream.Read <br/>objstream.Close()<br/>set objstream = nothing<br/>'-----------------------关闭对象,释放资源-------------------------<br/>'response.Write err.Description <br/>End sub<br/>%&gt; </p>

该用户从未签到

升级  30.8%

89
 楼主| 发表于 2006-2-26 10:53:20 | 只看该作者
<p><strong>ASP代码的对象化</strong></p><hr/><p>提起ASP很多人就认为是一堆HTML脚本和被括在&lt;%和%&gt;之中的一些代码还有就是一些JAVASCRIPT脚本等筹在一起的一些代码的集合,这样的代码,再加上各类的不同格式的注释,看起来就一个字:乱。也不管别人能不能看得懂,只要是能实现自己的目的就可以了,因为ASP的代码也是脚本,给了客户也不可能不被人看到其中的内容,经多包容在DLL中一部分业务逻辑,但是还是觉得ASP代码是最不值钱的代码,没有人回去购买,可以随时从别人的网站中查看源码的形式得到别人辛辛苦苦编写出来的独特风格的东东。这些原因使ASP的发展成为了一种编的快忘的也快的代码,可读性,维护性也是各种语言中最为差的代码。<br/>其实,ASP代码也可以像其他语言一样的面向对象,模块化,将很多页面集成封装到一个类中,运用类中的不同方法来显示不同的页面,这样你可以将同一业务逻辑下的页面和逻辑封装到一个类里,用不同的方法来实现。说了这么多,可能大家的思路都乱了,赶快给大家一点范例来看看:</p><p>&lt;%<br/>'****************************************</p><p>'* 类名:clsWebWorkFlowLog </p><p>'* 功能:工作流日志跟踪类</p><p>'* History: </p><p>'* 作成:doface </p><p>'* 日期:2003/10/24 Ver 1.0 </p><p>'* 改动: </p><p>'* 日期:</p><p>'****************************************</p><p>class clsWebWorkFlowLog</p><p>'定义公开属性存放Connection对象<br/>public ActiveConnection<br/><br/>private oResponse<br/><br/>'========================================<br/>'= 过程名:main<br/>'= 参 数:<br/>'= 功 能:主调函数<br/>'= 根据不同动作参数执行不同的操作<br/>'= 返回值:<br/>'========================================<br/>sub main()<br/>select case Request("act")<br/>case "list"<br/>list()<br/>case else<br/>list()<br/>end select<br/>end sub<br/><br/>'========================================<br/>'= 过程名:list<br/>'= 参 数:<br/>'= 功 能:显示列表画面<br/>'= 返回值:<br/>'========================================<br/>sub list()<br/>dim oRs<br/>set oRs = ActiveConnection.execute("select *,(select name from wf_config where id=w.wf_id) as wfname from wf_log w where step_id=1 and user_id=" &amp; session("usr")("uid"))<br/>'(select * from wf_log where id in (select max(id),wf_id,tab_id,rec_id from wf_log group by wf_id,tab_id,rec_id where wf_id= and tab_id=))<br/>%&gt; &lt;p align="left"&gt;&lt;img border="0" src="../images/desk/workflow-new.gif" WIDTH="32" HEIGHT="32"&gt;&lt;font color="#FF0000"&gt;&lt;b&gt;待办事宜:&lt;/b&gt;&lt;/font&gt;&lt;/p&gt;<br/>&lt;center&gt;</p><p>&lt;table bgColor="#FFFFFF" border="1" borderColorDark="#ffffff" borderColorLight="#c0c0c0" cellSpacing="0" width="99%" height="25"&gt;<br/>&lt;tr&gt;<br/>&lt;td bgColor="#808080" height="15"&gt;&lt;font color="#FFFFFF"&gt;流程名称&lt;/font&gt;&lt;/td&gt;<br/>&lt;td bgColor="#808080" height="15"&gt;&lt;font color="#FFFFFF"&gt;申请人&lt;/font&gt;&lt;/td&gt;<br/>&lt;td bgColor="#808080" height="15"&gt;&lt;font color="#FFFFFF"&gt;申请时间&lt;/font&gt;&lt;/td&gt;<br/>&lt;td bgColor="#808080" height="15"&gt;&lt;font color="#FFFFFF"&gt;完成时间&lt;/font&gt;&lt;/td&gt;<br/>&lt;td bgColor="#808080" height="15"&gt;&lt;font color="#FFFFFF"&gt;状态&lt;/font&gt;&lt;/td&gt;<br/>&lt;td bgColor="#808080" height="15"&gt;&lt;font color="#FFFFFF"&gt;操作&lt;/font&gt;&lt;/td&gt;<br/>&lt;/tr&gt;&lt;%<br/>do while not oRs.eof<br/>dim maxID,Next_id<br/>if glbFunc.getMaxID(oRs("id").value,ActiveConnection,maxID,Next_id) then<br/>%&gt;&lt;tr&gt;<br/>&lt;td bgColor="#ffffff" height="19"&gt;&lt;%=oRs("wfname")%&gt;&lt;/a&gt;&lt;/td&gt;<br/>&lt;td bgColor="#ffffff" height="19"&gt;&lt;%=session("usr")("name")%&gt;&amp;nbsp;&lt;/td&gt;<br/>&lt;td bgColor="#ffffff" height="19"&gt;&lt;%=oRs("exetime")%&gt;&amp;nbsp;&lt;/td&gt;<br/>&lt;td bgColor="#ffffff" height="19"&gt;&amp;nbsp;&lt;/td&gt;<br/>&lt;td bgColor="#ffffff" height="19"&gt;&lt;%=glbFunc.getCurZT(oRs("id").value,ActiveConnection)%&gt;&lt;/td&gt;<br/>&lt;td bgColor="#ffffff" height="19"&gt;&lt;p align="left"&gt;&lt;a href="../PubExeTab/PubExeTab.asp?act=view&amp;tab_id=&lt;%=oRs("tab_id")%&gt;&amp;id=&lt;%=oRs("rec_id")%&gt;"&gt;&lt;img src="../images/action/view.gif" border="0" alt="详细" WIDTH="16" HEIGHT="16"&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="javascript:newin('wfimage.asp?act=list&amp;id=&lt;%=oRs("wf_id")%&gt;&amp;bz=1&amp;step_id=&lt;%=next_id%&gt;',true,false,false,false,true);"&gt;&lt;img src="../images/action/lcchuli.gif" border="0" alt="流程追踪" WIDTH="16" HEIGHT="16"&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;&lt;/td&gt;&lt;%<br/>end if<br/>%&gt;&lt;/tr&gt;&lt;%<br/>oRs.movenext<br/>loop<br/>%&gt;&lt;/table&gt; </p><p>&lt;/center&gt;<br/>&lt;%<br/>end sub<br/></p><p><br/>end class<br/>'****************************************<br/>'* 类结束 <br/>'****************************************</p><p><br/>'****************************************<br/>'ASP页面开始 <br/>'****************************************</p><p>'输出标准HTML头<br/>glbFunc.writeHEAD</p><p>dim oWebWorkFlowLog<br/>set oWebWorkFlowLog = new clsWebWorkFlowLog<br/>set oWebWorkFlowLog.ActiveConnection = glbFunc.getADOConnection</p><p>oWebWorkFlowLog.main </p><p>glbFunc.writeTail()<br/>%&gt;</p><p></p><p>可以添加更多的方法,这样这一个类就能完成以前多个ASP文件的功能。访问的时候,在 .ASP之后加上参数(要访问哪个函数)即可区分出来。</p><p><br/></p>

该用户从未签到

升级  30.8%

90
 楼主| 发表于 2006-2-26 10:53:20 | 只看该作者
<p><strong>ASP代码的对象化</strong></p><hr/><p>提起ASP很多人就认为是一堆HTML脚本和被括在&lt;%和%&gt;之中的一些代码还有就是一些JAVASCRIPT脚本等筹在一起的一些代码的集合,这样的代码,再加上各类的不同格式的注释,看起来就一个字:乱。也不管别人能不能看得懂,只要是能实现自己的目的就可以了,因为ASP的代码也是脚本,给了客户也不可能不被人看到其中的内容,经多包容在DLL中一部分业务逻辑,但是还是觉得ASP代码是最不值钱的代码,没有人回去购买,可以随时从别人的网站中查看源码的形式得到别人辛辛苦苦编写出来的独特风格的东东。这些原因使ASP的发展成为了一种编的快忘的也快的代码,可读性,维护性也是各种语言中最为差的代码。<br/>其实,ASP代码也可以像其他语言一样的面向对象,模块化,将很多页面集成封装到一个类中,运用类中的不同方法来显示不同的页面,这样你可以将同一业务逻辑下的页面和逻辑封装到一个类里,用不同的方法来实现。说了这么多,可能大家的思路都乱了,赶快给大家一点范例来看看:</p><p>&lt;%<br/>'****************************************</p><p>'* 类名:clsWebWorkFlowLog </p><p>'* 功能:工作流日志跟踪类</p><p>'* History: </p><p>'* 作成:doface </p><p>'* 日期:2003/10/24 Ver 1.0 </p><p>'* 改动: </p><p>'* 日期:</p><p>'****************************************</p><p>class clsWebWorkFlowLog</p><p>'定义公开属性存放Connection对象<br/>public ActiveConnection<br/><br/>private oResponse<br/><br/>'========================================<br/>'= 过程名:main<br/>'= 参 数:<br/>'= 功 能:主调函数<br/>'= 根据不同动作参数执行不同的操作<br/>'= 返回值:<br/>'========================================<br/>sub main()<br/>select case Request("act")<br/>case "list"<br/>list()<br/>case else<br/>list()<br/>end select<br/>end sub<br/><br/>'========================================<br/>'= 过程名:list<br/>'= 参 数:<br/>'= 功 能:显示列表画面<br/>'= 返回值:<br/>'========================================<br/>sub list()<br/>dim oRs<br/>set oRs = ActiveConnection.execute("select *,(select name from wf_config where id=w.wf_id) as wfname from wf_log w where step_id=1 and user_id=" &amp; session("usr")("uid"))<br/>'(select * from wf_log where id in (select max(id),wf_id,tab_id,rec_id from wf_log group by wf_id,tab_id,rec_id where wf_id= and tab_id=))<br/>%&gt; &lt;p align="left"&gt;&lt;img border="0" src="../images/desk/workflow-new.gif" WIDTH="32" HEIGHT="32"&gt;&lt;font color="#FF0000"&gt;&lt;b&gt;待办事宜:&lt;/b&gt;&lt;/font&gt;&lt;/p&gt;<br/>&lt;center&gt;</p><p>&lt;table bgColor="#FFFFFF" border="1" borderColorDark="#ffffff" borderColorLight="#c0c0c0" cellSpacing="0" width="99%" height="25"&gt;<br/>&lt;tr&gt;<br/>&lt;td bgColor="#808080" height="15"&gt;&lt;font color="#FFFFFF"&gt;流程名称&lt;/font&gt;&lt;/td&gt;<br/>&lt;td bgColor="#808080" height="15"&gt;&lt;font color="#FFFFFF"&gt;申请人&lt;/font&gt;&lt;/td&gt;<br/>&lt;td bgColor="#808080" height="15"&gt;&lt;font color="#FFFFFF"&gt;申请时间&lt;/font&gt;&lt;/td&gt;<br/>&lt;td bgColor="#808080" height="15"&gt;&lt;font color="#FFFFFF"&gt;完成时间&lt;/font&gt;&lt;/td&gt;<br/>&lt;td bgColor="#808080" height="15"&gt;&lt;font color="#FFFFFF"&gt;状态&lt;/font&gt;&lt;/td&gt;<br/>&lt;td bgColor="#808080" height="15"&gt;&lt;font color="#FFFFFF"&gt;操作&lt;/font&gt;&lt;/td&gt;<br/>&lt;/tr&gt;&lt;%<br/>do while not oRs.eof<br/>dim maxID,Next_id<br/>if glbFunc.getMaxID(oRs("id").value,ActiveConnection,maxID,Next_id) then<br/>%&gt;&lt;tr&gt;<br/>&lt;td bgColor="#ffffff" height="19"&gt;&lt;%=oRs("wfname")%&gt;&lt;/a&gt;&lt;/td&gt;<br/>&lt;td bgColor="#ffffff" height="19"&gt;&lt;%=session("usr")("name")%&gt;&amp;nbsp;&lt;/td&gt;<br/>&lt;td bgColor="#ffffff" height="19"&gt;&lt;%=oRs("exetime")%&gt;&amp;nbsp;&lt;/td&gt;<br/>&lt;td bgColor="#ffffff" height="19"&gt;&amp;nbsp;&lt;/td&gt;<br/>&lt;td bgColor="#ffffff" height="19"&gt;&lt;%=glbFunc.getCurZT(oRs("id").value,ActiveConnection)%&gt;&lt;/td&gt;<br/>&lt;td bgColor="#ffffff" height="19"&gt;&lt;p align="left"&gt;&lt;a href="../PubExeTab/PubExeTab.asp?act=view&amp;tab_id=&lt;%=oRs("tab_id")%&gt;&amp;id=&lt;%=oRs("rec_id")%&gt;"&gt;&lt;img src="../images/action/view.gif" border="0" alt="详细" WIDTH="16" HEIGHT="16"&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="javascript:newin('wfimage.asp?act=list&amp;id=&lt;%=oRs("wf_id")%&gt;&amp;bz=1&amp;step_id=&lt;%=next_id%&gt;',true,false,false,false,true);"&gt;&lt;img src="../images/action/lcchuli.gif" border="0" alt="流程追踪" WIDTH="16" HEIGHT="16"&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;&lt;/td&gt;&lt;%<br/>end if<br/>%&gt;&lt;/tr&gt;&lt;%<br/>oRs.movenext<br/>loop<br/>%&gt;&lt;/table&gt; </p><p>&lt;/center&gt;<br/>&lt;%<br/>end sub<br/></p><p><br/>end class<br/>'****************************************<br/>'* 类结束 <br/>'****************************************</p><p><br/>'****************************************<br/>'ASP页面开始 <br/>'****************************************</p><p>'输出标准HTML头<br/>glbFunc.writeHEAD</p><p>dim oWebWorkFlowLog<br/>set oWebWorkFlowLog = new clsWebWorkFlowLog<br/>set oWebWorkFlowLog.ActiveConnection = glbFunc.getADOConnection</p><p>oWebWorkFlowLog.main </p><p>glbFunc.writeTail()<br/>%&gt;</p><p></p><p>可以添加更多的方法,这样这一个类就能完成以前多个ASP文件的功能。访问的时候,在 .ASP之后加上参数(要访问哪个函数)即可区分出来。</p><p><br/></p>
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

小黑屋|手机版|Archiver|信息系统项目管理师_软考交流平台. ( 鄂ICP备11002878号-1  公安备案号:42011102001150

GMT+8, 2025-7-6 02:44

Software by Discuz! X3.2

© 2001-2013 SKIN BY DSVUE

快速回复 返回顶部 返回列表