会员互动|教程学习|问题求助|作品交流|图图市场|图片素材|素材下载|贴图版块|休闲娱乐|站务大厅
炫舞挂→www.1010au.com 炫舞aa挂 DNF解封器免费版 QQ空间克隆 www.qqai.net QQ好友印象 www.mmggqq.com
快播电影,你懂的→www.afddy.com dnf双开→www.qqwgw.com 好听的网名www.qqhaoting.com 洛克王国辅助→www.ucbug.com
网页游戏 www.36011.com →www.cfjfq.com 2012最新电影→www.xwdy.com haosf www.haosf-1.com
DNF连发程序下载 www.dnfaa.com sf123→www.sf123-1.com 炫舞挂 西西炫舞挂→qqxuanwuwg.com 炫舞挂 洛克王国辅助
虹桥影院→www.hqq8.com 西西游戏网→www.wgtt.net 数码相机排行榜 www.55sos.com 我本沉默→www.555678.net
3000ok→www.3000ok.com.cn DNF双开→www.97xqw.com DNF连发程序下载 www.dnflianfa.org qq堂4.3全能挂下载→www.nksi.cn
CF解封器免费版→www.shuacf.com 我本沉默→www.zhaodd.com 嘟嘟传奇→www.sf195.com cf透视 炫舞挂-www.92wg.com
[网页素材] ASP图片验证码类
UID:12090514
越兔

ASP图片验证码类

