ASP生成XBM图可用作验证码

这个程序主要是先生成一个随机数,然后根据生成的随机数经过变换后作为XBM图片的内容,最后显示这个图片. 验证时中要获取输入的数字和Session("validatecode")比较,如果相等则通过验证(还要注意一下相比较的两数据的类型保持一致)。

如何显示生成的图片呢?

1<img src="xbm.asp"/>

关于XBM图的格式信息,看这里
http://www.zdnet.com.cn/developer/tech/story/0,2000081602,39134972,00.htm

xbm.asp的代码如下
程序代码:

 1   
 2'开启缓冲   
 3Response.Buffer = True   
 4With Response   
 5.Expires = -1   
 6.AddHeader "Pragma","no-cache"   
 7.AddHeader "cache-ctrol","no-cache"   
 8End With 
 9
10Dim num   
11Randomize   
12num = Int(7999 * Rnd + 2000)   
13Session("validateCode") = num 
14
15Dim Image   
16Dim Width, Height   
17Dim digtal   
18Dim Length   
19Dim sort   
20Dim hc   
21Length = 4   
22hc = chr(13) & chr(10) 
23
24Redim sort(Length) 
25
26digital = ""   
27For I = 1 To Length - Len(num)   
28digital = digital & "0"   
29Next   
30For I = 1 To Len(num)   
31digital = digital & Mid(num, I, 1)   
32Next   
33For I = 1 To Len(digital)   
34sort(I) = Mid(digital, I, 1)   
35Next   
36Width = 8 * Len(digital)   
37Height = 10 
38
39Response.ContentType = "image/x-xbitmap" 
40
41Image = "#define counter_width " & Width & hc   
42Image = Image & "#define counter_height " & Height & hc   
43Image = Image & "static unsigned char counter_bits[] = {" & hc 
44
45For I = 1 To Height   
46For J = 1 To Length   
47Image = Image & a(sort(J),I) & ","   
48Next   
49Next 
50
51Image = Left(Image, Len(Image) - 1)   
52Image = Image & "};" & hc 
53
54Response.Write Image   

Numcode.asp的代码如下:
程序代码:

  1   
  2Dim a(10,10)   
  3a(0,1) = "0x3c" '数字0   
  4a(0,2) = "0x66"   
  5a(0,3) = "0xc3"   
  6a(0,4) = "0xc3"   
  7a(0,5) = "0xc3"   
  8a(0,6) = "0xc3"   
  9a(0,7) = "0xc3"   
 10a(0,8) = "0xc3"   
 11a(0,9) = "0x66"   
 12a(0,10)= "0x3c"   
 13a(1,1) = "0x18" '数字1   
 14a(1,2) = "0x1c"   
 15a(1,3) = "0x18"   
 16a(1,4) = "0x18"   
 17a(1,5) = "0x18"   
 18a(1,6) = "0x18"   
 19a(1,7) = "0x18"   
 20a(1,8) = "0x18"   
 21a(1,9) = "0x18"   
 22a(0,10)= "0x7e"   
 23a(2,1) = "0x3c" '数字2   
 24a(2,2) = "0x66"   
 25a(2,3) = "0x60"   
 26a(2,4) = "0x60"   
 27a(2,5) = "0x30"   
 28a(2,6) = "0x18"   
 29a(2,7) = "0x0c"   
 30a(2,8) = "0x06"   
 31a(2,9) = "0x06"   
 32a(2,10)= "0x7e"   
 33a(3,1) = "0x3c" '数字3   
 34a(3,2) = "0x66"   
 35a(3,3) = "0xc0"   
 36a(3,4) = "0x60"   
 37a(3,5) = "0x1c"   
 38a(3,6) = "0x60"   
 39a(3,7) = "0xc0"   
 40a(3,8) = "0xc0"   
 41a(3,9) = "0x66"   
 42a(3,10)= "0x38"   
 43a(4,1) = "0x38" '数字4   
 44a(4,2) = "0x3c"   
 45a(4,3) = "0x36"   
 46a(4,4) = "0x33"   
 47a(4,5) = "0x33"   
 48a(4,6) = "0x33"   
 49a(4,7) = "0xff"   
 50a(4,8) = "0x30"   
 51a(4,9) = "0x30"   
 52a(4,10)= "0xfe"   
 53a(5,1) = "0xfe" '数字5   
 54a(5,2) = "0xfe"   
 55a(5,3) = "0x06"   
 56a(5,4) = "0x06"   
 57a(5,5) = "0x3e"   
 58a(5,6) = "0x60"   
 59a(5,7) = "0xc0"   
 60a(5,8) = "0xc3"   
 61a(5,9) = "0x66"   
 62a(5,10)= "0x3c"   
 63a(6,1) = "0x60" '数字6   
 64a(6,2) = "0x30"   
 65a(6,3) = "0x18"   
 66a(6,4) = "0x0c"   
 67a(6,5) = "0x3e"   
 68a(6,6) = "0x63"   
 69a(6,7) = "0xc3"   
 70a(6,8) = "0xc3"   
 71a(6,9) = "0x66"   
 72a(6,10) ="0x3c"   
 73a(7,1) = "0xff" '数字7   
 74a(7,2) = "0xc0"   
 75a(7,3) = "0x60"   
 76a(7,4) = "0x30"   
 77a(7,5) = "0x18"   
 78a(7,6) = "0x18"   
 79a(7,7) = "0x18"   
 80a(7,8) = "0x18"   
 81a(7,9) = "0x18"   
 82a(7,10)= "0x18"   
 83a(8,1) = "0x3c" '数字8   
 84a(8,2) = "0x66"   
 85a(8,3) = "0xc3"   
 86a(8,4) = "0x66"   
 87a(8,5) = "0x3c"   
 88a(8,6) = "0x66"   
 89a(8,7) = "0xc3"   
 90a(8,8) = "0xc3"   
 91a(8,9) = "0x66"   
 92a(8,10)= "0x3c"   
 93a(9,1) = "0x3c" '数字9   
 94a(9,2) = "0x66"   
 95a(9,3) = "0xc3"   
 96a(9,4) = "0xc3"   
 97a(9,5) = "0x66"   
 98a(9,6) = "0x3c"   
 99a(9,7) = "0x18"   
100a(9,8) = "0x0c"   
101a(9,9) = "0x06"   
102a(9,10)= "0x03"   
Published At
Categories with Web编程
Tagged with
comments powered by Disqus