百度空间 | 百度首页 
               
 
查看文章
 
asp生成验证码bmp
2006/09/17 11:24
<%Call Com_CreatValidCode("ValidCode")

Sub Com_CreatValidCode(pSN)

     'Author: Layen
     'QQ: 84815733
     'E-mail: supp...@ssaw.net

     ' 禁止缓存
     Response.Expires = -9999
     Response.AddHeader "Pragma","no-cache"
     Response.AddHeader "cache-ctrol","no-cache"
     Response.ContentType = "Image/BMP"

     Randomize

     Dim i, ii, iii

     Const cOdds = 5 ' 杂点出现的机率
     Const cAmount = 36 ' 文字数量
     Const cCode = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"

     ' 颜色的数据(字符,背景)
     Dim vColorData(1)
     vColorData(0) = ChrB(0) & ChrB(0) & ChrB(0)  '
蓝0,绿0,红0(黑色)
     vColorData(1) = ChrB(250) & ChrB(236) & ChrB(211) '
蓝250,绿236,红

211(浅蓝色)

     ' 随机产生字符
     Dim vCode(4), vCodes
     For i = 0 To 3
           vCode(i) = Int(Rnd * cAmount)
           vCodes = vCodes & Mid(cCode, vCode(i) + 1, 1)
     Next

     Session(pSN) = vCodes  '记录入Session

     ' 字符的数据
     Dim vNumberData(35)
     vNumberData(0) =

"111000011111011110111101111011110100101111010010111101001011110100101111

0111101111011110111110000111"
     vNumberData(1) =

"111101111111000111111111011111111101111111110111111111011111111101111111

1101111111110111111100000111"
     vNumberData(2) =

"111000011111011110111101111011111111101111111101111111101111111101111111

1011111111011110111100000011"
     vNumberData(3) =

"111000011111011110111101111011111111011111110011111111110111111111101111

0111101111011110111110000111"
     vNumberData(4) =

"111110111111111011111111001111111010111111011011111101101111110000001111

1110111111111011111111000011"
     vNumberData(5) =

"110000001111011111111101111111110100011111001110111111111011111111101111

0111101111011110111110000111"
     vNumberData(6) =

"111100011111101110111101111111110111111111010001111100111011110111101111

0111101111011110111110000111"
     vNumberData(7) =

"110000001111011101111101110111111110111111111011111111011111111101111111

1101111111110111111111011111"
     vNumberData(8) =

"111000011111011110111101111011110111101111100001111110110111110111101111

0111101111011110111110000111"
     vNumberData(9) =

"111000111111011101111101111011110111101111011100111110001011111111101111

1111101111011101111110001111"
     vNumberData(10) =

"111101111111110111111110101111111010111111101011111110101111110000011111

0111011111011101111000100011"
     vNumberData(11) =

"100000011111011110111101111011110111011111000011111101110111110111101111

0111101111011110111000000111"
     vNumberData(12) =

"111000001111011110111011111011101111111110111111111011111111101111111110

1111101111011101111110001111"
     vNumberData(13) =

"100000111111011101111101111011110111101111011110111101111011110111101111

0111101111011101111000001111"
     vNumberData(14) =

"100000011111011110111101101111110110111111000011111101101111110110111111

0111111111011110111000000111"
     vNumberData(15) =

"100000011111011110111101101111110110111111000011111101101111110110111111

0111111111011111111000111111"
     vNumberData(16) =

"111000011111011101111011110111101111111110111111111011111111101110001110

1111011111011101111110001111"
     vNumberData(17) =

"100010001111011101111101110111110111011111000001111101110111110111011111

0111011111011101111000100011"
     vNumberData(18) =

"110000011111110111111111011111111101111111110111111111011111111101111111

1101111111110111111100000111"
     vNumberData(19) =

"111000001111111011111111101111111110111111111011111111101111111110111111

1110111110111011111000011111"
     vNumberData(20) =

"100010001111011101111101101111110101111111000111111101011111110110111111

0110111111011101111000100011"
     vNumberData(21) =

"100011111111011111111101111111110111111111011111111101111111110111111111

0111111111011110111000000011"
     vNumberData(22) =

"100010001111001001111100100111110010011111010101111101010111110101011111

0101011111010101111001010011"
     vNumberData(23) =

"100010001111001101111100110111110101011111010101111101010111110110011111

0110011111011001111000110111"
     vNumberData(24) =

"111000111111011101111011111011101111101110111110111011111011101111101110

1111101111011101111110001111"
     vNumberData(25) =

"100000011111011110111101111011110111101111000001111101111111110111111111

0111111111011111111000111111"
     vNumberData(26) =

"111000111111011101111011111011101111101110111110111011111011101111101110

1001101111011001111110001011"
     vNumberData(27) =

"100000111111011101111101110111110111011111000011111101011111110110111111

0110111111011101111000110011"
     vNumberData(28) =

"111000001111011110111101111011110111111111100111111111100111111111101111

0111101111011110111100000111"
     vNumberData(29) =

"100000001110110110111111011111111101111111110111111111011111111101111111

1101111111110111111110001111"
     vNumberData(30) =

"100010001111011101111101110111110111011111011101111101110111110111011111

0111011111011101111110001111"
     vNumberData(31) =

"100010001111011101111101110111110111011111101011111110101111111010111111

1010111111110111111111011111"
     vNumberData(32) =

"100101001111010101111101010111110101011111010101111100100111111010111111

1010111111101011111110101111"
     vNumberData(33) =

"100010001111011101111110101111111010111111110111111111011111111010111111

1010111111011101111000100011"
     vNumberData(34) =

"100010001111011101111101110111111010111111101011111111011111111101111111

1101111111110111111110001111"
     vNumberData(35) =

"110000001111011101111111110111111110111111111011111111011111111101111111

1011111111101110111100000011"

     ' 输出图像文件头
     Response.BinaryWrite ChrB(66) & ChrB(77) & ChrB(230) & ChrB(4) &

ChrB(0) & ChrB(0) & ChrB(0) & ChrB(0) &_
           ChrB(0) & ChrB(0) & ChrB(54) & ChrB(0) & ChrB(0) & ChrB(0) &

ChrB(40) & ChrB(0) &_
           ChrB(0) & ChrB(0) & ChrB(40) & ChrB(0) & ChrB(0) & ChrB(0) &

ChrB(10) & ChrB(0) &_
           ChrB(0) & ChrB(0) & ChrB(1) & ChrB(0)

     ' 输出图像信息头
     Response.BinaryWrite ChrB(24) & ChrB(0) & ChrB(0) & ChrB(0) &

ChrB(0) & ChrB(0) & ChrB(176) & ChrB(4) &_
           ChrB(0) & ChrB(0) & 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)

     For i = 9 To 0 Step -1  ' 历经所有行
           For ii = 0 To 3  ' 历经所有字
                 For iii = 1 To 10 ' 历经所有像素
                 ' 逐行、逐字、逐像素地输出图像数据
                       If Rnd * 99 + 1 < cOdds Then '
随机生成杂点
                             Response.BinaryWrite vColorData(0)
                       Else
                             Response.BinaryWrite

vColorData(Mid(vNumberData(vCode(ii)), i * 10 + iii, 1))
                       End If
                 Next
           Next
     Next
End Sub
%>


类别:默认分类 | 添加到搜藏 | 浏览() | 评论 (0)
 
最近读者:
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码: 请点击后输入四位验证码,字母不区分大小写
      

     

©2009 Baidu