反SPAM新思路—换Z-BLOG的验证码!

2019-01-13 19:40:43王振洲

    ' 随机产生字符
    Dim vCode(), vCodes
    ReDim vCode(codeLen-1)
    vCodes = GetVerifyNumber
    For i = 0 To 4
        vCode(i) = cint(mid(vCodes,i+1,1))
        vCode(i) = pcd_doubter(vNumberData(vCode(i)),UnitWidth,UnitHeight,DotsLimit,tryCount,dbtTimes)
    Next

    ' 随机产生字符
    'Dim vCodes
    'ReDim vCode(codeLen-1)
    'For i = 0 To codeLen-1
    '  vCode(i) = Int(Rnd * cAmount)
    '  vCodes = vCodes & Mid(cCode, vCode(i) + 1, 1)
    '  vCode(i) = pcd_doubter(vNumberData(vCode(i)),UnitWidth,UnitHeight,DotsLimit,tryCount,dbtTimes)
    'Next

    'Session(pSN) = vCodes  '记录入Session

    ' 输出图像文件头
    Response.BinaryWrite ChrB(66) & ChrB(77) & Num2ChrB(54+ImgWidth*ImgHeight*3,4) & ChrB(0) & ChrB(0) & ChrB(0) & ChrB(0) & ChrB(54) & ChrB(0) & ChrB(0) & ChrB(0) & ChrB(40) & ChrB(0) & ChrB(0) & ChrB(0) & Num2ChrB(ImgWidth,4) & Num2ChrB(ImgHeight,4) & ChrB(1) & ChrB(0)

    ' 输出图像信息头
    Response.BinaryWrite ChrB(24) & ChrB(0) & ChrB(0) & ChrB(0) & ChrB(0) & ChrB(0) & Num2ChrB(ImgWidth*ImgHeight*3,4) & ChrB(18) & ChrB(11) & ChrB(0) & ChrB(0) & ChrB(18) & ChrB(11) & ChrB(0) & ChrB(0) & ChrB(0) & ChrB(0) & ChrB(0) & ChrB(0) & ChrB(0) & ChrB(0) & ChrB(0) & ChrB(0)

    ' 生成干扰线
    ReDim noiseLine(1,-1)
    Call makeNoise(noiseLine,ImgWidth,ImgHeight)
    Call makeNoise(noiseLine,ImgWidth,ImgHeight)
    ' 如果想多画几条直接复制就可以
    ' Call makeNoise(noiseLine,ImgWidth,ImgHeight)

    ' 位置随机
    ActUnitWidth = Int(ImgWidth / codeLen)
    ImgYuWidth = ImgWidth - ActUnitWidth * codeLen
    ReDim posAry(1,codeLen-1)
    posAry(0,0) = Int((Rnd)*(posX+(ActUnitWidth-UnitWidth)/2))
    posAry(1,0) = Int((ImgHeight-UnitHeight)/2+(1-2*Rnd)*posY)
    For i=1 To codeLen-2
        posAry(0,i) = Int((1-2*Rnd)*(posX+(ActUnitWidth-UnitWidth)/2))
        posAry(1,i) = Int((ImgHeight-UnitHeight)/2+(1-2*Rnd)*posY)
    Next
    If codeLen > 1 Then
        posAry(0,codeLen-1) = Int((Rnd)*(posX+(ActUnitWidth-UnitWidth)/2))
        posAry(1,codeLen-1) = Int((ImgHeight-UnitHeight)/2+(-Rnd)*posY)
    End If