本贴由: 中华图网 会员: 越兔 发表于: 2008-09-12 11:24  共5113人围观  [收藏本贴到:QQ书签 | 百度收藏夹]
ASP图片验证码类 由 越兔 发表于中华图网,未经本人许可请勿随便转载!
转个我佛山人的图片验证码类
以下内容保存为ASP即可。
运行时调用地址指向这个ASP文件即可。
即img.src = 这个asp的地址
复制代码
  1. <%
  2. 'ValidCode 图片验证码类
  3. '我佛山人@2005.8.23
  4. Option Explicit
  5. Response.Buffer = true
  6. Class ValidCode
  7.     Private PNoise
  8.     Private PBgColor
  9.     Private PLength
  10.     Private charSet
  11.     Private charSetCount
  12.     '噪点
  13.     Public Property Let Noise(ByVal Value)
  14.         If IsNumeric(Value) Then
  15.             PNoise = CInt(Value) Mod 100
  16.         End If
  17.     End Property
  18.     Public Property Get Noise()
  19.         Noise = PNoise
  20.     End Property
  21.     '背景颜色
  22.     Public Property Let BgColor(ByVal Value)
  23.         PBgColor = Value
  24.     End Property
  25.     Public Property Get BgColor()
  26.         BgColor = PBgColor
  27.     End Property
  28.     '验证码长度
  29.     Public Property Let Length(ByVal Value)
  30.         PLength = Value
  31.         If PLength < 2 Then PLength = 2
  32.     End Property
  33.     Public Property Get Length()
  34.         Length = PLength
  35.     End Property
  36.     Private Sub Class_Initialize()
  37.         charSet = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
  38.         charSetCount = Len(charSet)
  39.         Noise = 6
  40.         Length = 4
  41.         BgColor = ChrB(250) & ChrB(250) & ChrB(240)
  42.     End Sub    
  43.     Private Sub Class_Terminate()
  44.     End Sub
  45.     Public Sub Generate(sessionName)
  46.         ' 字符数据
  47.         Dim numberSet(35)
  48.         numberSet(0) = "1110000111110111101111011110111101001011110100101111010010111101001011110111101111011110111110000111"
  49.         numberSet(1) = "1111011111110001111111110111111111011111111101111111110111111111011111111101111111110111111100000111"
  50.         numberSet(2) = "1110000111110111101111011110111111111011111111011111111011111111011111111011111111011110111100000011"
  51.         numberSet(3) = "1110000111110111101111011110111111110111111100111111111101111111111011110111101111011110111110000111"
  52.         numberSet(4) = "1111101111111110111111110011111110101111110110111111011011111100000011111110111111111011111111000011"
  53.         numberSet(5) = "1100000011110111111111011111111101000111110011101111111110111111111011110111101111011110111110000111"
  54.         numberSet(6) = "1111000111111011101111011111111101111111110100011111001110111101111011110111101111011110111110000111"
  55.         numberSet(7) = "1100000011110111011111011101111111101111111110111111110111111111011111111101111111110111111111011111"
  56.         numberSet(8) = "1110000111110111101111011110111101111011111000011111101101111101111011110111101111011110111110000111"
  57.         numberSet(9) = "1110001111110111011111011110111101111011110111001111100010111111111011111111101111011101111110001111"
  58.         numberSet(10) = "1111111111111100111111110011111110110111111011011111000000111101111011110111101111011110111000110001"
  59.         numberSet(11) = "0000001111100111011110011110111001111011100000011110011110111001111101100111101110011101110000001111"
  60.         numberSet(12) = "1111000010111011110011011111101011111110101111111110111111111011111110110111111011101111001111000010"
  61.         numberSet(13) = "0000001111100111011110011110111001111101100111110110011111011001111101100111101110011101110000001111"
  62.         numberSet(14) = "0000000011100111110110011111111001111011100000001110011110111001111111100111111110011111100000000001"
  63.         numberSet(15) = "0000000011100111110110011111111001111011100000001110011110111001111111100111111110011111110001111111"
  64.         numberSet(16) = "1111000010111011110011011111101011111110101111111110110000001011111100110111110011101111001111000010"
  65.         numberSet(17) = "0000110000100111100110011110011001111001100000000110011110011001111001100111100110011110010000110000"
  66.         numberSet(18) = "1100000011111100111111110011111111001111111100111111110011111111001111111100111111110011111100000011"
  67.         numberSet(19) = "1100000011111100111111110011111111001111111100111111110011111111001111110100111110010011111100011111"
  68.         numberSet(20) = "1000010001110011101111001101111100101111110000111111001101111100110111110011101111001110111000010001"
  69.         numberSet(21) = "1000011111110011111111001111111100111111110011111111001111111100111111110011111111001110111000000011"
  70.         numberSet(22) = "0000110000100111100110011100011010110001101011000110101100011010101001101100100110110110010001010000"
  71.         numberSet(23) = "0001111000100011110110001111011000011101101000110110110001011011100101101110000110111100010001111001"
  72.         numberSet(24) = "1111001111110011001110111111010011111100001111110000111111000011111100101111110111001100111111001111"
  73.         numberSet(25) = "0000001111100111011110011100111001110011100111001110011101111000001111100111111110011111110000111111"
  74.         numberSet(26) = "1110000111110011001110011110011001111001100111100110011110011001111001100110000111001100111110000001"
  75.         numberSet(27) = "1000000011100111100110011110011001111001100111100110000000111001111001100111100110011110011001111101"
  76.         numberSet(28) = "1110000011110011100111001110011100111111111000111111110001111111110011110011100111001110011110000011"
  77.         numberSet(29) = "1000000001111100111111110011111111001111111100111111110011111111001111111100111111110011111110000111"
  78.         numberSet(30) = "1001111001100111100110011110011001111001100111100110011110011001111001100111100111001100111110000111"
  79.         numberSet(31) = "1001111001100111100111001100111100110011110011001111101101111110000111111000011111110011111111001111"
  80.         numberSet(32) = "0111111110011101111001110111101010101101101010110110101011011010110101110111001111011110111101111011"
  81.         numberSet(33) = "1001111001100111100111001100111110000111111000011111100001111110000111110011001110011110011001111001"
  82.         numberSet(34) = "0000110000100111100111001100111110000111111000011111110011111111001111111100111111110011111110000111"
  83.         numberSet(35) = "1000000000111111110011111110011110110011111100011111110011111110010111110011111110011111111000000000"
  84.         ' 颜色数据
  85.         Randomize
  86.         Dim i, ii, iii
  87.         Dim colorSet : colorSet = Split(Space(Length - 1), " ")
  88.         For i = 0 To Length - 1
  89.             colorSet(i) = RandomColor()
  90.         Next
  91.         
  92.         ' 随机字符    
  93.         Dim codes, code : code = Split(Space(Length - 1), " ")
  94.         For i = 0 To Length - 1
  95.             code(i) = Int(Rnd * charSetCount)
  96.             codes = codes & Mid(charSet, code(i) + 1, 1)
  97.         Next
  98.         Session(sessionName) = UCase(codes)  '记录Session
  99.         With Response
  100.             .Expires = -1
  101.             .ExpiresAbsolute = Now - 1
  102.             .AddHeader "Pragma","no-cache"
  103.             .AddHeader "cache-ctrol","no-cache"
  104.             .CacheControl = "no-cache"
  105.             .ContentType = "Image/BMP"
  106.             'dword对齐处理 by V37
  107.             Dim byteCount,BytePatch
  108.             byteCount=((Length*10*3) mod 4)
  109.             If byteCount>0 Then
  110.                 byteCount= 4 - ((Length*10*3) Mod 4)
  111.                 For i=1 To byteCount : BytePatch = BytePatch & chrB(00) : Next
  112.             End If
  113.             '处理文件尺寸和图像数据信息
  114.             Dim datalength, filelength, fsize, datasize, schar, scharlen
  115.                 datasize  = (Length*10*3+byteCount) * 10 + 2
  116.                 fsize  = datasize+54
  117.                 schar = CStr(Hex(datasize))
  118.                 schar = String(8 - Len(schar), "0") & schar
  119.             For i=7 To 1 Step -2
  120.                 datalength = datalength & ChrB("&H" & Mid(schar,i,2)) '文件尺寸
  121.             Next
  122.                 schar = CStr(Hex(fsize))
  123.                 schar = String(8 - Len(schar), "0") & schar
  124.             For i=7 To 1 Step -2
  125.                 filelength = filelength & ChrB("&H" & Mid(schar,i,2)) '图像数据尺寸
  126.             Next
  127.         
  128.             '图像文件头
  129.             .BinaryWrite _
  130.                 ChrB(66) & ChrB(77) & _
  131.                 filelength & _
  132.                 ChrB(0)   & ChrB(0) & _
  133.                 ChrB(0)  & ChrB(0)  & ChrB(54)  & ChrB(0) & _
  134.                 ChrB(0)  & ChrB(0)  & ChrB(40)  & ChrB(0) & _
  135.                 ChrB(0)  & ChrB(0)  & ChrB(10 * Length) & ChrB(0) & _
  136.                 ChrB(0)  & ChrB(0)  & ChrB(10)  & ChrB(0) & _
  137.                 ChrB(0)  & ChrB(0)  & ChrB(1)   & ChrB(0)
  138.             
  139.             ' 图像信息头
  140.             .BinaryWrite _
  141.                 ChrB(24) & ChrB(0) & ChrB(0)   & ChrB(0) & ChrB(0)  & ChrB(0) & _
  142.                 datalength & _
  143.                 ChrB(18)  & ChrB(11) & ChrB(0)  & ChrB(0) & _
  144.                 ChrB(18)  & ChrB(11) & ChrB(0)  & ChrB(0) & _
  145.                 ChrB(0)   & ChrB(0) & ChrB(0)  & ChrB(0) & ChrB(0) & _
  146.                 ChrB(0) & ChrB(0) & ChrB(0)
  147.             
  148.             For i = 9 To 0 Step -1  '行
  149.                 For ii = 0 To Length - 1  ' 字
  150.                     For iii = 1 To 10 ' 列
  151.                         If Rnd * 99 + 1 < Noise Then ' 杂点
  152.                             .BinaryWrite RandomColor()
  153.                         Else
  154.                             If Mid(numberSet(code(ii)), i * 10 + iii, 1) = "1" Then
  155.                                 .BinaryWrite BgColor
  156.                             Else
  157.                                 .BinaryWrite colorSet(ii)
  158.                             End If
  159.                         End If
  160.                     Next
  161.                 Next
  162.                 If byteCount>0 Then .BinaryWrite BytePatch
  163.             Next
  164.         End With
  165.     End Sub
  166.     Private Function RandomColor()
  167.         RandomColor = ChrB(Rnd * 150 + 50) & ChrB(Rnd * 200 + 20) & ChrB(Rnd * 150 + 50)
  168.     End Function
  169. End Class
  170. Dim VCode : Set VCode = New ValidCode
  171. VCode.BgColor = ChrB(255) & ChrB(255) & ChrB(255)
  172. VCode.Noise = 5 + Rnd(3)
  173. VCode.Length = 4
  174. VCode.Generate("GetCode")
  175. Set VCode = Nothing
  176. %>
本帖被 淡如清风 从 网页设计交流 移动到本区(2010-04-08)
[楼主]  越兔 发表于:2008-09-12 11:24 [快速引用]
UID:12287296
picimg
多谢楼主,昨天有人还问我这个问题呢。
这家伙很懒,什么都没有留下。(设置个性签名可以到控制面板设置)
[沙发]  picimg 发表于:2008-09-13 16:12 [快速引用]
 中华图网 » 电脑软件下载 » ASP图片验证码类 版块权限查看
描述
快速回复
验证问题:
请输入本网站的正确名称 正确答案:中华图网
 回复后跳转到最后一页(不打勾为AJAX快速回复,不重新加载页面,回复更快)
按"Ctrl+Enter"直接提交
上一个 下一个