Este programa genera principalmente un número aleatorio primero, luego lo transforma de acuerdo con el número aleatorio generado como el contenido de la imagen XBM y finalmente muestra la imagen durante la verificación, se obtiene el número de entrada y se compara con la sesión ("código de validación"). Si son iguales, pasa la verificación (también tenga en cuenta que los tipos de los dos datos comparados son consistentes).
¿Cómo mostrar la imagen generada? <img src="xbm.asp"></img>
Para obtener información sobre el formato de los gráficos XBM, consulte aquí
http://www.zdnet.com.cn/developer/tech/story/0,2000081602,39134972,00.htm
El código de xbm.asp es el siguiente:
<!--#include file="numcode.asp"-->
<%
'Activar el almacenamiento en buffer
Respuesta.Buffer = Verdadero
Con respuesta
.Expira = -1
.AddHeader "Pragma","sin caché"
.AddHeader "cache-ctrol","no-cache"
Terminar con
número tenue
Aleatorizar
número = Int(7999 * Rnd + 2000)
Sesión("validateCode") = num
Imagen tenue
Ancho y alto tenues
digital tenue
Longitud tenue
tipo tenue
htK
Longitud = 4
hc = chr(13) & chr(10)
Redim sort(Longitud)
digital = ""
Para I = 1 a longitud - Len(num)
digitales = digitales y "0"
Próximo
Para I = 1 a Len(num)
digital = digital y medio(núm, I, 1)
Próximo
Para I = 1 a Len (digital)
ordenar(I) = Medio(digital, I, 1)
Próximo
Ancho = 8 * Longitud (digital)
Alto = 10
Response.ContentType = "image/x-xbitmap"
Imagen = "#define counter_width " & Ancho & hc
Imagen = Imagen & "#define contra_altura " & Altura & hc
Imagen = Imagen & "counter_bits de caracteres estáticos sin firmar[] = {" & hc
Para I = 1 A la altura
Para J = 1 a longitud
Imagen = Imagen & a(ordenar(J),I) & ","
Próximo
siguiente
= Izquierda (Imagen, Len (Imagen) - 1)
Imagen = Imagen & "};" & hc
Respuesta.Escribir imagen
%>
El código de Numcode.asp es el siguiente:
Código de programa:
<%
Atenuar a(10,10)
a(0,1) = "0x3c" 'Número 0
a(0,2) = "0x66"
a(0,3) = "0xc3"
a(0,4) = "0xc3"
a(0,5) = "0xc3"
a(0,6) = "0xc3"
a(0,7) = "0xc3"
a(0,8) = "0xc3"
a(0,9) = "0x66"
a(0,10)= "0x3c"
a(1,1) = "0x18" 'Número 1
a(1,2) = "0x1c"
a(1,3) = "0x18"
a(1,4) = "0x18"
a(1,5) = "0x18"
a(1,6) = "0x18"
a(1,7) = "0x18"
a(1,8) = "0x18"
a(1,9) = "0x18"
a(0,10)= "0x7e"
a(2,1) = "0x3c" 'Número 2
a(2,2) = "0x66"
a(2,3) = "0x60"
a(2,4) = "0x60"
a(2,5) = "0x30"
a(2,6) = "0x18"
a(2,7) = "0x0c"
a(2,8) = "0x06"
a(2,9) = "0x06"
a(2,10)= "0x7e"
a(3,1) = "0x3c" 'Número 3
a(3,2) = "0x66"
a(3,3) = "0xc0"
a(3,4) = "0x60"
a(3,5) = "0x1c"
a(3,6) = "0x60"
a(3,7) = "0xc0"
a(3,8) = "0xc0"
a(3,9) = "0x66"
a(3,10)= "0x38"
a(4,1) = "0x38" 'Número 4
a(4,2) = "0x3c"
a(4,3) = "0x36"
a(4,4) = "0x33"
a(4,5) = "0x33"
a(4,6) = "0x33"
a(4,7) = "0xff"
a(4,8) = "0x30"
a(4,9) = "0x30"
a(4,10)= "0xfe"
a(5,1) = "0xfe" 'Número 5
a(5,2) = "0xfe"
a(5,3) = "0x06"
a(5,4) = "0x06"
a(5,5) = "0x3e"
a(5,6) = "0x60"
a(5,7) = "0xc0"
a(5,8) = "0xc3"
a(5,9) = "0x66"
a(5,10)= "0x3c"
a(6,1) = "0x60" 'Número 6
a(6,2) = "0x30"
a(6,3) = "0x18"
a(6,4) = "0x0c"
a(6,5) = "0x3e"
a(6,6) = "0x63"
a(6,7) = "0xc3"
a(6,8) = "0xc3"
a(6,9) = "0x66"
a(6,10)="0x3c"
a(7,1) = "0xff" 'Número 7
a(7,2) = "0xc0"
a(7,3) = "0x60"
a(7,4) = "0x30"
a(7,5) = "0x18"
a(7,6) = "0x18"
a(7,7) = "0x18"
a(7,8) = "0x18"
a(7,9) = "0x18"
a(7,10)= "0x18"
a(8,1) = "0x3c" 'Número 8
a(8,2) = "0x66"
a(8,3) = "0xc3"
a(8,4) = "0x66"
a(8,5) = "0x3c"
a(8,6) = "0x66"
a(8,7) = "0xc3"
a(8,8) = "0xc3"
a(8,9) = "0x66"
a(8,10)= "0x3c"
a(9,1) = "0x3c" 'Número 9
a(9,2) = "0x66"
a(9,3) = "0xc3"
a(9,4) = "0xc3"
a(9,5) = "0x66"
a(9,6) = "0x3c"
a(9,7) = "0x18"
a(9,8) = "0x0c"
a(9,9) = "0x06"
a(9,10)= "0x03"
%>