• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    ASP常用函数收藏乱七八糟未整理版
    %
    '*******************************************************************
    '取得IP地址
    '*******************************************************************

    Function Userip()
        Dim GetClientIP
        '如果客户端用了代理服务器,则应该用ServerVariables("HTTP_X_FORWARDED_FOR")方法
        GetClientIP = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
        If GetClientIP = "" or IsNull(GetClientIP) or IsEmpty(GetClientIP) Then
            '如果客户端没用代理,应该用Request.ServerVariables("REMOTE_ADDR")方法
            GetClientIP = Request.ServerVariables("REMOTE_ADDR")
        End If
        Userip = GetClientIP
    End Function

    '*******************************************************************
    '转换IP地址
    '*******************************************************************

    Function cip(sip)
        tip = CStr(sip)
        sip1 = Left(tip, CInt(InStr(tip, ".") -1))
        tip = Mid(tip, CInt(InStr(tip, ".") + 1))
        sip2 = Left(tip, CInt(InStr(tip, ".") -1))
        tip = Mid(tip, CInt(InStr(tip, ".") + 1))
        sip3 = Left(tip, CInt(InStr(tip, ".") -1))
        sip4 = Mid(tip, CInt(InStr(tip, ".") + 1))
        cip = CInt(sip1) * 256 * 256 * 256 + CInt(sip2) * 256 * 256 + CInt(sip3) * 256 + CInt(sip4)
    End Function

    '*******************************************************************
    ' 弹出对话框
    '*******************************************************************

    Sub alert(message)
        message = Replace(message, "'", "\'")
        Response.Write ("script>alert('"  message  "')/script>")
    End Sub

    '*******************************************************************
    ' 返回上一页,一般用在判断信息提交是否完全之后
    '*******************************************************************

    Sub GoBack()
        Response.Write ("script>history.go(-1)/script>")
    End Sub

    '*******************************************************************
    ' 重定向另外的连接
    '*******************************************************************

    Sub Go(url)
        Response.Write ("script>location.href('"  url  "')/script>")
    End Sub

    '*******************************************************************
    ' 我比较喜欢将以上三个结合起来使用
    '*******************************************************************

    Function Alert(message, gourl)
        message = Replace(message, "'", "'")
        If gourl = "-1" Then
            Response.Write ("script language=javascript>alert('"  message  "');history.go(-1)/script>")
        Else
            Response.Write ("script language=javascript>alert('"  message  "');location='"  gourl "'/script>")
        End If
        Response.End()
    End Function

    '*******************************************************************
    ' 指定秒数重定向另外的连接
    '*******************************************************************

    Sub GoPage(url, s)
        s = s * 1000
        Response.Write "SCRIPT LANGUAGE=JavaScript>"
        Response.Write "window.setTimeout("Chr(34)"window.navigate('"url"')"Chr(34)","s")"
        Response.Write "/script>"
    End Sub

    '*******************************************************************
    ' 判断数字是否整形
    '*******************************************************************

    Function isInteger(para)
        On Error Resume Next
        Dim Str
        Dim l, i
        If IsNull(para) Then
            isInteger = False
            Exit Function
        End If
        Str = CStr(para)
        If Trim(Str) = "" Then
            isInteger = False
            Exit Function
        End If
        l = Len(Str)
        For i = 1 To l
            If Mid(Str, i, 1)>"9" or Mid(Str, i, 1)"0" Then
                isInteger = False
                Exit Function
            End If
        Next
        isInteger = True
        If Err.Number>0 Then Err.Clear
    End Function

    '*******************************************************************
    ' 获得文件扩展名
    '*******************************************************************

    Function GetExtend(filename)
        Dim tmp
        If filename>"" Then
            tmp = Mid(filename, instrrev(filename, ".") + 1, Len(filename) - instrrev(filename, "."))
            tmp = LCase(tmp)
            If InStr(1, tmp, "asp")>0 or InStr(1, tmp, "php")>0 or InStr(1, tmp, "php3")>0 or InStr(1, tmp, "aspx")>0 Then
                getextend = "txt"
            Else
                getextend = tmp
            End If
        Else
            getextend = ""
        End If
    End Function

    ' *----------------------------------------------------------------------------
    ' * 函数:CheckIn
    ' * 描述:检测参数是否有SQL危险字符
    ' * 参数:str要检测的数据
    ' * 返回:FALSE:安全 TRUE:不安全
    ' * 作者:
    ' * 日期:
    ' *----------------------------------------------------------------------------

    Function CheckIn(Str)
        If InStr(1, Str, Chr(39))>0 or InStr(1, Str, Chr(34))>0 or InStr(1, Str, Chr(59))>0 Then
            CheckIn = True
        Else
            CheckIn = False
        End If
    End Function

    ' *----------------------------------------------------------------------------
    ' * 函数:HTMLEncode
    ' * 描述:过滤HTML代码
    ' * 参数:--
    ' * 返回:--
    ' * 作者:
    ' * 日期:
    ' *----------------------------------------------------------------------------

    Function HTMLEncode(fString)
        If Not IsNull(fString) Then
            fString = Replace(fString, ">", ">")
            fString = Replace(fString, "", "")

            fString = Replace(fString, Chr(32), " ")
            fString = Replace(fString, Chr(9), " ")
            fString = Replace(fString, Chr(34), """)
            fString = Replace(fString, Chr(39), "'")
            fString = Replace(fString, Chr(13), "")
            fString = Replace(fString, Chr(10)  Chr(10), "/P>P> ")
            fString = Replace(fString, Chr(10), "BR> ")

            HTMLEncode = fString
        End If
    End Function

    ' *----------------------------------------------------------------------------
    ' * 函数:HTMLcode
    ' * 描述:过滤表单字符
    ' * 参数:--
    ' * 返回:--
    ' * 作者:
    ' * 日期:
    ' *----------------------------------------------------------------------------

    Function HTMLcode(fString)
        If Not IsNull(fString) Then
            fString = Replace(fString, Chr(13), "")
            fString = Replace(fString, Chr(10)  Chr(10), "/P>P>")
            fString = Replace(fString, Chr(34), "")
            fString = Replace(fString, Chr(10), "BR>")
            HTMLcode = fString
        End If
    End Function

    %>


    %
    1.检查是否有效邮件地址

    Function CheckEmail(strEmail)
        Dim re
        Set re = New RegExp
        re.Pattern = "^[w-.]{1,}@([da-zA-Z-]{1,}.){1,}[da-zA-Z-]{2,3}$"
        re.IgnoreCase = True
        CheckEmail = re.Test(strEmail)
    End Function

    2.测试变量是否为空值,空值的含义包括:变量不存在 / 为空,对象为Nothing,0,空数组,字符串为空

    Function IsBlank(ByRef Var)
        IsBlank = False
        Select Case True
            Case IsObject(Var)
                If Var Is Nothing Then IsBlank = True
            Case IsEmpty(Var), IsNull(Var)
                IsBlank = True
            Case IsArray(Var)
                If UBound(Var) = 0 Then IsBlank = True
            Case IsNumeric(Var)
                If (Var = 0) Then IsBlank = True
            Case Else
                If Trim(Var) = "" Then IsBlank = True
        End Select
    End Function

    3.得到浏览器目前的URL

    Function GetCurURL()
        If Request.ServerVariables("HTTPS") = "on" Then
            GetCurrentURL = "https://"
        Else
            GetCurrentURL = "http://"
        End If
        GetCurURL = GetCurURL  Request.ServerVariables("SERVER_NAME")
        If (Request.ServerVariables("SERVER_PORT") > 80) Then GetCurURL = GetCurURL  ":"  Request.ServerVariables("SERVER_PORT")
        GetCurURL = GetCurURL  Request.ServerVariables("URL")
        If (Request.QueryString > "") Then GetCurURL = GetCurURL  "?"  Request.QueryString
    End Function

    4.MD5加密函数
    Private Const BITS_TO_A_BYTE = 8
    Private Const BYTES_TO_A_WORD = 4
    Private Const BITS_TO_A_WORD = 32

    Private m_lOnBits(30)
    Private m_l2Power(30)

    m_lOnBits(0) = CLng(1)
    m_lOnBits(1) = CLng(3)
    m_lOnBits(2) = CLng(7)
    m_lOnBits(3) = CLng(15)
    m_lOnBits(4) = CLng(31)
    m_lOnBits(5) = CLng(63)
    m_lOnBits(6) = CLng(127)
    m_lOnBits(7) = CLng(255)
    m_lOnBits(8) = CLng(511)
    m_lOnBits(9) = CLng(1023)
    m_lOnBits(10) = CLng(2047)
    m_lOnBits(11) = CLng(4095)
    m_lOnBits(12) = CLng(8191)
    m_lOnBits(13) = CLng(16383)
    m_lOnBits(14) = CLng(32767)
    m_lOnBits(15) = CLng(65535)
    m_lOnBits(16) = CLng(131071)
    m_lOnBits(17) = CLng(262143)
    m_lOnBits(18) = CLng(524287)
    m_lOnBits(19) = CLng(1048575)
    m_lOnBits(20) = CLng(2097151)
    m_lOnBits(21) = CLng(4194303)
    m_lOnBits(22) = CLng(8388607)
    m_lOnBits(23) = CLng(16777215)
    m_lOnBits(24) = CLng(33554431)
    m_lOnBits(25) = CLng(67108863)
    m_lOnBits(26) = CLng(134217727)
    m_lOnBits(27) = CLng(268435455)
    m_lOnBits(28) = CLng(536870911)
    m_lOnBits(29) = CLng(1073741823)
    m_lOnBits(30) = CLng(2147483647)

    m_l2Power(0) = CLng(1)
    m_l2Power(1) = CLng(2)
    m_l2Power(2) = CLng(4)
    m_l2Power(3) = CLng(8)
    m_l2Power(4) = CLng(16)
    m_l2Power(5) = CLng(32)
    m_l2Power(6) = CLng(64)
    m_l2Power(7) = CLng(128)
    m_l2Power(8) = CLng(256)
    m_l2Power(9) = CLng(512)
    m_l2Power(10) = CLng(1024)
    m_l2Power(11) = CLng(2048)
    m_l2Power(12) = CLng(4096)
    m_l2Power(13) = CLng(8192)
    m_l2Power(14) = CLng(16384)
    m_l2Power(15) = CLng(32768)
    m_l2Power(16) = CLng(65536)
    m_l2Power(17) = CLng(131072)
    m_l2Power(18) = CLng(262144)
    m_l2Power(19) = CLng(524288)
    m_l2Power(20) = CLng(1048576)
    m_l2Power(21) = CLng(2097152)
    m_l2Power(22) = CLng(4194304)
    m_l2Power(23) = CLng(8388608)
    m_l2Power(24) = CLng(16777216)
    m_l2Power(25) = CLng(33554432)
    m_l2Power(26) = CLng(67108864)
    m_l2Power(27) = CLng(134217728)
    m_l2Power(28) = CLng(268435456)
    m_l2Power(29) = CLng(536870912)
    m_l2Power(30) = CLng(1073741824)

    Private Function LShift(lValue, iShiftBits)
        If iShiftBits = 0 Then
            LShift = lValue
            Exit Function
        ElseIf iShiftBits = 31 Then
            If lValue And 1 Then
                LShift = H80000000
            Else
                LShift = 0
            End If
            Exit Function
        ElseIf iShiftBits  0 or iShiftBits > 31 Then
            Err.Raise 6
        End If

        If (lValue And m_l2Power(31 - iShiftBits)) Then
            LShift = ((lValue And m_lOnBits(31 - (iShiftBits + 1))) * m_l2Power(iShiftBits)) or H80000000
        Else
            LShift = ((lValue And m_lOnBits(31 - iShiftBits)) * m_l2Power(iShiftBits))
        End If
    End Function

    Private Function RShift(lValue, iShiftBits)
        If iShiftBits = 0 Then
            RShift = lValue
            Exit Function
        ElseIf iShiftBits = 31 Then
            If lValue And H80000000 Then
                RShift = 1
            Else
                RShift = 0
            End If
            Exit Function
        ElseIf iShiftBits  0 or iShiftBits > 31 Then
            Err.Raise 6
        End If

        RShift = (lValue And H7FFFFFFE) m_l2Power(iShiftBits)

        If (lValue And H80000000) Then
            RShift = (RShift or (H40000000 m_l2Power(iShiftBits - 1)))
        End If
    End Function

    Private Function RotateLeft(lValue, iShiftBits)
        RotateLeft = LShift(lValue, iShiftBits) or RShift(lValue, (32 - iShiftBits))
    End Function

    Private Function AddUnsigned(lX, lY)
        Dim lX4
        Dim lY4
        Dim lX8
        Dim lY8
        Dim lResult

        lX8 = lX And H80000000
        lY8 = lY And H80000000
        lX4 = lX And H40000000
        lY4 = lY And H40000000

        lResult = (lX And H3FFFFFFF) + (lY And H3FFFFFFF)

        If lX4 And lY4 Then
            lResult = lResult Xor H80000000 Xor lX8 Xor lY8
        ElseIf lX4 or lY4 Then
            If lResult And H40000000 Then
                lResult = lResult Xor HC0000000 Xor lX8 Xor lY8
            Else
                lResult = lResult Xor H40000000 Xor lX8 Xor lY8
            End If
        Else
            lResult = lResult Xor lX8 Xor lY8
        End If

        AddUnsigned = lResult
    End Function

    Private Function F(x, y, z)
        F = (x And y) or ((Not x) And z)
    End Function

    Private Function G(x, y, z)
        G = (x And z) or (y And (Not z))
    End Function

    Private Function H(x, y, z)
        H = (x Xor y Xor z)
    End Function

    Private Function I(x, y, z)
        I = (y Xor (x or (Not z)))
    End Function

    Private Sub FF(a, b, c, d, x, s, ac)
        a = AddUnsigned(a, AddUnsigned(AddUnsigned(F(b, c, d), x), ac))
        a = RotateLeft(a, s)
        a = AddUnsigned(a, b)
    End Sub

    Private Sub GG(a, b, c, d, x, s, ac)
        a = AddUnsigned(a, AddUnsigned(AddUnsigned(G(b, c, d), x), ac))
        a = RotateLeft(a, s)
        a = AddUnsigned(a, b)
    End Sub

    Private Sub HH(a, b, c, d, x, s, ac)
        a = AddUnsigned(a, AddUnsigned(AddUnsigned(H(b, c, d), x), ac))
        a = RotateLeft(a, s)
        a = AddUnsigned(a, b)
    End Sub

    Private Sub II(a, b, c, d, x, s, ac)
        a = AddUnsigned(a, AddUnsigned(AddUnsigned(I(b, c, d), x), ac))
        a = RotateLeft(a, s)
        a = AddUnsigned(a, b)
    End Sub

    Private Function ConvertToWordArray(sMessage)
        Dim lMessageLength
        Dim lNumberOfWords
        Dim lWordArray()
        Dim lBytePosition
        Dim lByteCount
        Dim lWordCount

        Const MODULUS_BITS = 512
        Const CONGRUENT_BITS = 448

        lMessageLength = Len(sMessage)

        lNumberOfWords = (((lMessageLength + ((MODULUS_BITS - CONGRUENT_BITS) BITS_TO_A_BYTE)) (MODULUS_BITS BITS_TO_A_BYTE)) + 1) * (MODULUS_BITS BITS_TO_A_WORD)
        ReDim lWordArray(lNumberOfWords - 1)

        lBytePosition = 0
        lByteCount = 0
        Do Until lByteCount >= lMessageLength
            lWordCount = lByteCount BYTES_TO_A_WORD
            lBytePosition = (lByteCount Mod BYTES_TO_A_WORD) * BITS_TO_A_BYTE
            lWordArray(lWordCount) = lWordArray(lWordCount) or LShift(Asc(Mid(sMessage, lByteCount + 1, 1)), lBytePosition)
            lByteCount = lByteCount + 1
        Loop

        lWordCount = lByteCount BYTES_TO_A_WORD
        lBytePosition = (lByteCount Mod BYTES_TO_A_WORD) * BITS_TO_A_BYTE

        lWordArray(lWordCount) = lWordArray(lWordCount) or LShift(H80, lBytePosition)

        lWordArray(lNumberOfWords - 2) = LShift(lMessageLength, 3)
        lWordArray(lNumberOfWords - 1) = RShift(lMessageLength, 29)

        ConvertToWordArray = lWordArray
    End Function

    Private Function WordToHex(lValue)
        Dim lByte
        Dim lCount

        For lCount = 0 To 3
            lByte = RShift(lValue, lCount * BITS_TO_A_BYTE) And m_lOnBits(BITS_TO_A_BYTE - 1)
            WordToHex = WordToHex  Right("0"  Hex(lByte), 2)
        Next
    End Function

    Public Function MD5(sMessage)
        Dim x
        Dim k
        Dim AA
        Dim BB
        Dim CC
        Dim DD
        Dim a
        Dim b
        Dim c
        Dim d

        Const S11 = 7
        Const S12 = 12
        Const S13 = 17
        Const S14 = 22
        Const S21 = 5
        Const S22 = 9
        Const S23 = 14
        Const S24 = 20
        Const S31 = 4
        Const S32 = 11
        Const S33 = 16
        Const S34 = 23
        Const S41 = 6
        Const S42 = 10
        Const S43 = 15
        Const S44 = 21

        x = ConvertToWordArray(sMessage)

        a = H67452301
        b = HEFCDAB89
        c = H98BADCFE
        d = H10325476

        For k = 0 To UBound(x) Step 16
            AA = a
            BB = b
            CC = c
            DD = d

            FF a, b, c, d, x(k + 0), S11, HD76AA478
            FF d, a, b, c, x(k + 1), S12, HE8C7B756
            FF c, d, a, b, x(k + 2), S13, H242070DB
            FF b, c, d, a, x(k + 3), S14, HC1BDCEEE
            FF a, b, c, d, x(k + 4), S11, HF57C0FAF
            FF d, a, b, c, x(k + 5), S12, H4787C62A
            FF c, d, a, b, x(k + 6), S13, HA8304613
            FF b, c, d, a, x(k + 7), S14, HFD469501
            FF a, b, c, d, x(k + 8), S11, H698098D8
            FF d, a, b, c, x(k + 9), S12, H8B44F7AF
            FF c, d, a, b, x(k + 10), S13, HFFFF5BB1
            FF b, c, d, a, x(k + 11), S14, H895CD7BE
            FF a, b, c, d, x(k + 12), S11, H6B901122
            FF d, a, b, c, x(k + 13), S12, HFD987193
            FF c, d, a, b, x(k + 14), S13, HA679438E
            FF b, c, d, a, x(k + 15), S14, H49B40821

            GG a, b, c, d, x(k + 1), S21, HF61E2562
            GG d, a, b, c, x(k + 6), S22, HC040B340
            GG c, d, a, b, x(k + 11), S23, H265E5A51
            GG b, c, d, a, x(k + 0), S24, HE9B6C7AA
            GG a, b, c, d, x(k + 5), S21, HD62F105D
            GG d, a, b, c, x(k + 10), S22, H2441453
            GG c, d, a, b, x(k + 15), S23, HD8A1E681
            GG b, c, d, a, x(k + 4), S24, HE7D3FBC8
            GG a, b, c, d, x(k + 9), S21, H21E1CDE6
            GG d, a, b, c, x(k + 14), S22, HC33707D6
            GG c, d, a, b, x(k + 3), S23, HF4D50D87
            GG b, c, d, a, x(k + 8), S24, H455A14ED
            GG a, b, c, d, x(k + 13), S21, HA9E3E905
            GG d, a, b, c, x(k + 2), S22, HFCEFA3F8
            GG c, d, a, b, x(k + 7), S23, H676F02D9
            GG b, c, d, a, x(k + 12), S24, H8D2A4C8A

            HH a, b, c, d, x(k + 5), S31, HFFFA3942
            HH d, a, b, c, x(k + 8), S32, H8771F681
            HH c, d, a, b, x(k + 11), S33, H6D9D6122
            HH b, c, d, a, x(k + 14), S34, HFDE5380C
            HH a, b, c, d, x(k + 1), S31, HA4BEEA44
            HH d, a, b, c, x(k + 4), S32, H4BDECFA9
            HH c, d, a, b, x(k + 7), S33, HF6BB4B60
            HH b, c, d, a, x(k + 10), S34, HBEBFBC70
            HH a, b, c, d, x(k + 13), S31, H289B7EC6
            HH d, a, b, c, x(k + 0), S32, HEAA127FA
            HH c, d, a, b, x(k + 3), S33, HD4EF3085
            HH b, c, d, a, x(k + 6), S34, H4881D05
            HH a, b, c, d, x(k + 9), S31, HD9D4D039
            HH d, a, b, c, x(k + 12), S32, HE6DB99E5
            HH c, d, a, b, x(k + 15), S33, H1FA27CF8
            HH b, c, d, a, x(k + 2), S34, HC4AC5665

            II a, b, c, d, x(k + 0), S41, HF4292244
            II d, a, b, c, x(k + 7), S42, H432AFF97
            II c, d, a, b, x(k + 14), S43, HAB9423A7
            II b, c, d, a, x(k + 5), S44, HFC93A039
            II a, b, c, d, x(k + 12), S41, H655B59C3
            II d, a, b, c, x(k + 3), S42, H8F0CCC92
            II c, d, a, b, x(k + 10), S43, HFFEFF47D
            II b, c, d, a, x(k + 1), S44, H85845DD1
            II a, b, c, d, x(k + 8), S41, H6FA87E4F
            II d, a, b, c, x(k + 15), S42, HFE2CE6E0
            II c, d, a, b, x(k + 6), S43, HA3014314
            II b, c, d, a, x(k + 13), S44, H4E0811A1
            II a, b, c, d, x(k + 4), S41, HF7537E82
            II d, a, b, c, x(k + 11), S42, HBD3AF235
            II c, d, a, b, x(k + 2), S43, H2AD7D2BB
            II b, c, d, a, x(k + 9), S44, HEB86D391

            a = AddUnsigned(a, AA)
            b = AddUnsigned(b, BB)
            c = AddUnsigned(c, CC)
            d = AddUnsigned(d, DD)
        Next

        MD5 = LCase(WordToHex(a)  WordToHex(b)  WordToHex(c)  WordToHex(d))
    End Function

    5.SHA256 加密,256位的加密哦!安全性更高!
    Private m_lOnBits(30)
    Private m_l2Power(30)
    Private K(63)

    Private Const BITS_TO_A_BYTE = 8
    Private Const BYTES_TO_A_WORD = 4
    Private Const BITS_TO_A_WORD = 32

    m_lOnBits(0) = CLng(1)
    m_lOnBits(1) = CLng(3)
    m_lOnBits(2) = CLng(7)
    m_lOnBits(3) = CLng(15)
    m_lOnBits(4) = CLng(31)
    m_lOnBits(5) = CLng(63)
    m_lOnBits(6) = CLng(127)
    m_lOnBits(7) = CLng(255)
    m_lOnBits(8) = CLng(511)
    m_lOnBits(9) = CLng(1023)
    m_lOnBits(10) = CLng(2047)
    m_lOnBits(11) = CLng(4095)
    m_lOnBits(12) = CLng(8191)
    m_lOnBits(13) = CLng(16383)
    m_lOnBits(14) = CLng(32767)
    m_lOnBits(15) = CLng(65535)
    m_lOnBits(16) = CLng(131071)
    m_lOnBits(17) = CLng(262143)
    m_lOnBits(18) = CLng(524287)
    m_lOnBits(19) = CLng(1048575)
    m_lOnBits(20) = CLng(2097151)
    m_lOnBits(21) = CLng(4194303)
    m_lOnBits(22) = CLng(8388607)
    m_lOnBits(23) = CLng(16777215)
    m_lOnBits(24) = CLng(33554431)
    m_lOnBits(25) = CLng(67108863)
    m_lOnBits(26) = CLng(134217727)
    m_lOnBits(27) = CLng(268435455)
    m_lOnBits(28) = CLng(536870911)
    m_lOnBits(29) = CLng(1073741823)
    m_lOnBits(30) = CLng(2147483647)

    m_l2Power(0) = CLng(1)
    m_l2Power(1) = CLng(2)
    m_l2Power(2) = CLng(4)
    m_l2Power(3) = CLng(8)
    m_l2Power(4) = CLng(16)
    m_l2Power(5) = CLng(32)
    m_l2Power(6) = CLng(64)
    m_l2Power(7) = CLng(128)
    m_l2Power(8) = CLng(256)
    m_l2Power(9) = CLng(512)
    m_l2Power(10) = CLng(1024)
    m_l2Power(11) = CLng(2048)
    m_l2Power(12) = CLng(4096)
    m_l2Power(13) = CLng(8192)
    m_l2Power(14) = CLng(16384)
    m_l2Power(15) = CLng(32768)
    m_l2Power(16) = CLng(65536)
    m_l2Power(17) = CLng(131072)
    m_l2Power(18) = CLng(262144)
    m_l2Power(19) = CLng(524288)
    m_l2Power(20) = CLng(1048576)
    m_l2Power(21) = CLng(2097152)
    m_l2Power(22) = CLng(4194304)
    m_l2Power(23) = CLng(8388608)
    m_l2Power(24) = CLng(16777216)
    m_l2Power(25) = CLng(33554432)
    m_l2Power(26) = CLng(67108864)
    m_l2Power(27) = CLng(134217728)
    m_l2Power(28) = CLng(268435456)
    m_l2Power(29) = CLng(536870912)
    m_l2Power(30) = CLng(1073741824)

    K(0) = H428A2F98
    K(1) = H71374491
    K(2) = HB5C0FBCF
    K(3) = HE9B5DBA5
    K(4) = H3956C25B
    K(5) = H59F111F1
    K(6) = H923F82A4
    K(7) = HAB1C5ED5
    K(8) = HD807AA98
    K(9) = H12835B01
    K(10) = H243185BE
    K(11) = H550C7DC3
    K(12) = H72BE5D74
    K(13) = H80DEB1FE
    K(14) = H9BDC06A7
    K(15) = HC19BF174
    K(16) = HE49B69C1
    K(17) = HEFBE4786
    K(18) = HFC19DC6
    K(19) = H240CA1CC
    K(20) = H2DE92C6F
    K(21) = H4A7484AA
    K(22) = H5CB0A9DC
    K(23) = H76F988DA
    K(24) = H983E5152
    K(25) = HA831C66D
    K(26) = HB00327C8
    K(27) = HBF597FC7
    K(28) = HC6E00BF3
    K(29) = HD5A79147
    K(30) = H6CA6351
    K(31) = H14292967
    K(32) = H27B70A85
    K(33) = H2E1B2138
    K(34) = H4D2C6DFC
    K(35) = H53380D13
    K(36) = H650A7354
    K(37) = H766A0ABB
    K(38) = H81C2C92E
    K(39) = H92722C85
    K(40) = HA2BFE8A1
    K(41) = HA81A664B
    K(42) = HC24B8B70
    K(43) = HC76C51A3
    K(44) = HD192E819
    K(45) = HD6990624
    K(46) = HF40E3585
    K(47) = H106AA070
    K(48) = H19A4C116
    K(49) = H1E376C08
    K(50) = H2748774C
    K(51) = H34B0BCB5
    K(52) = H391C0CB3
    K(53) = H4ED8AA4A
    K(54) = H5B9CCA4F
    K(55) = H682E6FF3
    K(56) = H748F82EE
    K(57) = H78A5636F
    K(58) = H84C87814
    K(59) = H8CC70208
    K(60) = H90BEFFFA
    K(61) = HA4506CEB
    K(62) = HBEF9A3F7
    K(63) = HC67178F2

    Private Function LShift(lValue, iShiftBits)
        If iShiftBits = 0 Then
            LShift = lValue
            Exit Function
        ElseIf iShiftBits = 31 Then
            If lValue And 1 Then
                LShift = H80000000
            Else
                LShift = 0
            End If
            Exit Function
        ElseIf iShiftBits  0 or iShiftBits > 31 Then
            Err.Raise 6
        End If

        If (lValue And m_l2Power(31 - iShiftBits)) Then
            LShift = ((lValue And m_lOnBits(31 - (iShiftBits + 1))) * m_l2Power(iShiftBits)) or H80000000
        Else
            LShift = ((lValue And m_lOnBits(31 - iShiftBits)) * m_l2Power(iShiftBits))
        End If
    End Function

    Private Function RShift(lValue, iShiftBits)
        If iShiftBits = 0 Then
            RShift = lValue
            Exit Function
        ElseIf iShiftBits = 31 Then
            If lValue And H80000000 Then
                RShift = 1
            Else
                RShift = 0
            End If
            Exit Function
        ElseIf iShiftBits  0 or iShiftBits > 31 Then
            Err.Raise 6
        End If

        RShift = (lValue And H7FFFFFFE) m_l2Power(iShiftBits)

        If (lValue And H80000000) Then
            RShift = (RShift or (H40000000 m_l2Power(iShiftBits - 1)))
        End If
    End Function

    Private Function AddUnsigned(lX, lY)
        Dim lX4
        Dim lY4
        Dim lX8
        Dim lY8
        Dim lResult

        lX8 = lX And H80000000
        lY8 = lY And H80000000
        lX4 = lX And H40000000
        lY4 = lY And H40000000

        lResult = (lX And H3FFFFFFF) + (lY And H3FFFFFFF)

        If lX4 And lY4 Then
            lResult = lResult Xor H80000000 Xor lX8 Xor lY8
        ElseIf lX4 or lY4 Then
            If lResult And H40000000 Then
                lResult = lResult Xor HC0000000 Xor lX8 Xor lY8
            Else
                lResult = lResult Xor H40000000 Xor lX8 Xor lY8
            End If
        Else
            lResult = lResult Xor lX8 Xor lY8
        End If

        AddUnsigned = lResult
    End Function

    Private Function Ch(x, y, z)
        Ch = ((x And y) Xor ((Not x) And z))
    End Function

    Private Function Maj(x, y, z)
        Maj = ((x And y) Xor (x And z) Xor (y And z))
    End Function

    Private Function S(x, n)
        S = (RShift(x, (n And m_lOnBits(4))) or LShift(x, (32 - (n And m_lOnBits(4)))))
    End Function

    Private Function R(x, n)
        R = RShift(x, CInt(n And m_lOnBits(4)))
    End Function

    Private Function Sigma0(x)
        Sigma0 = (S(x, 2) Xor S(x, 13) Xor S(x, 22))
    End Function

    Private Function Sigma1(x)
        Sigma1 = (S(x, 6) Xor S(x, 11) Xor S(x, 25))
    End Function

    Private Function Gamma0(x)
        Gamma0 = (S(x, 7) Xor S(x, 18) Xor R(x, 3))
    End Function

    Private Function Gamma1(x)
        Gamma1 = (S(x, 17) Xor S(x, 19) Xor R(x, 10))
    End Function

    Private Function ConvertToWordArray(sMessage)
        Dim lMessageLength
        Dim lNumberOfWords
        Dim lWordArray()
        Dim lBytePosition
        Dim lByteCount
        Dim lWordCount
        Dim lByte

        Const MODULUS_BITS = 512
        Const CONGRUENT_BITS = 448

        lMessageLength = Len(sMessage)

        lNumberOfWords = (((lMessageLength + ((MODULUS_BITS - CONGRUENT_BITS) BITS_TO_A_BYTE)) (MODULUS_BITS BITS_TO_A_BYTE)) + 1) * (MODULUS_BITS BITS_TO_A_WORD)
        ReDim lWordArray(lNumberOfWords - 1)

        lBytePosition = 0
        lByteCount = 0
        Do Until lByteCount >= lMessageLength
            lWordCount = lByteCount BYTES_TO_A_WORD

            lBytePosition = (3 - (lByteCount Mod BYTES_TO_A_WORD)) * BITS_TO_A_BYTE

            lByte = AscB(Mid(sMessage, lByteCount + 1, 1))

            lWordArray(lWordCount) = lWordArray(lWordCount) or LShift(lByte, lBytePosition)
            lByteCount = lByteCount + 1
        Loop

        lWordCount = lByteCount BYTES_TO_A_WORD
        lBytePosition = (3 - (lByteCount Mod BYTES_TO_A_WORD)) * BITS_TO_A_BYTE

        lWordArray(lWordCount) = lWordArray(lWordCount) or LShift(H80, lBytePosition)

        lWordArray(lNumberOfWords - 1) = LShift(lMessageLength, 3)
        lWordArray(lNumberOfWords - 2) = RShift(lMessageLength, 29)

        ConvertToWordArray = lWordArray
    End Function

    Public Function SHA256(sMessage)
        Dim HASH(7)
        Dim M
        Dim W(63)
        Dim a
        Dim b
        Dim c
        Dim d
        Dim e
        Dim f
        Dim g
        Dim h
        Dim i
        Dim j
        Dim T1
        Dim T2

        HASH(0) = H6A09E667
        HASH(1) = HBB67AE85
        HASH(2) = H3C6EF372
        HASH(3) = HA54FF53A
        HASH(4) = H510E527F
        HASH(5) = H9B05688C
        HASH(6) = H1F83D9AB
        HASH(7) = H5BE0CD19

        M = ConvertToWordArray(sMessage)

        For i = 0 To UBound(M) Step 16
            a = HASH(0)
            b = HASH(1)
            c = HASH(2)
            d = HASH(3)
            e = HASH(4)
            f = HASH(5)
            g = HASH(6)
            h = HASH(7)

            For j = 0 To 63
                If j  16 Then
                    W(j) = M(j + i)
                Else
                    W(j) = AddUnsigned(AddUnsigned(AddUnsigned(Gamma1(W(j - 2)), W(j - 7)), Gamma0(W(j - 15))), W(j - 16))
                End If

                T1 = AddUnsigned(AddUnsigned(AddUnsigned(AddUnsigned(h, Sigma1(e)), Ch(e, f, g)), K(j)), W(j))
                T2 = AddUnsigned(Sigma0(a), Maj(a, b, c))

                h = g
                g = f
                f = e
                e = AddUnsigned(d, T1)
                d = c
                c = b
                b = a
                a = AddUnsigned(T1, T2)
            Next

            HASH(0) = AddUnsigned(a, HASH(0))
            HASH(1) = AddUnsigned(b, HASH(1))
            HASH(2) = AddUnsigned(c, HASH(2))
            HASH(3) = AddUnsigned(d, HASH(3))
            HASH(4) = AddUnsigned(e, HASH(4))
            HASH(5) = AddUnsigned(f, HASH(5))
            HASH(6) = AddUnsigned(g, HASH(6))
            HASH(7) = AddUnsigned(h, HASH(7))
        Next

        SHA256 = LCase(Right("00000000"  Hex(HASH(0)), 8)  Right("00000000"  Hex(HASH(1)), 8)  Right("00000000"  Hex(HASH(2)), 8)  Right("00000000"  Hex(HASH(3)), 8)  Right("00000000"  Hex(HASH(4)), 8)  Right("00000000"  Hex(HASH(5)), 8)  Right("00000000"  Hex(HASH(6)), 8)  Right("00000000"  Hex(HASH(7)), 8))
    End Function

    6.一个If语句的加工,以后可以用类似于PHP或JS的 If () ? ..
    ...代码了

    Function IIf(Condition, ValueIfTrue, ValueIfFalse)
        If Condition Then
            IIf = ValueIfTrue
        Else
            IIf = ValueIfFalse
        End If
    End Function

    7.ASE加密函数
    Private m_lOnBits(30)
    Private m_l2Power(30)
    Private m_bytOnBits(7)
    Private m_byt2Power(7)

    Private m_InCo(3)

    Private m_fbsub(255)
    Private m_rbsub(255)
    Private m_ptab(255)
    Private m_ltab(255)
    Private m_ftable(255)
    Private m_rtable(255)
    Private m_rco(29)

    Private m_Nk
    Private m_Nb
    Private m_Nr
    Private m_fi(23)
    Private m_ri(23)
    Private m_fkey(119)
    Private m_rkey(119)

    m_InCo(0) = HB
    m_InCo(1) = HD
    m_InCo(2) = H9
    m_InCo(3) = HE

    m_bytOnBits(0) = 1
    m_bytOnBits(1) = 3
    m_bytOnBits(2) = 7
    m_bytOnBits(3) = 15
    m_bytOnBits(4) = 31
    m_bytOnBits(5) = 63
    m_bytOnBits(6) = 127
    m_bytOnBits(7) = 255

    m_byt2Power(0) = 1
    m_byt2Power(1) = 2
    m_byt2Power(2) = 4
    m_byt2Power(3) = 8
    m_byt2Power(4) = 16
    m_byt2Power(5) = 32
    m_byt2Power(6) = 64
    m_byt2Power(7) = 128

    m_lOnBits(0) = 1
    m_lOnBits(1) = 3
    m_lOnBits(2) = 7
    m_lOnBits(3) = 15
    m_lOnBits(4) = 31
    m_lOnBits(5) = 63
    m_lOnBits(6) = 127
    m_lOnBits(7) = 255
    m_lOnBits(8) = 511
    m_lOnBits(9) = 1023
    m_lOnBits(10) = 2047
    m_lOnBits(11) = 4095
    m_lOnBits(12) = 8191
    m_lOnBits(13) = 16383
    m_lOnBits(14) = 32767
    m_lOnBits(15) = 65535
    m_lOnBits(16) = 131071
    m_lOnBits(17) = 262143
    m_lOnBits(18) = 524287
    m_lOnBits(19) = 1048575
    m_lOnBits(20) = 2097151
    m_lOnBits(21) = 4194303
    m_lOnBits(22) = 8388607
    m_lOnBits(23) = 16777215
    m_lOnBits(24) = 33554431
    m_lOnBits(25) = 67108863
    m_lOnBits(26) = 134217727
    m_lOnBits(27) = 268435455
    m_lOnBits(28) = 536870911
    m_lOnBits(29) = 1073741823
    m_lOnBits(30) = 2147483647

    m_l2Power(0) = 1
    m_l2Power(1) = 2
    m_l2Power(2) = 4
    m_l2Power(3) = 8
    m_l2Power(4) = 16
    m_l2Power(5) = 32
    m_l2Power(6) = 64
    m_l2Power(7) = 128
    m_l2Power(8) = 256
    m_l2Power(9) = 512
    m_l2Power(10) = 1024
    m_l2Power(11) = 2048
    m_l2Power(12) = 4096
    m_l2Power(13) = 8192
    m_l2Power(14) = 16384
    m_l2Power(15) = 32768
    m_l2Power(16) = 65536
    m_l2Power(17) = 131072
    m_l2Power(18) = 262144
    m_l2Power(19) = 524288
    m_l2Power(20) = 1048576
    m_l2Power(21) = 2097152
    m_l2Power(22) = 4194304
    m_l2Power(23) = 8388608
    m_l2Power(24) = 16777216
    m_l2Power(25) = 33554432
    m_l2Power(26) = 67108864
    m_l2Power(27) = 134217728
    m_l2Power(28) = 268435456
    m_l2Power(29) = 536870912
    m_l2Power(30) = 1073741824

    Private Function LShift(lValue, iShiftBits)
        If iShiftBits = 0 Then
            LShift = lValue
            Exit Function
        ElseIf iShiftBits = 31 Then
            If lValue And 1 Then
                LShift = H80000000
            Else
                LShift = 0
            End If
            Exit Function
        ElseIf iShiftBits  0 or iShiftBits > 31 Then
            Err.Raise 6
        End If

        If (lValue And m_l2Power(31 - iShiftBits)) Then
            LShift = ((lValue And m_lOnBits(31 - (iShiftBits + 1))) * m_l2Power(iShiftBits)) or H80000000
        Else
            LShift = ((lValue And m_lOnBits(31 - iShiftBits)) * m_l2Power(iShiftBits))
        End If
    End Function

    Private Function RShift(lValue, iShiftBits)
        If iShiftBits = 0 Then
            RShift = lValue
            Exit Function
        ElseIf iShiftBits = 31 Then
            If lValue And H80000000 Then
                RShift = 1
            Else
                RShift = 0
            End If
            Exit Function
        ElseIf iShiftBits  0 or iShiftBits > 31 Then
            Err.Raise 6
        End If

        RShift = (lValue And H7FFFFFFE) m_l2Power(iShiftBits)

        If (lValue And H80000000) Then
            RShift = (RShift or (H40000000 m_l2Power(iShiftBits - 1)))
        End If
    End Function

    Private Function LShiftByte(bytValue, bytShiftBits)
        If bytShiftBits = 0 Then
            LShiftByte = bytValue
            Exit Function
        ElseIf bytShiftBits = 7 Then
            If bytValue And 1 Then
                LShiftByte = H80
            Else
                LShiftByte = 0
            End If
            Exit Function
        ElseIf bytShiftBits  0 or bytShiftBits > 7 Then
            Err.Raise 6
        End If

        LShiftByte = ((bytValue And m_bytOnBits(7 - bytShiftBits)) * m_byt2Power(bytShiftBits))
    End Function

    Private Function RShiftByte(bytValue, bytShiftBits)
        If bytShiftBits = 0 Then
            RShiftByte = bytValue
            Exit Function
        ElseIf bytShiftBits = 7 Then
            If bytValue And H80 Then
                RShiftByte = 1
            Else
                RShiftByte = 0
            End If
            Exit Function
        ElseIf bytShiftBits  0 or bytShiftBits > 7 Then
            Err.Raise 6
        End If

        RShiftByte = bytValue m_byt2Power(bytShiftBits)
    End Function

    Private Function RotateLeft(lValue, iShiftBits)
        RotateLeft = LShift(lValue, iShiftBits) or RShift(lValue, (32 - iShiftBits))
    End Function

    Private Function RotateLeftByte(bytValue, bytShiftBits)
        RotateLeftByte = LShiftByte(bytValue, bytShiftBits) or RShiftByte(bytValue, (8 - bytShiftBits))
    End Function

    Private Function Pack(b())
        Dim lCount
        Dim lTemp

        For lCount = 0 To 3
            lTemp = b(lCount)
            Pack = Pack or LShift(lTemp, (lCount * 8))
        Next
    End Function

    Private Function PackFrom(b(), k)
        Dim lCount
        Dim lTemp

        For lCount = 0 To 3
            lTemp = b(lCount + k)
            PackFrom = PackFrom or LShift(lTemp, (lCount * 8))
        Next
    End Function

    Private Sub Unpack(a, b())
        b(0) = a And m_lOnBits(7)
        b(1) = RShift(a, 8) And m_lOnBits(7)
        b(2) = RShift(a, 16) And m_lOnBits(7)
        b(3) = RShift(a, 24) And m_lOnBits(7)
    End Sub

    Private Sub UnpackFrom(a, b(), k)
        b(0 + k) = a And m_lOnBits(7)
        b(1 + k) = RShift(a, 8) And m_lOnBits(7)
        b(2 + k) = RShift(a, 16) And m_lOnBits(7)
        b(3 + k) = RShift(a, 24) And m_lOnBits(7)
    End Sub

    Private Function xtime(a)
        Dim b

        If (a And H80) Then
            b = H1B
        Else
            b = 0
        End If

        xtime = LShiftByte(a, 1)
        xtime = xtime Xor b
    End Function

    Private Function bmul(x, y)
        If x > 0 And y > 0 Then
            bmul = m_ptab((CLng(m_ltab(x)) + CLng(m_ltab(y))) Mod 255)
        Else
            bmul = 0
        End If
    End Function

    Private Function SubByte(a)
        Dim b(3)

        Unpack a, b
        b(0) = m_fbsub(b(0))
        b(1) = m_fbsub(b(1))
        b(2) = m_fbsub(b(2))
        b(3) = m_fbsub(b(3))

        SubByte = Pack(b)
    End Function

    Private Function product(x, y)
        Dim xb(3)
        Dim yb(3)

        Unpack x, xb
        Unpack y, yb
        product = bmul(xb(0), yb(0)) Xor bmul(xb(1), yb(1)) Xor bmul(xb(2), yb(2)) Xor bmul(xb(3), yb(3))
    End Function

    Private Function InvMixCol(x)
        Dim y
        Dim m
        Dim b(3)

        m = Pack(m_InCo)
        b(3) = product(m, x)
        m = RotateLeft(m, 24)
        b(2) = product(m, x)
        m = RotateLeft(m, 24)
        b(1) = product(m, x)
        m = RotateLeft(m, 24)
        b(0) = product(m, x)
        y = Pack(b)

        InvMixCol = y
    End Function

    Private Function ByteSub(x)
        Dim y
        Dim z

        z = x
        y = m_ptab(255 - m_ltab(z))
        z = y
        z = RotateLeftByte(z, 1)
        y = y Xor z
        z = RotateLeftByte(z, 1)
        y = y Xor z
        z = RotateLeftByte(z, 1)
        y = y Xor z
        z = RotateLeftByte(z, 1)
        y = y Xor z
        y = y Xor H63

        ByteSub = y
    End Function

    Public Sub gentables()
        Dim i
        Dim y
        Dim b(3)
        Dim ib

        m_ltab(0) = 0
        m_ptab(0) = 1
        m_ltab(1) = 0
        m_ptab(1) = 3
        m_ltab(3) = 1

        For i = 2 To 255
            m_ptab(i) = m_ptab(i - 1) Xor xtime(m_ptab(i - 1))
            m_ltab(m_ptab(i)) = i
        Next

        m_fbsub(0) = H63
        m_rbsub(H63) = 0

        For i = 1 To 255
            ib = i
            y = ByteSub(ib)
            m_fbsub(i) = y
            m_rbsub(y) = i
        Next

        y = 1
        For i = 0 To 29
            m_rco(i) = y
            y = xtime(y)
        Next

        For i = 0 To 255
            y = m_fbsub(i)
            b(3) = y Xor xtime(y)
            b(2) = y
            b(1) = y
            b(0) = xtime(y)
            m_ftable(i) = Pack(b)

            y = m_rbsub(i)
            b(3) = bmul(m_InCo(0), y)
            b(2) = bmul(m_InCo(1), y)
            b(1) = bmul(m_InCo(2), y)
            b(0) = bmul(m_InCo(3), y)
            m_rtable(i) = Pack(b)
        Next
    End Sub

    Public Sub gkey(nb, nk, Key())
        Dim i
        Dim j
        Dim k
        Dim m
        Dim N
        Dim C1
        Dim C2
        Dim C3
        Dim CipherKey(7)

        m_Nb = nb
        m_Nk = nk

        If m_Nb >= m_Nk Then
            m_Nr = 6 + m_Nb
        Else
            m_Nr = 6 + m_Nk
        End If

        C1 = 1
        If m_Nb  8 Then
            C2 = 2
            C3 = 3
        Else
            C2 = 3
            C3 = 4
        End If

        For j = 0 To nb - 1
            m = j * 3

            m_fi(m) = (j + C1) Mod nb
            m_fi(m + 1) = (j + C2) Mod nb
            m_fi(m + 2) = (j + C3) Mod nb
            m_ri(m) = (nb + j - C1) Mod nb
            m_ri(m + 1) = (nb + j - C2) Mod nb
            m_ri(m + 2) = (nb + j - C3) Mod nb
        Next

        N = m_Nb * (m_Nr + 1)

        For i = 0 To m_Nk - 1
            j = i * 4
            CipherKey(i) = PackFrom(Key, j)
        Next

        For i = 0 To m_Nk - 1
            m_fkey(i) = CipherKey(i)
        Next

        j = m_Nk
        k = 0
        Do While j  N
            m_fkey(j) = m_fkey(j - m_Nk) Xor _
                   SubByte(RotateLeft(m_fkey(j - 1), 24)) Xor m_rco(k)
            If m_Nk = 6 Then
                i = 1
                Do While i  m_Nk And (i + j)  N
                    m_fkey(i + j) = m_fkey(i + j - m_Nk) Xor _
                           m_fkey(i + j - 1)
                    i = i + 1
                Loop
            Else
                i = 1
                Do While i  4 And (i + j)  N
                    m_fkey(i + j) = m_fkey(i + j - m_Nk) Xor _
                           m_fkey(i + j - 1)
                    i = i + 1
                Loop
                If j + 4  N Then
                    m_fkey(j + 4) = m_fkey(j + 4 - m_Nk) Xor _
                           SubByte(m_fkey(j + 3))
                End If
                i = 5
                Do While i  m_Nk And (i + j)  N
                    m_fkey(i + j) = m_fkey(i + j - m_Nk) Xor _
                           m_fkey(i + j - 1)
                    i = i + 1
                Loop
            End If

            j = j + m_Nk
            k = k + 1
        Loop

        For j = 0 To m_Nb - 1
            m_rkey(j + N - nb) = m_fkey(j)
        Next

        i = m_Nb
        Do While i  N - m_Nb
            k = N - m_Nb - i
            For j = 0 To m_Nb - 1
                m_rkey(k + j) = InvMixCol(m_fkey(i + j))
            Next
            i = i + m_Nb
        Loop

        j = N - m_Nb
        Do While j  N
            m_rkey(j - N + m_Nb) = m_fkey(j)
            j = j + 1
        Loop
    End Sub

    Public Sub encrypt(buff())
        Dim i
        Dim j
        Dim k
        Dim m
        Dim a(7)
        Dim b(7)
        Dim x
        Dim y
        Dim t

        For i = 0 To m_Nb - 1
            j = i * 4

            a(i) = PackFrom(buff, j)
            a(i) = a(i) Xor m_fkey(i)
        Next

        k = m_Nb
        x = a
        y = b

        For i = 1 To m_Nr - 1
            For j = 0 To m_Nb - 1
                m = j * 3
                y(j) = m_fkey(k) Xor m_ftable(x(j) And m_lOnBits(7)) Xor _
                  RotateLeft(m_ftable(RShift(x(m_fi(m)), 8) And m_lOnBits(7)), 8) Xor _
                  RotateLeft(m_ftable(RShift(x(m_fi(m + 1)), 16) And m_lOnBits(7)), 16) Xor _
                  RotateLeft(m_ftable(RShift(x(m_fi(m + 2)), 24) And m_lOnBits(7)), 24)
                k = k + 1
            Next
            t = x
            x = y
            y = t
        Next

        For j = 0 To m_Nb - 1
            m = j * 3
            y(j) = m_fkey(k) Xor m_fbsub(x(j) And m_lOnBits(7)) Xor _
              RotateLeft(m_fbsub(RShift(x(m_fi(m)), 8) And m_lOnBits(7)), 8) Xor _
              RotateLeft(m_fbsub(RShift(x(m_fi(m + 1)), 16) And m_lOnBits(7)), 16) Xor _
              RotateLeft(m_fbsub(RShift(x(m_fi(m + 2)), 24) And m_lOnBits(7)), 24)
            k = k + 1
        Next

        For i = 0 To m_Nb - 1
            j = i * 4
            UnpackFrom y(i), buff, j
            x(i) = 0
            y(i) = 0
        Next
    End Sub

    Public Sub decrypt(buff())
        Dim i
        Dim j
        Dim k
        Dim m
        Dim a(7)
        Dim b(7)
        Dim x
        Dim y
        Dim t

        For i = 0 To m_Nb - 1
            j = i * 4
            a(i) = PackFrom(buff, j)
            a(i) = a(i) Xor m_rkey(i)
        Next

        k = m_Nb
        x = a
        y = b

        For i = 1 To m_Nr - 1
            For j = 0 To m_Nb - 1
                m = j * 3
                y(j) = m_rkey(k) Xor m_rtable(x(j) And m_lOnBits(7)) Xor _
                  RotateLeft(m_rtable(RShift(x(m_ri(m)), 8) And m_lOnBits(7)), 8) Xor _
                  RotateLeft(m_rtable(RShift(x(m_ri(m + 1)), 16) And m_lOnBits(7)), 16) Xor _
                  RotateLeft(m_rtable(RShift(x(m_ri(m + 2)), 24) And m_lOnBits(7)), 24)
                k = k + 1
            Next
            t = x
            x = y
            y = t
        Next

        For j = 0 To m_Nb - 1
            m = j * 3

            y(j) = m_rkey(k) Xor m_rbsub(x(j) And m_lOnBits(7)) Xor _
              RotateLeft(m_rbsub(RShift(x(m_ri(m)), 8) And m_lOnBits(7)), 8) Xor _
              RotateLeft(m_rbsub(RShift(x(m_ri(m + 1)), 16) And m_lOnBits(7)), 16) Xor _
              RotateLeft(m_rbsub(RShift(x(m_ri(m + 2)), 24) And m_lOnBits(7)), 24)
            k = k + 1
        Next

        For i = 0 To m_Nb - 1
            j = i * 4

            UnpackFrom y(i), buff, j
            x(i) = 0
            y(i) = 0
        Next
    End Sub

    Private Function IsInitialized(vArray)
        On Error Resume Next

        IsInitialized = IsNumeric(UBound(vArray))
    End Function

    Private Sub CopyBytesASP(bytDest, lDestStart, bytSource(), lSourceStart, lLength)
        Dim lCount

        lCount = 0
        Do
            bytDest(lDestStart + lCount) = bytSource(lSourceStart + lCount)
            lCount = lCount + 1
        Loop Until lCount = lLength
    End Sub

    Public Function EncryptData(bytMessage, bytPassword)
        Dim bytKey(31)
        Dim bytIn()
        Dim bytOut()
        Dim bytTemp(31)
        Dim lCount
        Dim lLength
        Dim lEncodedLength
        Dim bytLen(3)
        Dim lPosition

        If Not IsInitialized(bytMessage) Then
            Exit Function
        End If
        If Not IsInitialized(bytPassword) Then
            Exit Function
        End If

        For lCount = 0 To UBound(bytPassword)
            bytKey(lCount) = bytPassword(lCount)
            If lCount = 31 Then
                Exit For
            End If
        Next

        gentables
        gkey 8, 8, bytKey

        lLength = UBound(bytMessage) + 1
        lEncodedLength = lLength + 4

        If lEncodedLength Mod 32 > 0 Then
            lEncodedLength = lEncodedLength + 32 - (lEncodedLength Mod 32)
        End If
        ReDim bytIn(lEncodedLength - 1)
        ReDim bytOut(lEncodedLength - 1)

        Unpack lLength, bytIn
        CopyBytesASP bytIn, 4, bytMessage, 0, lLength

        For lCount = 0 To lEncodedLength - 1 Step 32
            CopyBytesASP bytTemp, 0, bytIn, lCount, 32
            Encrypt bytTemp
            CopyBytesASP bytOut, lCount, bytTemp, 0, 32
        Next

        EncryptData = bytOut
    End Function

    Public Function DecryptData(bytIn, bytPassword)
        Dim bytMessage()
        Dim bytKey(31)
        Dim bytOut()
        Dim bytTemp(31)
        Dim lCount
        Dim lLength
        Dim lEncodedLength
        Dim bytLen(3)
        Dim lPosition

        If Not IsInitialized(bytIn) Then
            Exit Function
        End If
        If Not IsInitialized(bytPassword) Then
            Exit Function
        End If

        lEncodedLength = UBound(bytIn) + 1

        If lEncodedLength Mod 32 > 0 Then
            Exit Function
        End If

        For lCount = 0 To UBound(bytPassword)
            bytKey(lCount) = bytPassword(lCount)
            If lCount = 31 Then
                Exit For
            End If
        Next

        gentables
        gkey 8, 8, bytKey

        ReDim bytOut(lEncodedLength - 1)

        For lCount = 0 To lEncodedLength - 1 Step 32
            CopyBytesASP bytTemp, 0, bytIn, lCount, 32
            Decrypt bytTemp
            CopyBytesASP bytOut, lCount, bytTemp, 0, 32
        Next

        lLength = Pack(bytOut)

        If lLength > lEncodedLength - 4 Then
            Exit Function
        End If

        ReDim bytMessage(lLength - 1)
        CopyBytesASP bytMessage, 0, bytOut, 4, lLength

        DecryptData = bytMessage
    End Function

    8.一个日期转换函数

    Function FormatDate(byVal strDate, byVal strFormat)

        ' Accepts strDate as a valid date/time,
        ' strFormat as the output template.
        ' The function finds each item in the
        ' template and replaces it with the
        ' relevant information extracted from strDate.
        ' You are free to use this code provided the following line remains
        ' www.adopenstatic.com/resources/code/formatdate.asp

        ' Template items
        ' %m Month as a decimal no. 2
        ' %M Month as a padded decimal no. 02
        ' %B Full month name February
        ' %b Abbreviated month name Feb
        ' %d Day of the month eg 23
        ' %D Padded day of the month eg 09
        ' %O ordinal of day of month (eg st or rd or nd)
        ' %j Day of the year 54
        ' %Y Year with century 1998
        ' %y Year without century 98
        ' %w Weekday as integer (0 is Sunday)
        ' %a Abbreviated day name Fri
        ' %A Weekday Name Friday
        ' %H Hour in 24 hour format 24
        ' %h Hour in 12 hour format 12
        ' %N Minute as an integer 01
        ' %n Minute as optional if minute > 00
        ' %S Second as an integer 55
        ' %P AM/PM Indicator PM

        On Error Resume Next

        Dim intPosItem
        Dim int12HourPart
        Dim str24HourPart
        Dim strMinutePart
        Dim strSecondPart
        Dim strAMPM

        ' Insert Month Numbers
        strFormat = Replace(strFormat, "%m", DatePart("m", strDate), 1, -1, vbBinaryCompare)

        ' Insert Padded Month Numbers
        strFormat = Replace(strFormat, "%M", Right("0"  DatePart("m", strDate), 2), 1, -1, vbBinaryCompare)

        ' Insert non-Abbreviated Month Names
        strFormat = Replace(strFormat, "%B", MonthName(DatePart("m", strDate), False), 1, -1, vbBinaryCompare)

        ' Insert Abbreviated Month Names
        strFormat = Replace(strFormat, "%b", MonthName(DatePart("m", strDate), True), 1, -1, vbBinaryCompare)

        ' Insert Day Of Month
        strFormat = Replace(strFormat, "%d", DatePart("d", strDate), 1, -1, vbBinaryCompare)

        ' Insert Padded Day Of Month
        strFormat = Replace(strFormat, "%D", Right ("0"  DatePart("d", strDate), 2), 1, -1, vbBinaryCompare)

        ' Insert Day of Month ordinal (eg st, th, or rd)
        strFormat = Replace(strFormat, "%O", GetDayOrdinal(Day(strDate)), 1, -1, vbBinaryCompare)

        ' Insert Day of Year
        strFormat = Replace(strFormat, "%j", DatePart("y", strDate), 1, -1, vbBinaryCompare)

        ' Insert Long Year (4 digit)
        strFormat = Replace(strFormat, "%Y", DatePart("yyyy", strDate), 1, -1, vbBinaryCompare)

        ' Insert Short Year (2 digit)
        strFormat = Replace(strFormat, "%y", Right(DatePart("yyyy", strDate), 2), 1, -1, vbBinaryCompare)

        ' Insert Weekday as Integer (eg 0 = Sunday)
        strFormat = Replace(strFormat, "%w", DatePart("w", strDate, 1), 1, -1, vbBinaryCompare)

        ' Insert Abbreviated Weekday Name (eg Sun)
        strFormat = Replace(strFormat, "%a", WeekdayName(DatePart("w", strDate, 1), True), 1, -1, vbBinaryCompare)

        ' Insert non-Abbreviated Weekday Name
        strFormat = Replace(strFormat, "%A", WeekdayName(DatePart("w", strDate, 1), False), 1, -1, vbBinaryCompare)

        ' Insert Hour in 24hr format
        str24HourPart = DatePart("h", strDate)
        If Len(str24HourPart)  2 Then str24HourPart = "0"  str24HourPart
        strFormat = Replace(strFormat, "%H", str24HourPart, 1, -1, vbBinaryCompare)

        ' Insert Hour in 12hr format
        int12HourPart = DatePart("h", strDate) Mod 12
        If int12HourPart = 0 Then int12HourPart = 12
        strFormat = Replace(strFormat, "%h", int12HourPart, 1, -1, vbBinaryCompare)

        ' Insert Minutes
        strMinutePart = DatePart("n", strDate)
        If Len(strMinutePart)  2 Then strMinutePart = "0"  strMinutePart
        strFormat = Replace(strFormat, "%N", strMinutePart, 1, -1, vbBinaryCompare)

        ' Insert Optional Minutes
        If CInt(strMinutePart) = 0 Then
            strFormat = Replace(strFormat, "%n", "", 1, -1, vbBinaryCompare)
        Else
            If CInt(strMinutePart)  10 Then strMinutePart = "0"  strMinutePart
            strMinutePart = ":"  strMinutePart
            strFormat = Replace(strFormat, "%n", strMinutePart, 1, -1, vbBinaryCompare)
        End If

        ' Insert Seconds
        strSecondPart = DatePart("s", strDate)
        If Len(strSecondPart)  2 Then strSecondPart = "0"  strSecondPart
        strFormat = Replace(strFormat, "%S", strSecondPart, 1, -1, vbBinaryCompare)

        ' Insert AM/PM indicator
        If DatePart("h", strDate) >= 12 Then
            strAMPM = "PM"
        Else
            strAMPM = "AM"
        End If

        strFormat = Replace(strFormat, "%P", strAMPM, 1, -1, vbBinaryCompare)

        FormatDate = strFormat

    End Function

    Function GetDayOrdinal( _
                           byVal intDay _
                           )

        ' Accepts a day of the month
        ' as an integer and returns the
        ' appropriate suffix
        On Error Resume Next

        Dim strOrd

        Select Case intDay
            Case 1, 21, 31
                strOrd = "st"
            Case 2, 22
                strOrd = "nd"
            Case 3, 23
                strOrd = "rd"
            Case Else
                strOrd = "th"
        End Select

        GetDayOrdinal = strOrd

    End Function
    %>
    %
    Dim db
    db = "dbms.mdb"

    '******************************************************************
    '执行sql语句,不返回值,sql语句最好是如下:
    'update 表名 set 字段名=value,字段名=value where 字段名=value
    'delete from 表名 where 字段名=value
    'insert into 表名 (字段名,字段名) values (value,value)
    '******************************************************************

    Sub NoResult(sql)
        Dim conn
        Dim connstr
        Set conn = Server.CreateObject("ADODB.Connection")
        connstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="  Server.MapPath(""db"")
        conn.Open connstr
        conn.Execute sql
        conn.Close
        Set conn = Nothing
    End Sub

    '*******************************************************************
    '执行select语句,返回recordset对象。该对象只读。也就是不能更新
    '*******************************************************************

    Function Result(sql)
        Dim conn
        Dim connstr
        Dim rcs
        Set conn = Server.CreateObject("ADODB.Connection")
        connstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="  Server.MapPath(""db"")
        conn.Open connstr
        Set rcs = Server.CreateObject("ADODB.Recordset")
        rcs.Open sql, conn, 1, 1
        Set Result = rcs
    End Function

    '*******************************************************************
    ' 弹出对话框
    '*******************************************************************

    Sub alert(message)
        message = Replace(message, "'", "\'")
        Response.Write ("script>alert('"  message  "')/script>")
    End Sub

    '*******************************************************************
    ' 返回上一页,一般用在判断信息提交是否完全之后
    '*******************************************************************

    Sub GoBack()
        Response.Write ("script>history.go(-1)/script>")
    End Sub

    '*******************************************************************
    ' 重定向另外的连接
    '*******************************************************************

    Sub Go(url)
        Response.Write ("script>location.href('"  url  "')/script>")
    End Sub

    '*******************************************************************
    ' 把html标记替换
    '*******************************************************************

    Function htmlencode2(Str)
        Dim result
        Dim l
        If IsNull(Str) Then
            htmlencode2 = ""
            Exit Function
        End If
        l = Len(Str)
        result = ""
        Dim i
        For i = 1 To l
            Select Case Mid(Str, i, 1)
                Case ""
                    result = result + ""
                Case ">"
                    result = result + ">"
                Case Chr(13)
                    result = result + "br>"
                Case Chr(34)
                    result = result + """%>
    %
    cLeft(String, Length) 返回指定数目的从字符串的左边算起的字符,区分单双字节。

    如:
    Dim MyString, LeftString
    MyString = "文字测试VBSCript"
    LeftString = cLeft(MyString, 10)
    返回 "文字测试VB"。

    MyRandc(n) 生成随机字符,n为字符的个数

    如:
    response.Write MyRandn(10)
    输出10个随机字符

    MyRandn(n) 生成随机数字,n为数字的个数

    如:
    response.Write MyRandn(10)
    输出10个随机数字

    formatQueryStr(Str) 格式化sql中的like字符串.
    如:
    q = Request("q")
    q = formatQueryStr(q)
    sql = "select * from [table] where aa like '%" q "%'"

    GetRnd(min, max) 返回min - max之间的一个随机数

    如:
    response.Write GetRnd(100, 200)
    输出大于100到200之间的一个随机数

    Function cLeft(Str, n)
        Dim str1, str2, alln, Islefted
        str2 = ""
        alln = 0
        str1 = Str
        Islefted = False
        If IsNull(Str) Then
            cleft = ""
            Exit Function
        End If
        For i = 1 To Len(str1)
            nowstr = Mid(str1, i, 1)
            If Asc(nowstr)0 Then
                alln = alln + 2
            Else
                alln = alln + 1
            End If
            If (alln= n) Then
                str2 = str2  nowstr
            Else
                Islefted = True
                Exit For
            End If
        Next
        If Islefted Then
            str2 = str2  ".."
        End If
        cleft = str2
    End Function

    Function MyRandc(n) '生成随机字符,n为字符的个数
        Dim thechr
        thechr = ""
        For i = 1 To n
            Dim zNum, zNum2
            Randomize
            zNum = CInt(25 * Rnd)
            zNum2 = CInt(10 * Rnd)
            If zNum2 Mod 2 = 0 Then
                zNum = zNum + 97
            Else
                zNum = zNum + 65
            End If
            thechr = thechr  Chr(zNum)
        Next
        MyRandc = thechr
    End Function

    Function MyRandn(n) '生成随机数字,n为数字的个数
        Dim thechr
        thechr = ""
        For i = 1 To n
            Dim zNum, zNum2
            Randomize
            zNum = CInt(9 * Rnd)
            zNum = zNum + 48
            thechr = thechr  Chr(zNum)
        Next
        MyRandn = thechr
    End Function

    Function formatQueryStr(Str) '格式化sql中的like字符串
        Dim nstr
        nstr = Str
        nstr = Replace(nstr, Chr(0), "")
        nstr = Replace(nstr, "'", "''")
        nstr = Replace(nstr, "[", "[[]")
        nstr = Replace(nstr, "%", "[%]")
        formatQueryStr = nstr
    End Function

    Function GetRnd(min, max)
        Randomize
        GetRnd = Int((max - min + 1) * Rnd + min)
    End Function


    '*******************************************************************
    '取得IP地址
    '*******************************************************************

    Function Userip()
        Dim GetClientIP
        '如果客户端用了代理服务器,则应该用ServerVariables("HTTP_X_FORWARDED_FOR")方法
        GetClientIP = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
        If GetClientIP = "" or IsNull(GetClientIP) or IsEmpty(GetClientIP) Then
            '如果客户端没用代理,应该用Request.ServerVariables("REMOTE_ADDR")方法
            GetClientIP = Request.ServerVariables("REMOTE_ADDR")
        End If
        Userip = GetClientIP
    End Function


    '*******************************************************************
    '转换IP地址
    '*******************************************************************

    Function cip(sip)
        tip = CStr(sip)
        sip1 = Left(tip, CInt(InStr(tip, ".") -1))
        tip = Mid(tip, CInt(InStr(tip, ".") + 1))
        sip2 = Left(tip, CInt(InStr(tip, ".") -1))
        tip = Mid(tip, CInt(InStr(tip, ".") + 1))
        sip3 = Left(tip, CInt(InStr(tip, ".") -1))
        sip4 = Mid(tip, CInt(InStr(tip, ".") + 1))
        cip = CInt(sip1) * 256 * 256 * 256 + CInt(sip2) * 256 * 256 + CInt(sip3) * 256 + CInt(sip4)
    End Function


    '*******************************************************************
    ' 弹出对话框
    '*******************************************************************

    Sub alert(message)
        message = Replace(message, "'", "\'")
        Response.Write ("script>alert('"  message  "')/script>")
    End Sub

    '*******************************************************************
    ' 返回上一页,一般用在判断信息提交是否完全之后
    '*******************************************************************

    Sub GoBack()
        Response.Write ("script>history.go(-1)/script>")
    End Sub


    '*******************************************************************
    ' 重定向另外的连接
    '*******************************************************************

    Sub Go(url)
        Response.Write ("script>location.href('"  url  "')/script>")
    End Sub


    '*******************************************************************
    ' 指定秒数重定向另外的连接
    '*******************************************************************

    Sub GoPage(url, s)
        s = s * 1000
        Response.Write "SCRIPT LANGUAGE=javascript>"
        Response.Write "window.setTimeout("Chr(34)"window.navigate('"url"')"Chr(34)","s")"
        Response.Write "/script>"
    End Sub


    '*******************************************************************
    ' 判断数字是否整形
    '*******************************************************************

    Function isInteger(para)
        On Error Resume Next
        Dim Str
        Dim l, i
        If IsNull(para) Then
            isInteger = False
            Exit Function
        End If
        Str = CStr(para)
        If Trim(Str) = "" Then
            isInteger = False
            Exit Function
        End If
        l = Len(Str)
        For i = 1 To l
            If Mid(Str, i, 1)>"9" or Mid(Str, i, 1)"0" Then
                isInteger = False
                Exit Function
            End If
        Next
        isInteger = True
        If Err.Number>0 Then Err.Clear
    End Function


    '*******************************************************************
    ' 获得文件扩展名
    '*******************************************************************

    Function GetExtend(filename)
        Dim tmp
        If filename>"" Then
            tmp = Mid(filename, instrrev(filename, ".") + 1, Len(filename) - instrrev(filename, "."))
            tmp = LCase(tmp)
            If InStr(1, tmp, "asp")>0 or InStr(1, tmp, "php")>0 or InStr(1, tmp, "php3")>0 or InStr(1, tmp, "aspx")>0 Then
                getextend = "txt"
            Else
                getextend = tmp
            End If
        Else
            getextend = ""
        End If
    End Function


    ' *----------------------------------------------------------------------------
    ' * 函数:CheckIn
    ' * 描述:检测参数是否有SQL危险字符
    ' * 参数:str要检测的数据
    ' * 返回:FALSE:安全 TRUE:不安全
    ' * 作者:
    ' * 日期:
    ' *----------------------------------------------------------------------------

    Function CheckIn(Str)
        If InStr(1, Str, Chr(39))>0 or InStr(1, Str, Chr(34))>0 or InStr(1, Str, Chr(59))>0 Then
            CheckIn = True
        Else
            CheckIn = False
        End If
    End Function


    ' *----------------------------------------------------------------------------
    ' * 函数:HTMLEncode
    ' * 描述:过滤HTML代码
    ' * 参数:--
    ' * 返回:--
    ' * 作者:
    ' * 日期:
    ' *----------------------------------------------------------------------------

    Function HTMLEncode(fString)
        If Not IsNull(fString) Then
            fString = Replace(fString, ">", ">")
            fString = Replace(fString, "", "")

            fString = Replace(fString, Chr(32), " ")
            fString = Replace(fString, Chr(9), " ")
            fString = Replace(fString, Chr(34), """)
            fString = Replace(fString, Chr(39), "'")
            fString = Replace(fString, Chr(13), "")
            fString = Replace(fString, Chr(10)  Chr(10), "/P>P> ")
            fString = Replace(fString, Chr(10), "BR> ")

            HTMLEncode = fString
        End If
    End Function


    ' *----------------------------------------------------------------------------
    ' * 函数:HTMLcode
    ' * 描述:过滤表单字符
    ' * 参数:--
    ' * 返回:--
    ' * 作者:
    ' * 日期:
    ' *----------------------------------------------------------------------------

    Function HTMLcode(fString)
        If Not IsNull(fString) Then
            fString = Replace(fString, Chr(13), "")
            fString = Replace(fString, Chr(10)  Chr(10), "/P>P>")
            fString = Replace(fString, Chr(34), "")
            fString = Replace(fString, Chr(10), "BR>")
            HTMLcode = fString
        End If
    End Function


    %>
    %
    cLeft(String, Length) 返回指定数目的从字符串的左边算起的字符,区分单双字节。
    如:
    Dim MyString, LeftString
    MyString = "文字测试VBSCript"
    LeftString = cLeft(MyString, 10)
    返回 "文字测试VB"。
    MyRandc(n) 生成随机字符,n为字符的个数
    如:
    response.Write MyRandn(10)
    输出10个随机字符
    MyRandn(n) 生成随机数字,n为数字的个数
    如:
    response.Write MyRandn(10)
    输出10个随机数字
    formatQueryStr(Str) 格式化sql中的like字符串.
    如:
    q = Request("q")
    q = formatQueryStr(q)
    sql = "select * from [table] where aa like '%" q "%'"
    GetRnd(min, max) 返回min - max之间的一个随机数
    如:
    response.Write GetRnd(100, 200)
    输出大于100到200之间的一个随机数

    Function cLeft(Str, n)
        Dim str1, str2, alln, Islefted
        str2 = ""
        alln = 0
        str1 = Str
        Islefted = False
        If IsNull(Str) Then
            cleft = ""
            Exit Function
        End If
        For i = 1 To Len(str1)
            nowstr = Mid(str1, i, 1)
            If Asc(nowstr)0 Then
                alln = alln + 2
            Else
                alln = alln + 1
            End If
            If (alln= n) Then
                str2 = str2  nowstr
            Else
                Islefted = True
                Exit For
            End If
        Next
        If Islefted Then
            str2 = str2  ".."
        End If
        cleft = str2
    End Function


    Function MyRandc(n) '生成随机字符,n为字符的个数
        Dim thechr
        thechr = ""
        For i = 1 To n
            Dim zNum, zNum2
            Randomize
            zNum = CInt(25 * Rnd)
            zNum2 = CInt(10 * Rnd)
            If zNum2 Mod 2 = 0 Then
                zNum = zNum + 97
            Else
                zNum = zNum + 65
            End If
            thechr = thechr  Chr(zNum)
        Next
        MyRandc = thechr
    End Function


    Function MyRandn(n) '生成随机数字,n为数字的个数
        Dim thechr
        thechr = ""
        For i = 1 To n
            Dim zNum, zNum2
            Randomize
            zNum = CInt(9 * Rnd)
            zNum = zNum + 48
            thechr = thechr  Chr(zNum)
        Next
        MyRandn = thechr
    End Function


    Function formatQueryStr(Str) '格式化sql中的like字符串
        Dim nstr
        nstr = Str
        nstr = Replace(nstr, Chr(0), "")
        nstr = Replace(nstr, "'", "''")
        nstr = Replace(nstr, "[", "[[]")
        nstr = Replace(nstr, "%", "[%]")
        formatQueryStr = nstr
    End Function


    Function GetRnd(min, max)
        Randomize
        GetRnd = Int((max - min + 1) * Rnd + min)
    End Function

    '*******************************************************************
    '取得IP地址
    '*******************************************************************

    Function Userip()
        Dim GetClientIP
        '如果客户端用了代理服务器,则应该用ServerVariables("HTTP_X_FORWARDED_FOR")方法
        GetClientIP = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
        If GetClientIP = "" or IsNull(GetClientIP) or IsEmpty(GetClientIP) Then
            '如果客户端没用代理,应该用Request.ServerVariables("REMOTE_ADDR")方法
            GetClientIP = Request.ServerVariables("REMOTE_ADDR")
        End If
        Userip = GetClientIP
    End Function

    '*******************************************************************
    '转换IP地址
    '*******************************************************************

    Function cip(sip)
        tip = CStr(sip)
        sip1 = Left(tip, CInt(InStr(tip, ".") -1))
        tip = Mid(tip, CInt(InStr(tip, ".") + 1))
        sip2 = Left(tip, CInt(InStr(tip, ".") -1))
        tip = Mid(tip, CInt(InStr(tip, ".") + 1))
        sip3 = Left(tip, CInt(InStr(tip, ".") -1))
        sip4 = Mid(tip, CInt(InStr(tip, ".") + 1))
        cip = CInt(sip1) * 256 * 256 * 256 + CInt(sip2) * 256 * 256 + CInt(sip3) * 256 + CInt(sip4)
    End Function

    '*******************************************************************
    ' 弹出对话框
    '*******************************************************************

    Sub alert(message)
        message = Replace(message, "'", "\'")
        Response.Write ("script>alert('"  message  "')/script>")
    End Sub

    '*******************************************************************
    ' 返回上一页,一般用在判断信息提交是否完全之后
    '*******************************************************************

    Sub GoBack()
        Response.Write ("script>history.go(-1)/script>")
    End Sub

    '*******************************************************************
    ' 重定向另外的连接
    '*******************************************************************

    Sub Go(url)
        Response.Write ("script>location.href('"  url  "')/script>")
    End Sub

    '*******************************************************************
    ' 指定秒数重定向另外的连接
    '*******************************************************************

    Sub GoPage(url, s)
        s = s * 1000
        Response.Write "SCRIPT LANGUAGE=javascript>"
        Response.Write "window.setTimeout("Chr(34)"window.navigate('"url"')"Chr(34)","s")"
        Response.Write "/script>"
    End Sub

    '*******************************************************************
    ' 判断数字是否整形
    '*******************************************************************

    Function isInteger(para)
        On Error Resume Next
        Dim Str
        Dim l, i
        If IsNull(para) Then
            isInteger = False
            Exit Function
        End If
        Str = CStr(para)
        If Trim(Str) = "" Then
            isInteger = False
            Exit Function
        End If
        l = Len(Str)
        For i = 1 To l
            If Mid(Str, i, 1)>"9" or Mid(Str, i, 1)"0" Then
                isInteger = False
                Exit Function
            End If
        Next
        isInteger = True
        If Err.Number>0 Then Err.Clear
    End Function

    '*******************************************************************
    ' 获得文件扩展名
    '*******************************************************************

    Function GetExtend(filename)
        Dim tmp
        If filename>"" Then
            tmp = Mid(filename, instrrev(filename, ".") + 1, Len(filename) - instrrev(filename, "."))
            tmp = LCase(tmp)
            If InStr(1, tmp, "asp")>0 or InStr(1, tmp, "php")>0 or InStr(1, tmp, "php3")>0 or InStr(1, tmp, "aspx")>0 Then
                getextend = "txt"
            Else
                getextend = tmp
            End If
        Else
            getextend = ""
        End If
    End Function

    ' *----------------------------------------------------------------------------
    ' * 函数:CheckIn
    ' * 描述:检测参数是否有SQL危险字符
    ' * 参数:str要检测的数据
    ' * 返回:FALSE:安全 TRUE:不安全
    ' * 作者:
    ' * 日期:
    ' *----------------------------------------------------------------------------

    Function CheckIn(Str)
        If InStr(1, Str, Chr(39))>0 or InStr(1, Str, Chr(34))>0 or InStr(1, Str, Chr(59))>0 Then
            CheckIn = True
        Else
            CheckIn = False
        End If
    End Function

    ' *----------------------------------------------------------------------------
    ' * 函数:HTMLEncode
    ' * 描述:过滤HTML代码
    ' * 参数:--
    ' * 返回:--
    ' * 作者:
    ' * 日期:
    ' *----------------------------------------------------------------------------

    Function HTMLEncode(fString)
        If Not IsNull(fString) Then
            fString = Replace(fString, ">", ">")
            fString = Replace(fString, "", "")
            fString = Replace(fString, Chr(32), " ")
            fString = Replace(fString, Chr(9), " ")
            fString = Replace(fString, Chr(34), """)
            fString = Replace(fString, Chr(39), "'")
            fString = Replace(fString, Chr(13), "")
            fString = Replace(fString, Chr(10)  Chr(10), "/P>P> ")
            fString = Replace(fString, Chr(10), "BR> ")
            HTMLEncode = fString
        End If
    End Function

    ' *----------------------------------------------------------------------------
    ' * 函数:HTMLcode
    ' * 描述:过滤表单字符
    ' * 参数:--
    ' * 返回:--
    ' * 作者:
    ' * 日期:
    ' *----------------------------------------------------------------------------

    Function HTMLcode(fString)
        If Not IsNull(fString) Then
            fString = Replace(fString, Chr(13), "")
            fString = Replace(fString, Chr(10)  Chr(10), "/P>P>")
            fString = Replace(fString, Chr(34), "")
            fString = Replace(fString, Chr(10), "BR>")
            HTMLcode = fString
        End If
    End Function
    %>
    11.ACCESS数据库连接:
    %
    Option Explicit
    Dim startime, endtime, conn, connstr, db
    startime = Timer()
    '更改数据库名字
    db = "data/dvBBS5.mdb"
    Set conn = Server.CreateObject("ADODB.Connection")
    connstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="  Server.MapPath(db)
    '如果你的服务器采用较老版本Access驱动,请用下面连接方法
    'connstr="driver={Microsoft Access Driver (*.mdb)};dbq="  Server.MapPath(db)
    conn.Open connstr

    Function CloseDatabase
        Conn.Close
        Set conn = Nothing
    End Function
    %>
    12.SQL数据库连接:
    %
    Option Explicit
    Dim startime, endtime, conn, connstr, db
    startime = Timer()
    connstr = "driver={SQL Server};server=HUDENQ-N11T33NB;uid=sa;pwd=xsfeihu;database=dvbbs"
    Set conn = Server.CreateObject("ADODB.Connection")
    conn.Open connstr

    Function CloseDatabase
        Conn.Close
        Set conn = Nothing
    End Function
    %>
    13.用键盘打开网页代码:
    script language="javascript">
    function ctlent(eventobject)
    {
    if((event.ctrlKey  window.event.keyCode==13)||(event.altKey  window.event.keyCode==83))
    {
    window.open('网址','','')
    }
    }
    /script> 
    这里是Ctrl+Enter和Alt+S的代码 自己查下键盘的ASCII码再换就行
    14.让层不被控件复盖代码:
    div z-Index:2>object ***>/object>/div> # 前面
    div z-Index:1>object ***>/object>/div> # 后面
    div id="Layer2" style="position:absolute; top:40;width:400px; height:95px;z-index:2">table height=100% width=100% bgcolor="#ff0000">tr>td height=100% width=100%>/td>/tr>/table>iframe width=0 height=0>/iframe>/div>
    div id="Layer1" style="position:absolute; top:50;width:200px; height:115px;z-index:1">iframe height=100% width=100%>/iframe>/div>
    15.动网FLASH广告代码:
    object classid="clsid27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0" width="468" height="60">param name=movie value="images/yj16d.swf">param name=quality value=high>embed src="images/dvbanner.swf" quality=high pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash";;; type="application/x-shockwave-flash" width="468" height="60">/embed>/object>
    16.VBS弹出窗口小代码:
    script language=vbscript>
    msgbox"你还没有注册或登陆论坛","0","精品论坛"
    location.href = "login.asp"
    /script>
    16.使用FSO修改文件特定内容的函数
    %
    Function FSOchange(filename, Target, String)
        Dim objFSO, objCountFile, FiletempData
        Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
        Set objCountFile = objFSO.OpenTextFile(Server.MapPath(filename), 1, True)
        FiletempData = objCountFile.ReadAll
        objCountFile.Close
        FiletempData = Replace(FiletempData, Target, String)
        Set objCountFile = objFSO.CreateTextFile(Server.MapPath(filename), True)
        objCountFile.Write FiletempData
        objCountFile.Close
        Set objCountFile = Nothing
        Set objFSO = Nothing
    End Function
    %>
    17.使用FSO读取文件内容的函数
    %
    Function FSOFileRead(filename)
        Dim objFSO, objCountFile, FiletempData
        Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
        Set objCountFile = objFSO.OpenTextFile(Server.MapPath(filename), 1, True)
        FSOFileRead = objCountFile.ReadAll
        objCountFile.Close
        Set objCountFile = Nothing
        Set objFSO = Nothing
    End Function
    %>
    18.使用FSO读取文件某一行的函数
    %
    Function FSOlinedit(filename, lineNum)
        If linenum  1 Then Exit Function
        Dim fso, f, temparray, tempcnt
        Set fso = server.CreateObject("scripting.filesystemobject")
        If Not fso.FileExists(server.mappath(filename)) Then Exit Function
        Set f = fso.OpenTextFile(server.mappath(filename), 1)
        If Not f.AtEndOfStream Then
            tempcnt = f.ReadAll
            f.Close
            Set f = Nothing
            temparray = Split(tempcnt, Chr(13)Chr(10))
            If lineNum>UBound(temparray) + 1 Then
                Exit Function
            Else
                FSOlinedit = temparray(lineNum -1)
            End If
        End If
    End Function
    %>
    19.使用FSO写文件某一行的函数
    %
    Function FSOlinewrite(filename, lineNum, Linecontent)
        If linenum  1 Then Exit Function
        Dim fso, f, temparray, tempCnt
        Set fso = server.CreateObject("scripting.filesystemobject")
        If Not fso.FileExists(server.mappath(filename)) Then Exit Function
        Set f = fso.OpenTextFile(server.mappath(filename), 1)
        If Not f.AtEndOfStream Then
            tempcnt = f.ReadAll
            f.Close
            temparray = Split(tempcnt, Chr(13)Chr(10))
            If lineNum>UBound(temparray) + 1 Then
                Exit Function
            Else
                temparray(lineNum -1) = lineContent
            End If
            tempcnt = Join(temparray, Chr(13)Chr(10))
            Set f = fso.CreateTextFile(server.mappath(filename), True)
            f.Write tempcnt
        End If
        f.Close
        Set f = Nothing
    End Function
    %>
    20.使用FSO添加文件新行的函数
    %
    Function FSOappline(filename, Linecontent)
        Dim fso, f
        Set fso = server.CreateObject("scripting.filesystemobject")
        If Not fso.FileExists(server.mappath(filename)) Then Exit Function
        Set f = fso.OpenTextFile(server.mappath(filename), 8, 1)
        f.Write Chr(13)Chr(10)Linecontent
        f.Close
        Set f = Nothing
    End Function
    %>
    21.读文件最后一行的函数
    %
    Function FSOlastline(filename)
        Dim fso, f, temparray, tempcnt
        Set fso = server.CreateObject("scripting.filesystemobject")
        If Not fso.FileExists(server.mappath(filename)) Then Exit Function
        Set f = fso.OpenTextFile(server.mappath(filename), 1)
        If Not f.AtEndOfStream Then
            tempcnt = f.ReadAll
            f.Close
            Set f = Nothing
            temparray = Split(tempcnt, Chr(13)Chr(10))
            FSOlastline = temparray(UBound(temparray))
        End If
    End Function
    %>
    利用FSO取得BMP,JPG,PNG,GIF文件信息(大小,宽、高等)
    %
    '::: BMP, GIF, JPG and PNG ::: 
    '::: This function gets a specified number of bytes from any :::
    '::: file, starting at the offset (base 1) :::
    '::: :::
    '::: Passed: :::
    '::: flnm => Filespec of file to read :::
    '::: offset => Offset at which to start reading :::
    '::: bytes => How many bytes to read :::
    '::: :::
    ':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

    Function GetBytes(flnm, offset, bytes)
        Dim objFSO
        Dim objFTemp
        Dim objTextStream
        Dim lngSize
        On Error Resume Next
        Set objFSO = CreateObject("Scripting.FileSystemObject") 
        ' First, we get the filesize
        Set objFTemp = objFSO.GetFile(flnm)
        lngSize = objFTemp.Size
        Set objFTemp = Nothing
        fsoForReading = 1
        Set objTextStream = objFSO.OpenTextFile(flnm, fsoForReading)
        If offset > 0 Then
            strBuff = objTextStream.Read(offset - 1)
        End If
        If bytes = -1 Then ' Get All!
            GetBytes = objTextStream.Read(lngSize) 'ReadAll
        Else
            GetBytes = objTextStream.Read(bytes)
        End If
        objTextStream.Close
        Set objTextStream = Nothing
        Set objFSO = Nothing
    End Function 

    ':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    '::: :::
    '::: Functions to convert two bytes to a numeric value (long) :::
    '::: (both little-endian and big-endian) :::
    '::: :::
    ':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

    Function lngConvert(strTemp)
        lngConvert = CLng(Asc(Left(strTemp, 1)) + ((Asc(Right(strTemp, 1)) * 256)))
    End Function


    Function lngConvert2(strTemp)
        lngConvert2 = CLng(Asc(Right(strTemp, 1)) + ((Asc(Left(strTemp, 1)) * 256)))
    End Function 

    ':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    '::: :::
    '::: This function does most of the real work. It will attempt :::
    '::: to read any file, regardless of the extension, and will :::
    '::: identify if it is a graphical image. :::
    '::: :::
    '::: Passed: :::
    '::: flnm => Filespec of file to read :::
    '::: width => width of image :::
    '::: height => height of image :::
    '::: depth => color depth (in number of colors) :::
    '::: strImageType=> type of image (e.g. GIF, BMP, etc.) :::
    '::: :::
    ':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

    Function gfxSpex(flnm, Width, height, depth, strImageType)
        Dim strPNG
        Dim strGIF
        Dim strBMP
        Dim strType
        strType = ""
        strImageType = "(unknown)"
        gfxSpex = False
        strPNG = Chr(137)  Chr(80)  Chr(78)
        strGIF = "GIF"
        strBMP = Chr(66)  Chr(77)
        strType = GetBytes(flnm, 0, 3)
        If strType = strGIF Then ' is GIF
            strImageType = "GIF"
            Width = lngConvert(GetBytes(flnm, 7, 2))
            Height = lngConvert(GetBytes(flnm, 9, 2))
            Depth = 2 ^ ((Asc(GetBytes(flnm, 11, 1)) And 7) + 1)
            gfxSpex = True
        ElseIf Left(strType, 2) = strBMP Then ' is BMP
            strImageType = "BMP"
            Width = lngConvert(GetBytes(flnm, 19, 2))
            Height = lngConvert(GetBytes(flnm, 23, 2))
            Depth = 2 ^ (Asc(GetBytes(flnm, 29, 1)))
            gfxSpex = True
        ElseIf strType = strPNG Then ' Is PNG
            strImageType = "PNG"
            Width = lngConvert2(GetBytes(flnm, 19, 2))
            Height = lngConvert2(GetBytes(flnm, 23, 2))
            Depth = getBytes(flnm, 25, 2)
            Select Case Asc(Right(Depth, 1))
                Case 0
                    Depth = 2 ^ (Asc(Left(Depth, 1)))
                    gfxSpex = True
                Case 2
                    Depth = 2 ^ (Asc(Left(Depth, 1)) * 3)
                    gfxSpex = True
                Case 3
                    Depth = 2 ^ (Asc(Left(Depth, 1))) '8
                    gfxSpex = True
                Case 4
                    Depth = 2 ^ (Asc(Left(Depth, 1)) * 2)
                    gfxSpex = True
                Case 6
                    Depth = 2 ^ (Asc(Left(Depth, 1)) * 4)
                    gfxSpex = True
                Case Else
                    Depth = -1
            End Select 
        Else
            strBuff = GetBytes(flnm, 0, -1) ' Get all bytes from file
            lngSize = Len(strBuff)
            flgFound = 0
            strTarget = Chr(255)  Chr(216)  Chr(255)
            flgFound = InStr(strBuff, strTarget)
            If flgFound = 0 Then
                Exit Function
            End If
            strImageType = "JPG"
            lngPos = flgFound + 2
            ExitLoop = False
            Do While ExitLoop = False And lngPos  lngSize 
                Do While Asc(Mid(strBuff, lngPos, 1)) = 255 And lngPos  lngSize
                    lngPos = lngPos + 1
                Loop
                If Asc(Mid(strBuff, lngPos, 1))  192 or Asc(Mid(strBuff, lngPos, 1)) > 195 Then
                    lngMarkerSize = lngConvert2(Mid(strBuff, lngPos + 1, 2))
                    lngPos = lngPos + lngMarkerSize + 1
                Else
                    ExitLoop = True
                End If
            Loop
            '
            If ExitLoop = False Then
                Width = -1
                Height = -1
                Depth = -1
            Else
                Height = lngConvert2(Mid(strBuff, lngPos + 4, 2))
                Width = lngConvert2(Mid(strBuff, lngPos + 6, 2))
                Depth = 2 ^ (Asc(Mid(strBuff, lngPos + 8, 1)) * 8)
                gfxSpex = True
            End If 
        End If
    End Function 

    ':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    '::: Test Harness :::
    '::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
    ' To test, we'll just try to show all files with a .GIF extension in the root of C:
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objF = objFSO.GetFolder("c:\")
    Set objFC = objF.Files
    response.Write "table border=""0"" cellpadding=""5"">"
    For Each f1 in objFC
        If InStr(UCase(f1.Name), ".GIF") Then
            response.Write "tr>td>"  f1.Name  "/td>td>"  f1.DateCreated  "/td>td>"  f1.Size  "/td>td>"
            If gfxSpex(f1.Path, w, h, c, strType) = True Then
                response.Write w  " x "  h  " "  c  " colors"
            Else
                response.Write " "
            End If
            response.Write "/td>/tr>"
        End If
    Next
    response.Write "/table>"
    Set objFC = Nothing
    Set objF = Nothing
    Set objFSO = Nothing 
    %>
    24.点击返回上页代码:
    form>
    p>input TYPE="button" value="返回上一步" onCLICK="history.back(-1)">/p>
    /form>
    24.点击刷新代码:
    form>
    p>input TYPE="button" value="刷新按钮一" onCLICK="ReloadButton()">/p>
    /form>
    script language="javascript">!--
    function ReloadButton(){location.href="allbutton.htm";}
    // -->/script> 
    24.点击刷新代码2:
    form>
    p>input TYPE="button" value="刷新按钮二" onClick="history.go(0)"> /p>
    /form> 
    form>
    p>input TYPE="button" value="打开一个网站" onCLICK="HomeButton()">/p>
    /form>
    script language="javascript">!--
    function HomeButton(){location.href="http://nettrain.126.com";;;}
    // -->/script> 
    25.弹出警告框代码:
    form>
    p>input TYPE="button" value="弹出警告框" onCLICK="AlertButton()">/p>
    /form>
    script language="javascript">!--
    function AlertButton(){window.alert("要多多光临呀!");}
    // -->/script> 
    26.状态栏信息
    form>
    p>input TYPE="button" value="状态栏信息" onCLICK="StatusButton()">/p>
    /form>
    script language="javascript">!--
    function StatusButton(){window.status="要多多光临呀!";}
    // -->/script> 
    27.背景色变换
    form>
    p>input TYPE="button" value="背景色变换" onClick="BgButton()">/p>
    /form>
    script>function BgButton(){
    if (document.bgColor=='#00ffff')
    {document.bgColor='#ffffff';}
    else{document.bgColor='#00ffff';}
    }
    /script> 
    28.点击打开新窗口
    form>
    p>input TYPE="button" value="打开新窗口" onCLICK="NewWindow()">/p>
    /form>
    script language="javascript">!--
    function NewWindow(){window.open("http://www.mcmx.com";;,"","height=240,width=340,status=no,location=no,toolbar=no,directories=no,menubar=no");}
    // -->/script>/body>
    29.分页代码:
    %''本程序文件名为:Pages.asp%>
    %''包含ADO常量表文件adovbs.inc,可从"\Program Files\Common Files\System\ADO"目录下拷贝%>
    !--#Include File="adovbs.inc"-->
    %''*建立数据库连接,这里是Oracle8.05数据库
    Set conn = Server.CreateObject("ADODB.Connection")
    conn.Open "Provider=msdaora.1;Data Source=YourSrcName;User ID=YourUserID;Password=YourPassword;"  
    Set rs = Server.CreateObject("ADODB.Recordset") ''创建Recordset对象
    rs.CursorLocation = adUseClient ''设定记录集指针属性
    ''*设定一页内的记录总数,可根据需要进行调整
    rs.PageSize = 10  
    ''*设置查询语句
    StrSQL = "Select ID,姓名,住址,电话 from 通讯录 order By ID"
    rs.Open StrSQL, conn, adOpenStatic, adLockReadOnly, adCmdText
    %>
    HTML>
    HEAD>
    title>分页示例/title>
    script language=javascript>
    //点击"[第一页]"时响应:
    function PageFirst()
    {
    document.MyForm.CurrentPage.selectedIndex=0;
    document.MyForm.CurrentPage.onchange();
    }
    //点击"[上一页]"时响应:
    function PagePrior()
    {
    document.MyForm.CurrentPage.selectedIndex--;
    document.MyForm.CurrentPage.onchange();
    }
    //点击"[下一页]"时响应:
    function PageNext()
    {
    document.MyForm.CurrentPage.selectedIndex++;
    document.MyForm.CurrentPage.onchange();
    }
    //点击"[最后一页]"时响应:
    function PageLast()
    {
    document.MyForm.CurrentPage.selectedIndex=document.MyForm.CurrentPage.length-1;
    document.MyForm.CurrentPage.onchange();
    }
    //选择"第?页"时响应:
    function PageCurrent()
    { //Pages.asp是本程序的文件名
    document.MyForm.action='Pages.asp?Page='+(document.MyForm.CurrentPage.selectedIndex+1)
    document.MyForm.submit();
    }
    /Script>
    /HEAD>
    BODY bgcolor="#ffffcc" link="#008000" vlink="#008000" alink="#FF0000""> 
    %
    If rs.EOF Then
        Response.Write("font size=2 color=#000080>[数据库中没有记录!]/font>")
    Else
        ''指定当前页码
        If Request("CurrentPage") = "" Then
            rs.AbsolutePage = 1
        Else
            rs.AbsolutePage = CLng(Request("CurrentPage"))
        End If  
        ''创建表单MyForm,方法为Get
        Response.Write("form method=Get name=MyForm>")
        Response.Write("p align=center>font size=2 color=#008000>")
        ''设置翻页超链接
        If rs.PageCount = 1 Then
            Response.Write("[第一页] [上一页] [下一页] [最后一页] ")
        Else
            If rs.AbsolutePage = 1 Then
                Response.Write("[第一页] [上一页] ")
                Response.Write("[a href=java script:PageNext()>下一页/a>] ")
                Response.Write("[a href=java script:PageLast()>最后一页/a>] ")
            Else
                If rs.AbsolutePage = rs.PageCount Then
                    Response.Write("[a href=java script:PageFirst()>第一页/a>] ")
                    Response.Write("[a href=java script:PagePrior()>上一页/a>] ")
                    Response.Write("[下一页] [最后一页] ")
                Else
                    Response.Write("[a href=java script:PageFirst()>第一页/a>] ")
                    Response.Write("[a href=java script:PagePrior()>上一页/a>] ")
                    Response.Write("[a href=java script:PageNext()>下一页/a>] ")
                    Response.Write("[a href=java script:PageLast()>最后一页/a>] ")
                End If
            End If
        End If 
        ''创建下拉列表框,用于选择浏览页码
        Response.Write("第select size=1 name=CurrentPage onchange=PageCurrent()>")
        For i = 1 To rs.PageCount
            If rs.AbsolutePage = i Then
                Response.Write("option selected>"i"/option>") ''当前页码
            Else
                Response.Write("option>"i"/option>")
            End If
        Next
        Response.Write("/select>页/共"rs.PageCount"页 共"rs.RecordCount"条记录/font>p>")
        Response.Write("/form>") 
        ''创建表格,用于显示
        Response.Write("table align=center cellspacing=1 cellpadding=1 border=1")
        Response.Write(" bordercolor=#99CCFF bordercolordark=#b0e0e6 bordercolorlight=#000066>") 
        Response.Write("tr bgcolor=#ccccff bordercolor=#000066>")  
        Set Columns = rs.Fields  
        ''显示表头
        For i = 0 To Columns.Count -1
            Response.Write("td align=center width=200 height=13>")
            Response.Write("font size=2>b>"Columns(i).Name"/b>/font>/td>")
        Next
        Response.Write("/tr>")
        ''显示内容
        For i = 1 To rs.PageSize
            Response.Write("tr bgcolor=#99ccff bordercolor=#000066>")
            For j = 0 To Columns.Count -1
                Response.Write("td>font size=2>"Columns(j)"/font>/td>")
            Next
            Response.Write("/tr>") 
            rs.movenext
            If rs.EOF Then Exit For
            Next 
            Response.Write("/table>")  
        End If
    %>
    /BODY>
    /HTML>
    %
    Rem - - - 表单提示函数 Being - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    CODE Copy ...

    Function Check_submit(Str, restr)
        If Str = "" Then
            response.Write "script>"
            response.Write "alert(‘'"restr"‘');"
            response.Write "history.go(-1)"
            response.Write "/script>"
            response.End
        Else
            Check_submit = Str
        End If
    End Function


    CODE Copy ...

    Function Alert_submit(Str)
        response.Write "script>"
        response.Write "alert(‘'"Str"‘');"
        ‘'response.Write "location.reload();"
        response.Write "/script>"
    End Function


    CODE Copy ...

    Function localhost_submit(Str, urls)
        response.Write "script>"
        If Str>"" Then
            response.Write "alert(‘'"Str"‘');"
        End If
        response.Write "location=‘'"urls"‘';"
        response.Write "/script>"
    End Function


    Rem - - - 生成自定义位随机数 Being - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    CODE Copy ...

    Function makerndid(byVal maxLen)
        Dim strNewPass
        Dim whatsNext, upper, lower, intCounter
        Randomize
        For intCounter = 1 To maxLen
            whatsNext = Int(2 * Rnd)
            If whatsNext = 0 Then
                upper = 80
                lower = 70
            Else
                upper = 48
                lower = 39
            End If
            strNewPass = strNewPass  Chr(Int((upper - lower + 1) * Rnd + upper))
        Next
        makerndid = strNewPass
    End Function


    Rem - - - 生成四位随机数 Being - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    CODE Copy ...

    Function get_rand()
        Dim num1
        Dim rndnum
        Randomize
        Do While Len(rndnum)4
            num1 = CStr(Chr((57 -48) * Rnd + 48))
            rndnum = rndnumnum1
        Loop
        get_rand = rndnum
    End Function


    Rem - - - 判断数据是否整型 Being - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    CODE Copy ...

    Function IsInteger(para)
        On Error Resume Next
        Dim Str
        Dim l, i
        If IsNull(para) Then
            isInteger = False
            Exit Function
        End If
        Str = CStr(para)
        If Trim(Str) = "" Then
            isInteger = False
            Exit Function
        End If
        l = Len(Str)
        For i = 1 To l
            If Mid(Str, i, 1)>"9" or Mid(Str, i, 1)"0" Then
                isInteger = False
                Exit Function
            End If
        Next
        isInteger = True
        If Err.Number>0 Then Err.Clear
    End Function


    Rem - - - 数据库链接函数 Being - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    CODE Copy ...

    Function OpenCONN
        Set conn = Server.CreateObject("ADODB.Connection")
        connstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="  Server.MapPath(DB_login)
        conn.Open connstr
    End Function


    Rem - - - 中文字符转Uncode代码函数 Being - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    CODE Copy ...

    Function URLEncoding(vstrIn)
        strReturn = ""
        For i = 1 To Len(vstrIn)
            ThisChr = Mid(vStrIn, i, 1)
            If Abs(Asc(ThisChr))  HFF Then
                strReturn = strReturn  ThisChr
            Else
                innerCode = Asc(ThisChr)
                If innerCode  0 Then
                    innerCode = innerCode + H10000
                End If
                Hight8 = (innerCode And HFF00) \&;HFF
                Low8 = innerCode And HFF
                strReturn = strReturn  "%"  Hex(Hight8)  "%"  Hex(Low8)
            End If
        Next
        URLEncoding = strReturn
    End Function


    Rem - - - Html过滤函数 Being - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Function Htmlout(Str)
    CODE Copy ...
    Dim result
    Dim l
    If IsNull(Str) Then
        Htmlout = ""
        Exit Function
    End If
    l = Len(Str)
    result = ""
    Dim i
    For i = 1 To l
        Select Case Mid(Str, i, 1)
            Case ""
                result = result + "lt;"
            Case ">"
                result = result + "gt;"
            Case Chr(13)
                If session("admin_system") = "" Then
                    result = result + "br>"
                End If
            Case Chr(34)
                result = result + "quot;"
            Case ""
                result = result + ""
            Case Chr(32)
                ‘'result = result + "nbsp;"
                If i + 1= l And i -1>0 Then
                    If Mid(Str, i + 1, 1) = Chr(32) or Mid(Str, i + 1, 1) = Chr(9) or Mid(Str, i -1, 1) = Chr(32) or Mid(Str, i -1, 1) = Chr(9) Then
                        result = result + "nbsp;"
                    Else
                        result = result + " "
                    End If
                Else
                    result = result + "nbsp;"
                End If
            Case Chr(9)
                result = result + " "
            Case Else
                result = result + Mid(Str, i, 1)
        End Select
    Next
    Htmlout = result
    End Function


    Rem - - - textarea显示用 - - -
    CODE Copy ...

    Function htmlencode1(fString)
        If fString>"" And Not IsNull(fString) Then
            fString = Replace(fString, "gt;", ">")
            fString = Replace(fString, "lt;", "")
            fString = Replace(fString, "nbsp;", Chr(32))
            fString = Replace(fString, "/p>p>", Chr(10)  Chr(10))
            fString = Replace(fString, "br>", Chr(10))
            htmlencode1 = fString
        Else
            htmlencode1 = ""
        End If
    End Function


    Rem - - - 页面显示用 - - -
    CODE Copy ...

    Function htmlencode2(fString)
        If fString>"" And Not IsNull(fString) Then
            fString = Replace(fString, ">", "gt;")
            fString = Replace(fString, "", "lt;")
            fString = Replace(fString, Chr(32), "nbsp;")
            fString = Replace(fString, Chr(10)  Chr(10), "/p>p>")
            fString = Replace(fString, Chr(10), "br>")
            htmlencode2 = fString
        Else
            htmlencode2 = ""
        End If
    End Function


    Rem - - - 取出指定字符串前后的字符串方法 - - -
    CODE Copy ...

    Function GetStrs(str1, CharFlag, Dflag)
        Dim tmpstr
        If Dflag = 0 Then‘'取左
        pos1 = InStr(str1, charFlag)
        If pos1= 20 Then
            tmpstr = Left(str1, pos1 -1)
        Else
            tmpstr = Mid(str1, pos1 -20, 20)
        End If
    Else ‘'取右
        pos1 = InStr(str1, charFlag) + Len(charFlag)
        If Len(str1) - pos1= 20 Then
            tmpstr = Right(str1, Len(str1) - pos1)
        Else
            tmpstr = Mid(str1, pos1 + 1, 20)
        End If
    End If
    GetStrs = tmpstr
    End Function


    Rem - - - 取出文件名 - - -
    CODE Copy ...

    Function GetFileName(Str)
        pos = InStr(Str, ".")
        If Str>"" Then
            Str = Mid(Str, pos, Len(Str))
        End If
        GetFileName = Str
    End Function


    Rem - - - 取到浏览器版本转换字符串 - - -
    CODE Copy ...

    Function browser()
        Dim text
        text = Request.ServerVariables("HTTP_USER_AGENT")
        If InStr(text, "MSIE 5.5")>0 Then
            browser = "IE 5.5"
        ElseIf InStr(text, "MSIE 6.0")>0 Then
            browser = "IE 6.0"
        ElseIf InStr(text, "MSIE 5.01")>0 Then
            browser = "IE 5.01"
        ElseIf InStr(text, "MSIE 5.0")>0 Then
            browser = "IE 5.00"
        ElseIf InStr(text, "MSIE 4.0")>0 Then
            browser = "IE 4.01"
        Else
            browser = "未知"
        End If
    End Function


    Rem - - - 取到系统脚本转换字符串 - - -
    CODE Copy ...

    Function System(text)
        If InStr(text, "NT 5.1")>0 Then
            System = System + "Windows XP"
        ElseIf InStr(text, "NT 5")>0 Then
            System = System + "Windows 2000"
        ElseIf InStr(text, "NT 4")>0 Then
            System = System + "Windows NT4"
        ElseIf InStr(text, "4.9")>0 Then
            System = System + "Windows ME"
        ElseIf InStr(text, "98")>0 Then
            System = System + "Windows 98"
        ElseIf InStr(text, "95")>0 Then
            System = System + "Windows 95"
        Else
            System = System + "未知"
        End If
    End Function


    Rem - - - = 删除文件 - - -
    CODE Copy ...

    Function delfile(filepath)
        imangepath = Trim(filepath)
        Path = server.MapPath(imangepath)
        Set fs = server.CreateObject("Scripting.FileSystemObject")
        If FS.FileExists(Path) Then
            FS.DeleteFile(Path)
        End If
        Set fs = Nothing
    End Function


    Rem - - - 得到真实的客户端IP - - -
    CODE Copy ...

    Public Function GetClientIP()
        Dim uIpAddr
        ‘' 本函数参考webcn.Net / AspHouse 文献取真实的客户IP>
        uIpAddr = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
        If uIpAddr = "" Then uIpAddr = Request.ServerVariables("REMOTE_ADDR")
        GetClientIP = uIpAddr
        uIpAddr = ""
    End Function


    %>

    数据库查询中的特殊字符的问题
    在进行数据库的查询时,会经常遇到这样的情况:
      例如想在一个用户数据库中查询他的用户名和他的密码,但恰好该用户使用的名字和密码中有特殊的字符,例如单引号,“|”号,双引号或者连字符“”。
      例如他的名字是1"test,密码是A|900
      这时当你执行以下的查询语句时,肯定会报错:
    SQL = "Select * FROM SecurityLevel Where UID=""  UserID  """
    SQL = SQL  " AND PWD=""  Password  """
      因为你的SQL将会是这样:
    Select * FROM SecurityLevel Where UID="1"test" AND PWD="A|900"
      在SQL中,"|"为分割字段用的,显然会出错了。现在提供下面的几个函数 专门用来处理这些头疼的东西:
    Quoted from Unkown:
    %
    Function ReplaceStr (TextIn, ByVal SearchStr As String, _
                         ByVal Replacement As String, _
                         ByVal CompMode As Integer)


         Dim WorkText As String, Pointer As Integer
         If IsNull(TextIn) Then
          ReplaceStr = Null
         Else
          WorkText = TextIn
          Pointer = InStr(1, WorkText, SearchStr, CompMode)
          Do While Pointer > 0
           WorkText = Left(WorkText, Pointer - 1)  Replacement  _
                            Mid(WorkText, Pointer + Len(SearchStr))
           Pointer = InStr(Pointer + Len(Replacement), WorkText, SearchStr, CompMode)
          Loop
          ReplaceStr = WorkText
         End If
    End Function


    Function SQLFixup(TextIn)
         SQLFixup = ReplaceStr(TextIn, """, """", 0)
    End Function


    Function JetSQLFixup(TextIn)
         Dim Temp
         Temp = ReplaceStr(TextIn, """, """", 0)
         JetSQLFixup = ReplaceStr(Temp, "|", ""  Chr(124)  "", 0)
    End Function


    Function FindFirstFixup(TextIn)
         Dim Temp
         Temp = ReplaceStr(TextIn, """, ""  chr(39)  "", 0)
         FindFirstFixup = ReplaceStr(Temp, "|", ""  Chr(124)  "", 0)
    End Function

    Rem 借助RecordSet将二进制流转化成文本
    Quoted from Unkown:

    Function BinaryToString(biData, Size)
        Const adLongVarChar = 201
        Set RS = CreateObject("ADODB.Recordset")
        RS.Fields.Append "mBinary", adLongVarChar, Size
        RS.Open
        RS.AddNew
        RS("mBinary").AppendChunk(biData)
        RS.Update
        BinaryToString = RS("mBinary").Value
        RS.Close
    End Function

    %>
    %
    '定义超全局变量
    Dim URLSelf, URISelf
    URISelf = Request.ServerVariables("SCRIPT_NAME")
    If Request.QueryString = "" Then
        URLSelf = URISelf
    Else
        URLSelf = URISelf  "?"  Request.QueryString
    End If
    Response.CharSet = "GB2312"
    Response.Buffer = True
    Response.Expires = -1


    '===================================================================================
    ' 函数原型:GotoURL (URL)
    '功能:转到指定的URL
    '参数:URL 要跳转的URL
    '返 回 值:无
    '涉及的表:无
    '===================================================================================

    Public Function GotoURL(URL)
        Response.Write "script language=""JavaScript"">location.href='"  URL  "';/script>"
    End Function

    '===================================================================================
    ' 函数原型:MessageBox (Msg)
    '功能:显示消息框
    '参数:要显示的消息
    '返 回 值:无
    '涉及的表:无
    '===================================================================================

    Public Function MessageBox(msg)
        msg = Replace(msg, "\", "\\")
        msg = Replace(msg, "'", "\'")
        msg = Replace(msg, """", "\""")
        msg = Replace(msg, vbCrLf, "\n")
        msg = Replace(msg, vbCr, "")
        msg = Replace(msg, vbLf, "")
        Response.Write "script language=""JavaScript"">alert('"  msg  "');/script>"
    End Function

    '===================================================================================
    ' 函数原型:ReturnValue (bolValue)
    '功能:设置Window对象的返回值:只能是布尔值
    '参数:返回值
    '返 回 值:无
    '涉及的表:无
    '===================================================================================

    Public Function ReturnValue(bolValue)
        If bolValue Then
            Response.Write "script language=""JavaScript"">window.returnValue=true;/script>"
        Else
            Response.Write "script language=""JavaScript"">window.returnValue=false;/script>"
        End If
    End Function

    '===================================================================================
    ' 函数原型:GoBack (URL)
    '功能:后退
    '参数:无
    '返 回 值:无
    '涉及的表:无
    '===================================================================================

    Public Function GoBack()
        Response.Write "script language=""JavaScript"">history.go(-1);/script>"
    End Function

    '===================================================================================
    ' 函数原型:CloseWindow ()
    '功能:关闭窗口
    '参数:无
    '返 回 值:无
    '涉及的表:无
    '===================================================================================

    Public Function CloseWindow()
        Response.Write "script language=""JavaScript"">window.opener=null;window.close();/script>"
    End Function

    '===================================================================================
    ' 函数原型:RefreshParent ()
    '功能:刷新父框架
    '参数:无
    '返 回 值:无
    '涉及的表:无
    '===================================================================================

    Public Function RefreshParent()
        Response.Write "script language=""JavaScript"">if(parent!=self) parent.location.reload();/script>"
    End Function

    '===================================================================================
    ' 函数原型:RefreshTop ()
    '功能:刷新顶级框架
    '参数:无
    '返 回 值:无
    '涉及的表:无
    '===================================================================================

    Public Function RefreshTop()
        Response.Write "script language=""JavaScript"">if(top!=self) top.location.reload();/script>"
    End Function

    '===================================================================================
    ' 函数原型:GenPassword (intLen,PassMask)
    '功能:生成随机密码
    '参数:intLen新密码长度
    'PassMask生成密码的掩码默认为空
    '返 回 值:无
    '涉及的表:无
    '===================================================================================

    Public Function GenPassword(intLen, PassMask)
        Dim iCnt, PosTemp
        Randomize
        If PassMask = "" Then
            PassMask = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz"
        End If
        For iCnt = 1 To intLen
            PosTemp = Fix(Rnd(1) * (Len(PassMask))) + 1
            GenPassword = GenPassword  Mid(PassMask, PosTemp, 1)
        Next
    End Function

    '===================================================================================
    ' 函数原型:GenSerialString ()
    '功能:生成序列号
    '参数:无
    '返 回 值:无
    '涉及的表:无
    '===================================================================================

    Public Function GenSerialString()
        GenSerialString = Year(Now())
        If Month(Now())10 Then
            GenSerialString = GenSerialString  "0"
        End If
        GenSerialString = GenSerialString  Month(Now())
        If Day(Now())10 Then
            GenSerialString = GenSerialString  "0"
        End If
        GenSerialString = GenSerialString  Day(Now())
        If Hour(Now())10 Then
            GenSerialString = GenSerialString  "0"
        End If
        GenSerialString = GenSerialString  Hour(Now())
        If Minute(Now())10 Then
            GenSerialString = GenSerialString  "0"
        End If
        GenSerialString = GenSerialString  Minute(Now())
        If Second(Now())10 Then
            GenSerialString = GenSerialString  "0"
        End If
        GenSerialString = GenSerialString  Second(Now())
        GenSerialString = GenSerialString  GenPassword(6, "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ")
    End Function


    '===================================================================================
    ' 函数原型:ChangePage(URLTemplete,PageIndex)
    '功能:根据URL模板生成新的页面URL
    '参数:URLTempleteURL模板
    ' PageIndex新的页码
    '返 回 值:生成的URL
    '涉及的表:无
    '===================================================================================

    Public Function ChangePage(URLTemplete, PageIndex)
        ChangePage = SetQueryString(URLTemplete, "PAGE", PageIndex)
    End Function

    '===================================================================================
    ' 函数原型:BuildPath(sPath)
    '功能:根据指定的路径创建目录
    '参数:sPathURL模板
    '返 回 值:如果成功,返回空字符串,否则返回错误信息和错误位置
    '涉及的表:无
    '===================================================================================

    Public Function BuildPath (sPath)
        Dim iCnt
        Dim Path
        Dim BasePath
        Path = Split(sPath, "/")
        If Left(sPath, 1) = "/" or Left(sPath, 1) = "\" Then
            BasePath = Server.MapPath("/")
        Else
            BasePath = Server.MapPath(".")
        End If
        Dim cPath, oFso
        cPath = BasePath
        BuildPath = ""
        Set oFso = Server.CreateObject("Scripting.FileSystemObject")
        For iCnt = LBound(Path) To UBound(Path)
            If Trim(Path(iCnt))>"" Then
                cPath = cPath  "\"  Trim(Path(iCnt))
                If Not oFso.FolderExists(cPath) Then
                    On Error Resume Next
                    oFso.CreateFolder cPath
                    If Err.Number>0 Then
                        BuildPath = Err.Description  "["  cPath  "]"
                        Exit For
                    End If
                    On Error GoTo 0
                End If
            End If
        Next
        Set oFso = Nothing
    End Function

    '===================================================================================
    ' 函数原型:GetUserAgentInfo(ByRef vSoft,ByRef vOs)
    '功能:获取客户端操作系统和浏览器信息
    '参数:vSoft浏览器信息
    'vOs操作系统信息
    '返 回 值:无
    '涉及的表:无
    '===================================================================================

    Public Function GetUserAgentInfo(ByRef vSoft, ByRef vOs)
        Dim theSoft
        theSoft = Request.ServerVariables("HTTP_USER_AGENT")
        ' 浏览器
        If InStr(theSoft, "NetCaptor") Then
            vSoft = "NetCaptor"
        ElseIf InStr(theSoft, "MSIE 6") Then
            vSoft = "MSIE 6.0"
        ElseIf InStr(theSoft, "MSIE 5.5+") Then
            vSoft = "MSIE 5.5"
        ElseIf InStr(theSoft, "MSIE 5") Then
            vSoft = "MSIE 5.0"
        ElseIf InStr(theSoft, "MSIE 4") Then
            vSoft = "MSIE 4.0"
        ElseIf InStr(theSoft, "Netscape") Then
            vSoft = "Netscape"
        ElseIf InStr(theSoft, "Opera") Then
            vSoft = "Opera"
        Else
            vSoft = "Other"
        End If
        ' 操作系统
        If InStr(theSoft, "Windows NT 5.0") Then
            vOs = "Windows 2000"
        ElseIf InStr(theSoft, "Windows NT 5.1") Then
            vOs = "Windows XP"
        ElseIf InStr(theSoft, "Windows NT 5.2") Then
            vOs = "Windows 2003"
        ElseIf InStr(theSoft, "Windows NT") Then
            vOs = "Windows NT"
        ElseIf InStr(theSoft, "Windows 9") Then
            vOs = "Windows 9x"
        ElseIf InStr(theSoft, "unix") Then
            vOs = "Unix"
        ElseIf InStr(theSoft, "linux") Then
            vOs = "Linux"
        ElseIf InStr(theSoft, "SunOS") Then
            vOs = "SunOS"
        ElseIf InStr(theSoft, "BSD") Then
            vOs = "BSD"
        ElseIf InStr(theSoft, "Mac") Then
            vOs = "Mac"
        Else
            vOs = "Other"
        End If
    End Function

    '===================================================================================
    ' 函数原型:GetRegexpObject()
    '功能:获得一个正则表达式对象
    '参数:无
    '返 回 值:正则表达式对象
    '涉及的表:无
    '===================================================================================

    Public Function GetRegExpObject(sPattern)
        Dim r
        Set r = New RegExp
        r.Global = True
        r.IgnoreCase = True
        r.MultiLine = True
        r.Pattern = sPattern
        Set GetRegexpObject = r
        Set r = Nothing
    End Function

    '===================================================================================
    ' 函数原型:RegExpTest(pattern,string)
    '功能:正则表达式检测
    '参数:pattern模式字符串
    'string待检查的字符串
    '返 回 值:是否匹配
    '涉及的表:无
    '===================================================================================

    Public Function RegExpTest(p, s)
        Dim r
        Set r = GetRegExpObject(p)
        RegExpTest = r.Test(s)
        Set r = Nothing
    End Function

    '===================================================================================

    ' 函数原型:RegExpReplace(sSource,sPattern,sRep)
    '功能:正则表达式替换
    '参数:sSource要替换的源字符串
    'sPattern模式字符串
    'sRep要替换的目标字符串
    '返 回 值:替换后的字符串
    '涉及的表:无
    '===================================================================================

    Public Function RegExpReplace(sSource, sPattern, sRep)
        Dim r
        Set r = GetRegExpTest(sPattern)
        RegExpReplace = r.Replace(sSource, sRep)
        Set r = Nothing
    End Function

    '===================================================================================
    ' 函数原型:CreateXMLParser()
    '功能:创建一个尽可能高版本的XMLDOM
    '参数:无
    '返 回 值:IDOMDocument对象
    '涉及的表:无
    '===================================================================================

    Public Function CreateXMLParser()
        On Error Resume Next
        Set CreateXMLParser = Server.CreateObject("MSXML2.DOMDocument.4.0")
        If Err.Number>0 Then
            Err.Clear
            Set CreateXMLParser = Server.CreateObject("MSXML2.DOMDocument.3.0")
            If Err.Number>0 Then
                Err.Clear
                Set CreateXMLParser = Server.CreateObject("MSXML2.DOMDocument.2.6")
                If Err.Number>0 Then
                    Err.Clear
                    Set CreateXMLParser = Server.CreateObject("MSXML2.DOMDocument")
                    If Err.Number>0 Then
                        Err.Clear
                        Set CreateXMLParser = Server.CreateObject("Microsoft.XMLDOM")
                        If Err.Number>0 Then
                            Err.Clear
                            Set CreateXMLParser = Nothing
                        Else
                            Exit Function
                        End If
                    Else
                        Exit Function
                    End If
                Else
                    Exit Function
                End If
            Else
                Exit Function
            End If
        Else
            Exit Function
        End If
        On Error GoTo 0
    End Function


    '===================================================================================
    ' 函数原型:CreateHTTPPoster()
    '功能:创建一个尽可能高版本的XMLHTTP
    '参数:ServerOrClient创建ServerXMLHTTP还是XMLHTTP
    '返 回 值:IXMLHTTP对象
    '涉及的表:无
    '===================================================================================

    Public Function CreateHTTPPoster(soc)
        Dim s
        If soc Then
            s = "ServerXMLHTTP"
        Else
            s = "XMLHTTP"
        End If
        On Error Resume Next
        Set CreateHTTPPoster = Server.CreateObject("MSXML2."  s  ".4.0")
        If Err.Number>0 Then
            Err.Clear
            Set CreateHTTPPoster = Server.CreateObject("MSXML2."  s  ".3.0")
            If Err.Number>0 Then
                Err.Clear
                Set CreateHTTPPoster = Server.CreateObject("MSXML2."  s)
                If Err.Number>0 Then
                    Set CreateHTTPPoster = Nothing
                Else
                    Exit Function
                End If
            Else
                Exit Function
            End If
        Else
            Exit Function
        End If
        On Error GoTo 0
    End Function

    '===================================================================================
    ' 函数原型:XMLThrowError (errCode,errReason)
    '功能:抛出一个XML错误消息
    '参数:errCode错误编码
    'errReason错误原因
    '返 回 值:无
    '涉及的表:无
    '===================================================================================

    Public Sub XMLThrowError (errCode, errReason)
        Response.Clear
        Response.ContentType = "text/xml"
        Response.Write"?xml version=""1.0"" encoding=""gb2312"" standalone=""yes"" ?>"  vbCrLf  _
            "ERROR CODE="""  errCode  """ REASON="""  errReason  """ />"  vbCrLf
        Response.Flush
        Response.End
    End Sub

    '===================================================================================
    ' 函数原型:GetXMLNodeValue(ByRef xmlDom,sFilter,sDefValue)
    '功能:从一个XML文档中查找指定节点的值
    '参数:xmlDomXML文档
    'sFilterXPATH定位字符串
    'sDefValue默认值
    '返 回 值:无
    '涉及的表:无
    '===================================================================================

    Public Function GetXMLNodeValue(ByRef xmlDom, sFilter, sDefValue)
        Dim oNode
        Set oNode = xmlDom.selectSingleNode(sFilter)
        If TypeName(oNode) = "Nothing" or TypeName(oNode) = "Null" or TypeName(oNode) = "Empty" Then
            GetXMLNodeValue = sDefValue
            Set oNode = Nothing
        Else
            GetXMLNodeValue = Trim(oNode.Text)
            Set oNode = Nothing
        End If
    End Function

    '===================================================================================
    ' 函数原型:GetXMLNodeAttribute(ByRef xmlDom,sFilter,sName,sDefValue)
    '功能:从一个XML文档中查找指定节点的指定属性
    '参数:xmlDomXML文档
    'sFilterXPATH定位字符串
    'sName要查询的属性名称
    'sDefValue默认值
    '返 回 值:无
    '涉及的表:无
    '===================================================================================

    Public Function GetXMLNodeAttribute(ByRef xmlDom, sFilter, sName, sDefValue)
        Dim oNode
        Set oNode = xmlDom.selectSingleNode(sFilter)
        If TypeName(oNode) = "Nothing" or TypeName(oNode) = "Null" or TypeName(oNode) = "Empty" Then
            GetXMLNodeAttribute = sDefValue
            Set oNode = Nothing
        Else
            Dim pTemp
            Set pTemp = oNode.getAttribute(sName)
            If TypeName(pTemp) = "Nothing" or TypeName(pTemp) = "Null" or TypeName(pTemp) = "Empty" Then
                GetXMLNodeAttribute = sDefValue
                Set oNode = Nothing
                Set pTemp = Nothing
            Else
                GetXMLNodeAttribute = Trim(pTemp.Value)
                Set oNode = Nothing
                Set pTemp = Nothing
            End If
        End If
    End Function

    '===================================================================================
    ' 函数原型:GetQueryStringNumber (FieldName,defValue)
    '功能:从QueryString获取一个整数
    '参数:FieldName参数名
    'defValue默认值
    '返 回 值:无
    '涉及的表:无
    '===================================================================================

    Public Function GetQueryStringNumber (FieldName, defValue)
        Dim r
        r = Request.QueryString(FieldName)
        If r = "" Then
            GetQueryStringNumber = defValue
            Exit Function
        Else
            If Not IsNumeric(r) Then
                GetQueryStringNumber = defValue
                Exit Function
            Else
                On Error Resume Next
                r = CDbl(r)
                If Err.Number>0 Then
                    Err.Clear
                    GetQueryStringNumber = defValue
                    Exit Function
                Else
                    GetQueryStringNumber = r
                End If
                On Error GoTo 0
            End If
        End If
    End Function

    '===================================================================================
    ' 函数原型:IIf (testExpr,value1,value2)
    '功能:相当于C/C++里面的 ?: 运算符
    '参数:testExprBoolean表达式
    'value1testExpr=True 时的取值
    'value2testExpr=False 时的取值
    '返 回 值:如果testExpr为True返回value1否则返回value2
    '涉及的表:无
    '说明:VBScript里没有Iif函数
    '===================================================================================

    Public Function IIf(testExpr, value1, value2)
        If testExpr = True Then
            IIf = value1
        Else
            IIf = value2
        End If
    End Function


    '===================================================================================
    ' 函数原型:URLEncoding (v,f)
    '功能:URL编码函数
    '参数:v中英文混合字符串
    'f是否对ASCII字符编码
    '返 回 值:编码后的ASC字符串
    '涉及的表:无
    '===================================================================================

    Public Function URLEncoding(v, f)
        Dim s, t, i, j, h, l, x
        s = ""
        x = Len(v)
        For i = 1 To x
            t = Mid(v, i, 1)
            j = Asc(t)
            If j> 0 Then
                If f Then
                    s = s  "%"  Right("00"  Hex(Asc(t)), 2)
                Else
                    s = s  t
                End If
            Else
                If j  0 Then j = j + H10000
                h = (j And HFF00) \&;HFF
                l = j And HFF
                s = s  "%"  Hex(h)  "%"  Hex(l)
            End If
        Next
        URLEncoding = s
    End Function

    '===================================================================================
    ' 函数原型:URLDecoding (sIn)
    '功能:URL解码码函数
    '参数:vURL编码的字符串
    '返 回 值:解码后的字符串
    '涉及的表:无
    '===================================================================================

    Public Function URLDecoding(Sin)
        Dim s, i, l, c, t, n
        s = ""
        l = Len(Sin)
        For i = 1 To l
            c = Mid(Sin, i, 1)
            If c>"%" Then
                s = s  c
            Else
                c = Mid(Sin, i + 1, 2)
                i = i + 2
                t = CInt("H"  c)
                If tH80 Then
                    s = s  Chr(t)
                Else
                    c = Mid(Sin, i + 1, 3)
                    If Left(c, 1)>"%" Then
                        URLDecoding = s
                        Exit Function
                    Else
                        c = Right(c, 2)
                        n = CInt("H"  c)
                        t = t * 256 + n -65536
                        s = s  Chr(t)
                        i = i + 3
                    End If
                End If
            End If
        Next
        URLDecoding = s
    End Function

    '===================================================================================
    ' 函数原型:Bytes2BSTR (v)
    '功能:UTF-8编码转换到正常的GB2312
    '参数:vUTF-8编码字节流
    '返 回 值:解码后的字符串
    '涉及的表:无
    '===================================================================================

    Public Function Bytes2BSTR(v)
        Dim r, i, t, n
        r = ""
        For i = 1 To LenB(v)
            t = AscB(MidB(v, i, 1))
            If t  H80 Then
                r = r  Chr(t)
            Else
                n = AscB(MidB(v, i + 1, 1))
                r = r  Chr(CLng(t) * H100 + CInt(n))
                i = i + 1
            End If
        Next
        Bytes2BSTR = r
    End Function
    %>

    上一篇:一个可以自动创建多级目录的函数
    下一篇:ASP常用函数:HTMLDecode
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    ASP常用函数收藏乱七八糟未整理版 ASP,常用,函数,收藏,乱七八糟,