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

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    在Z-BLOG可用的新版ASP的GIF验证码[V70404]
    复制下面代码,存为c_validcode.asp上传到function下就可以了
    复制代码 代码如下:

    %@ CODEPAGE=65001 %>
    %
    '///////////////////////////////////////////////////////////////////////////////
    '//              Z-Blog
    '// 作    者:    朱煊(zx.asd),sipo
    '// 版权所有:    RainbowSoft Studio
    '// 技术支持:    rainbowsoft@163.com
    '// 单元名称:    c_validcode.asp
    '// 开始时间:    2007-4-4
    '// 最后修改:    2007-4-4
    '// 备    注:    www.dc9.cn
    '///////////////////////////////////////////////////////////////////////////////
    %>
    % Option Explicit %>
    % On Error Resume Next %>
    !-- #include file="../c_option.asp" -->
    !-- #include file="../function/c_function.asp" -->
    %
    '.VerifyCode GetVerifyNumber, False
    Class Com_GifCode_Class
    Public Noisy, Count, Width, Height, Angle, Offset, Border
    Private Graph(), Margin(3)
    Private Sub Class_Initialize()
     Randomize 
     Noisy = 7 ' 干扰点出现的概率
     Count = 5  ' 字符数量
     Width = 60 ' 图片宽度
     Height = 20 ' 图片高度
     Angle = 3  ' 角度随机变化量
     Offset = 10 ' 偏移随机变化量
     Border = 2 ' 边框大小
    End Sub 
    Public Function Create(str)
     Dim i
     Dim vIndex
     ReDim Graph(Width-1, Height-1)
     For i = 0 To Count - 1
      vIndex=CInt(Mid(str,i+1,1)-1)
      SetDraw vIndex, i
     Next
    End Function

    Sub SetDot(pX, pY)
     If pX * (Width-pX-1) >= 0 And pY * (Height-pY-1) >= 0 Then
      Graph(pX, pY) = 1
     End If
    End Sub

    Public Sub SetDraw(pIndex, pNumber)
     ' 字符数据字典
     If pIndex=-1 Then pIndex=9
     Dim DotData(9)
     DotData(0) = Array(30, 15, 50, 1, 50, 100)
     DotData(1) = Array(1 ,34 ,30 ,1 ,71, 1, 100, 34, 1, 100, 93, 100, 100, 86)
     DotData(2) = Array(1, 1, 100, 1, 42, 42, 100, 70, 50, 100, 1, 70)
     DotData(3) = Array(100, 73, 6, 73, 75, 6, 75, 100)
     DotData(4) = Array(100, 1, 1, 1, 1, 50, 50, 35, 100, 55, 100, 80, 50, 100, 1, 95)
     DotData(5) = Array(100, 20, 70, 1, 20, 1, 1, 30, 1, 80, 30, 100, 70, 100, 100, 80, 100, 60, 70, 50, 30, 50, 1, 60)
     DotData(6) = Array(6, 26, 6, 6, 100, 6, 53, 100)
     DotData(7) = Array(100, 30, 100, 20, 70, 1, 30, 1, 1, 20, 1, 30, 100, 70, 100, 80, 70, 100, 30, 100, 1, 80, 1, 70, 100, 30)
     DotData(8) = Array(1, 80, 30, 100, 80, 100, 100, 70, 100, 20, 70, 1, 30, 1, 1, 20, 1, 40, 30, 50, 70, 50, 100, 40)
     DotData(9) = Array(100, 20, 70, 1, 20, 1, 1, 30, 1, 80, 30, 100, 70, 100, 100, 80, 100, 60, 90, 20, 80,3)


     Dim vExtent : vExtent = Width / Count
     Margin(0) = Border + vExtent * (Rnd * Offset) / 100 + Margin(1)
     Margin(1) = vExtent * (pNumber + 1) - Border - vExtent * (Rnd * Offset) / 100
     Margin(2) = Border + Height * (Rnd * Offset) / 100
     Margin(3) = Height - Border - Height * (Rnd * Offset) / 100

     Dim vStartX, vEndX, vStartY, vEndY
     Dim vWidth, vHeight, vDX, vDY, vDeltaT
     Dim vAngle, vLength

     vWidth =Int(Margin(1) - Margin(0))
     vHeight =Int(Margin(3) - Margin(2))
     vStartX = Int((DotData(pIndex)(0)-1) * vWidth / 100)
     vStartY = Int((DotData(pIndex)(1)-1) * vHeight / 100)

     Dim i, j
     For i = 1 To UBound(DotData(pIndex), 1)/2
      If DotData(pIndex)(2*i-2) > 0 And DotData(pIndex)(2*i) > 0 Then
       vEndX = (DotData(pIndex)(2*i)-1) * vWidth / 100
       vEndY = (DotData(pIndex)(2*i+1)-1) * vHeight / 100
       vDX = vEndX - vStartX
       vDY = vEndY - vStartY
       If vDX = 0 Then
        vAngle = Sgn(vDY) * 3.14/2
       Else
        vAngle = Atn(vDY / vDX)
       End If
       If Sin(vAngle) = 0 Then
        vLength = vDX
       Else
        vLength = vDY / Sin(vAngle)
       End If
       vAngle = vAngle + (Rnd - 0.5) * 2 * Angle * 3.14 * 2 / 100
       vDX = Int(Cos(vAngle) * vLength)
       vDY = Int(Sin(vAngle) * vLength)
       If Abs(vDX) > Abs(vDY) Then vDeltaT = Abs(vDX) Else vDeltaT = Abs(vDY)
       For j = 1 To vDeltaT
        SetDot Margin(0) + vStartX + j * vDX / vDeltaT, Margin(2) + vStartY + j * vDY / vDeltaT
       Next
       vStartX = vStartX + vDX
       vStartY = vStartY + vDY
      End If
     Next
    End Sub

    Public Sub Output()
     Response.Expires = -9999
     Response.AddHeader "pragma", "no-cache"
     Response.AddHeader "cache-ctrol", "no-cache"
     Response.ContentType = "image/gif"
     Response.BinaryWrite ChrB(Asc("G"))  ChrB(Asc("I"))  ChrB(Asc("F"))
     Response.BinaryWrite ChrB(Asc("8"))  ChrB(Asc("9"))  ChrB(Asc("a"))
     Response.BinaryWrite ChrB(Width Mod 256)  ChrB((Width \&;256) Mod 256)
     Response.BinaryWrite ChrB(Height Mod 256)  ChrB((Height \&;256) Mod 256)
     Response.BinaryWrite ChrB(128)  ChrB(0)  ChrB(0)
     Response.BinaryWrite ChrB(250)  ChrB(250)  ChrB(250)
     Response.BinaryWrite ChrB(0)  ChrB(0)  ChrB(0)
     Response.BinaryWrite ChrB(Asc(","))
     Response.BinaryWrite ChrB(0)  ChrB(0)  ChrB(0)  ChrB(0)
     Response.BinaryWrite ChrB(Width Mod 256)  ChrB((Width \&;256) Mod 256)
     Response.BinaryWrite ChrB(Height Mod 256)  ChrB((Height \&;256) Mod 256)
     Response.BinaryWrite ChrB(0)  ChrB(7)  ChrB(255)

     Dim x, y, i : i = 0
     For y = 0 To Height - 1
      For x = 0 To Width - 1
       If Rnd  Noisy / 100 Then
        Response.BinaryWrite ChrB(1-Graph(x, y))
       ElseIf x * (x-Width) = 0 Or y * (y-Height) = 0 Then
        Response.BinaryWrite ChrB(Graph(x, y))
       ElseIf Graph(x-1, y) = 1 Or Graph(x, y) Or Graph(x, y-1) = 1 Then
        Response.BinaryWrite ChrB(1)
       Else
        Response.BinaryWrite ChrB(0)
       End If

       If (y * Width + x + 1) Mod 126 = 0 Then
        Response.BinaryWrite ChrB(128)
        i = i + 1
       End If
       If (y * Width + x + i + 1) Mod 255 = 0 Then
        If (Width*Height - y * Width - x - 1) > 255 Then
         Response.BinaryWrite ChrB(255)
        Else
         Response.BinaryWrite ChrB(Width * Height Mod 255)
        End If
       End If
      Next
     Next
     Response.BinaryWrite ChrB(128)  ChrB(0)  ChrB(129)  ChrB(0)  ChrB(59)
    End Sub
    End Class
    Dim mCode
    Dim code
    Set mCode = New Com_GifCode_Class
    mCode.Create(GetVerifyNumber)
    mCode.Output()
    Set mCode = Nothing
    %>

    由于原验证码过于简单,导致zblogger们饱受垃圾评论与引用之苦,下一版本将集成该验证码。
    该验证码是根据网络上流传的一个源代码修改而来。
    另,近期新的反垃圾评论与引用工具将与大家见面。
    您可能感兴趣的文章:
    • z-blog SyntaxHighlighter 长代码无法换行解决办法(基于jquery)
    • z-blog SyntaxHighlighter 长代码无法换行解决办法(jquery)
    • 反SPAM新思路—换Z-BLOG的验证码!
    • 在Z-Blog中运行代码[html][/html](纯JS版)
    • Z-Blog中用到的js代码
    • JS扩展Z-Blog图片验证码的单击自动刷新与评论内容自动保存
    • Z-Blog常用标签大全(官方版)
    上一篇:反SPAM新思路—换Z-BLOG的验证码!
    下一篇:IIS访问ASP页面时报错The requested resource is in use.的解决办法
  • 相关文章
  • 

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

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

    在Z-BLOG可用的新版ASP的GIF验证码[V70404] 在,Z-BLOG,可,用的,新版,ASP,