ASP验证码

< %
Call  Com_CreatValidCode( " ValidCode " )

Sub  Com_CreatValidCode(pSN)

'  禁止缓存
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  =   10   '  杂点出现的机率


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

'  随机产生字符
Const  cAmount  =   36   '  文字数量
Const  cCode  =   " 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ "
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 =   " 1110000111110111101111011110111101001011110100101111010010111101001011110111101111011110111110000111 "
vNumberData(
1 =   " 1111011111110001111111110111111111011111111101111111110111111111011111111101111111110111111100000111 "
vNumberData(
2 =   " 1110000111110111101111011110111111111011111111011111111011111111011111111011111111011110111100000011 "
vNumberData(
3 =   " 1110000111110111101111011110111111110111111100111111111101111111111011110111101111011110111110000111 "
vNumberData(
4 =   " 1111101111111110111111110011111110101111110110111111011011111100000011111110111111111011111111000011 "
vNumberData(
5 =   " 1100000011110111111111011111111101000111110011101111111110111111111011110111101111011110111110000111 "
vNumberData(
6 =   " 1111000111111011101111011111111101111111110100011111001110111101111011110111101111011110111110000111 "
vNumberData(
7 =   " 1100000011110111011111011101111111101111111110111111110111111111011111111101111111110111111111011111 "
vNumberData(
8 =   " 1110000111110111101111011110111101111011111000011111101101111101111011110111101111011110111110000111 "
vNumberData(
9 =   " 1110001111110111011111011110111101111011110111001111100010111111111011111111101111011101111110001111 "
vNumberData(
10 =   " 1111011111111101111111101011111110101111111010111111101011111100000111110111011111011101111000100011 "
vNumberData(
11 =   " 1000000111110111101111011110111101110111110000111111011101111101111011110111101111011110111000000111 "
vNumberData(
12 =   " 1110000011110111101110111110111011111111101111111110111111111011111111101111101111011101111110001111 "
vNumberData(
13 =   " 1000001111110111011111011110111101111011110111101111011110111101111011110111101111011101111000001111 "
vNumberData(
14 =   " 1000000111110111101111011011111101101111110000111111011011111101101111110111111111011110111000000111 "
vNumberData(
15 =   " 1000000111110111101111011011111101101111110000111111011011111101101111110111111111011111111000111111 "
vNumberData(
16 =   " 1110000111110111011110111101111011111111101111111110111111111011100011101111011111011101111110001111 "
vNumberData(
17 =   " 1000100011110111011111011101111101110111110000011111011101111101110111110111011111011101111000100011 "
vNumberData(
18 =   " 1100000111111101111111110111111111011111111101111111110111111111011111111101111111110111111100000111 "
vNumberData(
19 =   " 1110000011111110111111111011111111101111111110111111111011111111101111111110111110111011111000011111 "
vNumberData(
20 =   " 1000100011110111011111011011111101011111110001111111010111111101101111110110111111011101111000100011 "
vNumberData(
21 =   " 1000111111110111111111011111111101111111110111111111011111111101111111110111111111011110111000000011 "
vNumberData(
22 =   " 1000100011110010011111001001111100100111110101011111010101111101010111110101011111010101111001010011 "
vNumberData(
23 =   " 1000100011110011011111001101111101010111110101011111010101111101100111110110011111011001111000110111 "
vNumberData(
24 =   " 1110001111110111011110111110111011111011101111101110111110111011111011101111101111011101111110001111 "
vNumberData(
25 =   " 1000000111110111101111011110111101111011110000011111011111111101111111110111111111011111111000111111 "
vNumberData(
26 =   " 1110001111110111011110111110111011111011101111101110111110111011111011101001101111011001111110001011 "
vNumberData(
27 =   " 1000001111110111011111011101111101110111110000111111010111111101101111110110111111011101111000110011 "
vNumberData(
28 =   " 1110000011110111101111011110111101111111111001111111111001111111111011110111101111011110111100000111 "
vNumberData(
29 =   " 1000000011101101101111110111111111011111111101111111110111111111011111111101111111110111111110001111 "
vNumberData(
30 =   " 1000100011110111011111011101111101110111110111011111011101111101110111110111011111011101111110001111 "
vNumberData(
31 =   " 1000100011110111011111011101111101110111111010111111101011111110101111111010111111110111111111011111 "
vNumberData(
32 =   " 1001010011110101011111010101111101010111110101011111001001111110101111111010111111101011111110101111 "
vNumberData(
33 =   " 1000100011110111011111101011111110101111111101111111110111111110101111111010111111011101111000100011 "
vNumberData(
34 =   " 1000100011110111011111011101111110101111111010111111110111111111011111111101111111110111111110001111 "
vNumberData(
35 =   " 1100000011110111011111111101111111101111111110111111110111111111011111111011111111101110111100000011 "

'  输出图像文件头
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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值