Ce programme génère principalement d'abord un nombre aléatoire, puis le transforme en fonction du nombre aléatoire généré en tant que contenu de l'image XBM, et enfin affiche l'image Lors de la vérification, le numéro d'entrée est obtenu et comparé à la session ("validatecode"). S'ils sont égaux, réussissez la vérification (notez également que les types des deux données comparées sont cohérents).
Comment afficher l'image générée ? <img src="xbm.asp"></img>
Pour plus d'informations sur le format des graphiques XBM, voir ici
http://www.zdnet.com.cn/developer/tech/story/0,2000081602,39134972,00.htm
Le code de xbm.asp est le suivant :
<!--#include file="numcode.asp"-->
<%
'Activer la mise en mémoire tampon
Réponse.Buffer = True
Avec réponse
.Expire = -1
.AddHeader "Pragma", "sans cache"
.AddHeader "cache-ctrol", "pas de cache"
Terminer par
Dim num
Randomiser
num = Int(7999 * Rnd + 2000)
Session("validateCode") = num
Dim Image
Faible largeur, hauteur
Dim numérique
Dim Longueur
Tri faible
htK
Longueur = 4
hc = chr(13) & chr(10)
Redim tri(Longueur)
numérique = ""
Pour I = 1 To Longueur - Len(num)
numérique = numérique & "0"
Suivant
Pour I = 1 à Len(num)
numérique = numérique & Mid(num, I, 1)
Suivant
Pour I = 1 à Len (numérique)
trier(I) = Milieu(numérique, I, 1)
Suivant
Largeur = 8 * Len (numérique)
Hauteur = 10
Response.ContentType = "image/x-xbitmap"
Image = "#define counter_width" & Largeur & hc
Image = Image & "#define counter_height " & Hauteur & hc
Image = Image & "static nonsigned char counter_bits[] = {" & hc
For I = 1 To Height
Pour J = 1 à la longueur
Image = Image & a(tri(J),I) & ","
Suivant
suivante
= Gauche (Image, Len (Image) - 1)
Image = Image & "};" & hc
Réponse.Écrire une image
%>
Le code de Numcode.asp est le suivant :
Code du programme :
<%
Dim a(10,10)
a(0,1) = "0x3c" 'Numéro 0
une(0,2) = "0x66"
une(0,3) = "0xc3"
une(0,4) = "0xc3"
une(0,5) = "0xc3"
une(0,6) = "0xc3"
une(0,7) = "0xc3"
une(0,8) = "0xc3"
une(0,9) = "0x66"
une(0,10)= "0x3c"
a(1,1) = "0x18" 'Numéro 1
une(1,2) = "0x1c"
une(1,3) = "0x18"
une(1,4) = "0x18"
une(1,5) = "0x18"
une(1,6) = "0x18"
une(1,7) = "0x18"
une(1,8) = "0x18"
une(1,9) = "0x18"
une(0,10)= "0x7e"
a(2,1) = "0x3c" 'Numéro 2
une(2,2) = "0x66"
une(2,3) = "0x60"
une(2,4) = "0x60"
une(2,5) = "0x30"
une(2,6) = "0x18"
une(2,7) = "0x0c"
une(2,8) = "0x06"
une(2,9) = "0x06"
une(2,10)= "0x7e"
a(3,1) = "0x3c" 'Numéro 3
une(3,2) = "0x66"
une(3,3) = "0xc0"
une(3,4) = "0x60"
une(3,5) = "0x1c"
une(3,6) = "0x60"
une(3,7) = "0xc0"
une(3,8) = "0xc0"
une(3,9) = "0x66"
une(3,10)= "0x38"
a(4,1) = "0x38" 'Numéro 4
une(4,2) = "0x3c"
une(4,3) = "0x36"
une(4,4) = "0x33"
une(4,5) = "0x33"
une(4,6) = "0x33"
une(4,7) = "0xff"
une(4,8) = "0x30"
une(4,9) = "0x30"
a(4,10)= "0xfe"
a(5,1) = "0xfe" 'Numéro 5
a(5,2) = "0xfe"
une(5,3) = "0x06"
une(5,4) = "0x06"
une(5,5) = "0x3e"
une(5,6) = "0x60"
une(5,7) = "0xc0"
une(5,8) = "0xc3"
une(5,9) = "0x66"
une(5,10)= "0x3c"
a(6,1) = "0x60" 'Numéro 6
une(6,2) = "0x30"
une(6,3) = "0x18"
une(6,4) = "0x0c"
une(6,5) = "0x3e"
une(6,6) = "0x63"
une(6,7) = "0xc3"
une(6,8) = "0xc3"
une(6,9) = "0x66"
a(6,10)="0x3c"
a(7,1) = "0xff" 'Numéro 7
une(7,2) = "0xc0"
une(7,3) = "0x60"
une(7,4) = "0x30"
une(7,5) = "0x18"
une(7,6) = "0x18"
une(7,7) = "0x18"
une(7,8) = "0x18"
une(7,9) = "0x18"
une(7,10)= "0x18"
a(8,1) = "0x3c" 'Numéro 8
une(8,2) = "0x66"
une(8,3) = "0xc3"
une(8,4) = "0x66"
une(8,5) = "0x3c"
une(8,6) = "0x66"
une(8,7) = "0xc3"
une(8,8) = "0xc3"
une(8,9) = "0x66"
une(8,10)= "0x3c"
a(9,1) = "0x3c" 'Numéro 9
une(9,2) = "0x66"
une(9,3) = "0xc3"
une(9,4) = "0xc3"
une(9,5) = "0x66"
une(9,6) = "0x3c"
une(9,7) = "0x18"
une(9,8) = "0x0c"
une(9,9) = "0x06"
a(9,10)= "0x03"
%>