Program ini pada dasarnya menghasilkan nomor acak terlebih dahulu, kemudian mengubahnya sesuai dengan nomor acak yang dihasilkan sebagai konten gambar XBM, dan terakhir menampilkan gambar tersebut. Selama verifikasi, nomor masukan diperoleh dan dibandingkan dengan Sesi ("kode validasi"). Jika keduanya sama, Lulus verifikasi (perhatikan juga bahwa jenis kedua data yang dibandingkan adalah konsisten).
Bagaimana cara menampilkan gambar yang dihasilkan? <img src="xbm.asp"></img>
Untuk informasi tentang format grafik XBM, lihat di sini
http://www.zdnet.com.cn/developer/tech/story/0,2000081602,39134972,00.htm
Kode xbm.asp adalah sebagai berikut:
<!--#termasuk file="numcode.asp"-->
<%
'Aktifkan buffering
Respon.Buffer = Benar
Dengan Respon
.Kedaluwarsa = -1
.AddHeader "Pragma", "tanpa cache"
.AddHeader "cache-ctrol", "tanpa cache"
Akhiri Dengan
Dim num
Acak
angka = Int(7999 * Putaran + 2000)
Sesi("validateCode") = jumlah
Gambar Redup
Redupkan Lebar, Tinggi
Redupkan digital
Panjang Redup
Jenis redup
htK
Panjang = 4
hc = chr(13) & chr(10)
Redim sort(Panjang)
digital = ""
Untuk I = 1 Ke Panjang - Len(angka)
digital = digital & "0"
Berikutnya
Untuk I = 1 Ke Len(angka)
digital = digital & Pertengahan(angka, I, 1)
Berikutnya
Untuk I = 1 Ke Len(digital)
sortir(I) = Pertengahan(digital, I, 1)
Berikutnya
Lebar = 8 * Len (digital)
Tinggi = 10
Response.ContentType = "image/x-xbitmap"
Gambar = "#define counter_width " & Lebar & hc
Gambar = Gambar & "#define counter_height " & Tinggi & hc
Gambar = Gambar & "static unsigned char counter_bits[] = {" & hc
Untuk I = 1 Ke Tinggi
Untuk J = 1 Ke Panjang
Gambar = Gambar & a(sort(J),I) & ","
Berikutnya
Berikutnya
= Kiri(Gambar, Len(Gambar) - 1)
Gambar = Gambar & "};" & hc
Respon.Tulis Gambar
%>
Kode Numcode.asp adalah sebagai berikut:
Kode program:
<%
Redupkan a(10,10)
a(0,1) = "0x3c" 'Nomor 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" 'Nomor 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" 'Nomor 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" 'Nomor 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" 'Nomor 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" 'Nomor 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" 'Nomor 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" 'Nomor 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" 'Nomor 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" 'Nomor 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"
%>