Este programa gera principalmente um número aleatório primeiro, depois o transforma de acordo com o número aleatório gerado como o conteúdo da imagem XBM e, finalmente, exibe a imagem durante a verificação, o número de entrada é obtido e comparado com a Sessão ("validatecode"). Se forem iguais, passe na verificação (observe também que os tipos dos dois dados comparados são consistentes).
Como exibir a imagem gerada? <img src="xbm.asp"></img>
Para informações sobre o formato dos gráficos XBM, veja aqui
http://www.zdnet.com.cn/developer/tech/story/0,2000081602,39134972,00.htm
O código de xbm.asp é o seguinte:
<!--#include file="numcode.asp"-->
<%
'Ativa o buffer
Resposta.Buffer = Verdadeiro
Com resposta
.Expira = -1
.AddHeader "Pragma","sem cache"
.AddHeader "cache-ctrol","sem cache"
Terminar com
Dim num
Randomizar
num = Int(7999 * Fim + 2000)
Session("validateCode") = num
Dim Image
Dim Largura, Altura
Escurecer digital
Comprimento escuro
Classificação escura
htK
Comprimento = 4
hc = chr(13) & chr(10)
Redim sort(Length)
digital = ""
Para I = 1 até comprimento - Len(num)
digital = digital & "0"
Próximo
Para I = 1 para Len(num)
digital = digital e médio (num, I, 1)
Próximo
Para I = 1 para Len (digital)
classificar (I) = Médio (digital, I, 1)
Próximo
Largura = 8 * Len(digital)
Altura = 10
Response.ContentType = "image/x-xbitmap"
Image = "#define counter_width " & Width & hc
Imagem = Imagem & "#define counter_height " & Altura & hc
Imagem = Imagem & "static unsigned char counter_bits[] = {" & hc
For I = 1 To Height
Para J = 1 ao comprimento
Imagem = Imagem & a(classificar(J),I) & ","
Próximo
Próxima
imagem = Esquerda (Imagem, Len (Imagem) - 1)
Imagem = Imagem & "};" & hc
Response.Write Imagem
%>
O código de Numcode.asp é o seguinte:
Código do programa:
<%
Escurecer um(10,10)
a(0,1) = "0x3c" 'Número 0
uma(0,2) = "0x66"
uma(0,3) = "0xc3"
uma(0,4) = "0xc3"
uma(0,5) = "0xc3"
uma(0,6) = "0xc3"
uma(0,7) = "0xc3"
uma(0,8) = "0xc3"
uma(0,9) = "0x66"
uma(0,10)= "0x3c"
a(1,1) = "0x18" 'Número 1
uma(1,2) = "0x1c"
uma(1,3) = "0x18"
uma(1,4) = "0x18"
uma(1,5) = "0x18"
uma(1,6) = "0x18"
uma(1,7) = "0x18"
uma(1,8) = "0x18"
uma(1,9) = "0x18"
uma(0,10)= "0x7e"
a(2,1) = "0x3c" 'Número 2
uma(2,2) = "0x66"
uma(2,3) = "0x60"
uma(2,4) = "0x60"
uma(2,5) = "0x30"
uma(2,6) = "0x18"
uma(2,7) = "0x0c"
uma(2,8) = "0x06"
uma(2,9) = "0x06"
uma(2,10)= "0x7e"
a(3,1) = "0x3c" 'Número 3
uma(3,2) = "0x66"
uma(3,3) = "0xc0"
uma(3,4) = "0x60"
uma(3,5) = "0x1c"
uma(3,6) = "0x60"
uma(3,7) = "0xc0"
uma(3,8) = "0xc0"
uma(3,9) = "0x66"
uma(3,10)= "0x38"
a(4,1) = "0x38" 'Número 4
uma(4,2) = "0x3c"
uma(4,3) = "0x36"
uma(4,4) = "0x33"
uma(4,5) = "0x33"
uma(4,6) = "0x33"
uma(4,7) = "0xff"
uma(4,8) = "0x30"
uma(4,9) = "0x30"
uma(4,10)= "0xfe"
a(5,1) = "0xfe" 'Número 5
uma(5,2) = "0xfe"
uma(5,3) = "0x06"
uma(5,4) = "0x06"
uma(5,5) = "0x3e"
uma(5,6) = "0x60"
uma(5,7) = "0xc0"
uma(5,8) = "0xc3"
uma(5,9) = "0x66"
uma(5,10)= "0x3c"
a(6,1) = "0x60" 'Número 6
uma(6,2) = "0x30"
uma(6,3) = "0x18"
uma(6,4) = "0x0c"
uma(6,5) = "0x3e"
uma(6,6) = "0x63"
uma(6,7) = "0xc3"
uma(6,8) = "0xc3"
uma(6,9) = "0x66"
uma(6,10)="0x3c"
a(7,1) = "0xff" 'Número 7
uma(7,2) = "0xc0"
uma(7,3) = "0x60"
uma(7,4) = "0x30"
uma(7,5) = "0x18"
uma(7,6) = "0x18"
uma(7,7) = "0x18"
uma(7,8) = "0x18"
uma(7,9) = "0x18"
uma(7,10)= "0x18"
a(8,1) = "0x3c" 'Número 8
uma(8,2) = "0x66"
uma(8,3) = "0xc3"
uma(8,4) = "0x66"
uma(8,5) = "0x3c"
uma(8,6) = "0x66"
uma(8,7) = "0xc3"
uma(8,8) = "0xc3"
uma(8,9) = "0x66"
uma(8,10)= "0x3c"
a(9,1) = "0x3c" 'Número 9
uma(9,2) = "0x66"
uma(9,3) = "0xc3"
uma(9,4) = "0xc3"
uma(9,5) = "0x66"
uma(9,6) = "0x3c"
uma(9,7) = "0x18"
uma(9,8) = "0x0c"
uma(9,9) = "0x06"
uma(9,10)= "0x03"
%>