Эта программа в основном сначала генерирует случайное число, затем преобразует его в соответствии с сгенерированным случайным числом в качестве содержимого изображения XBM и, наконец, отображает изображение. Во время проверки входной номер получается и сравнивается с сеансом («validatecode»). Если они равны, пройдите проверку (также обратите внимание, что типы двух сравниваемых данных совпадают).
Как отобразить сгенерированное изображение? <img src="xbm.asp"></img>
Информацию о формате графиков XBM см. здесь.
http://www.zdnet.com.cn/developer/tech/story/0,2000081602,39134972,00.htm
Код xbm.asp выглядит следующим образом:
<!--#include file="numcode.asp"-->
<%
'Включаем буферизацию
Response.Buffer = Истина
С ответом
.Истекает = -1
.AddHeader «Прагма», «без кэша»
.AddHeader «управление кэшем», «без кэша»
Конец с
Dim num
Рандомизировать
число = Целое(7999 * Число + 2000)
Session("validateCode") = число
тусклого изображения
Тусклая ширина, высота
Тусклый цифровой
Тусклая длина
Тусклая сортировка
хтК
Длина = 4
hc = chr(13) & chr(10)
Восстановить сортировку (длина)
digital = ""
Для I = 1 к длине - Len(число)
цифровой = цифровой и «0»
Следующий
Для I = 1 до Len(число)
цифровой = цифровой и средний (число, I, 1)
Следующий
Для I = 1 к Лен (цифровой)
сортировка(I) = Средний(цифровой, I, 1)
Следующий
Ширина = 8 * Длина (цифровая)
Высота = 10
Response.ContentType = "image/x-xbitmap"
Image = "#define counter_width " & Width & hc
Изображение = Изображение & "#define counter_height" & Высота & hc
Image = Image & "static unsigned char counter_bits[] = {" & hc
For I = 1 To Height
Для J = 1 к длине
Изображение = Изображение & a(сортировка(J),I) & ","
Следующий
Следующее
изображение = Слева(Изображение, Len(Изображение) - 1)
Изображение = Изображение & "};" & hc
Response.Write Image
%>
Код Numcode.asp выглядит следующим образом:
Код программы:
<%
Дим а(10,10)
a(0,1) = "0x3c" 'Число 0
а(0,2) = "0x66"
а(0,3) = "0xc3"
а(0,4) = "0xc3"
а(0,5) = "0xc3"
а(0,6) = "0xc3"
а(0,7) = "0xc3"
а(0,8) = "0xc3"
а(0,9) = "0x66"
а(0,10)= "0x3c"
а(1,1) = "0x18" 'Номер 1
а(1,2) = "0x1c"
а(1,3) = "0x18"
а(1,4) = "0x18"
а(1,5) = "0x18"
а(1,6) = "0x18"
а(1,7) = "0x18"
а(1,8) = "0x18"
а(1,9) = "0x18"
а(0,10)= "0x7e"
а(2,1) = "0x3c" 'Номер 2
а(2,2) = "0x66"
а(2,3) = "0x60"
а(2,4) = "0x60"
а(2,5) = "0x30"
а(2,6) = "0x18"
а(2,7) = "0x0c"
а(2,8) = "0x06"
а(2,9) = "0x06"
а(2,10)= "0x7e"
a(3,1) = "0x3c" 'Номер 3
а(3,2) = "0x66"
а(3,3) = "0xc0"
а(3,4) = "0x60"
а(3,5) = "0x1c"
а(3,6) = "0x60"
а(3,7) = "0xc0"
а(3,8) = "0xc0"
а(3,9) = "0x66"
а(3,10)= "0x38"
а(4,1) = "0x38" 'Число 4
а(4,2) = "0x3c"
а(4,3) = "0x36"
а(4,4) = "0x33"
а(4,5) = "0x33"
а(4,6) = "0x33"
а(4,7) = "0xff"
а(4,8) = "0x30"
а(4,9) = "0x30"
а(4,10)= "0xfe"
a(5,1) = "0xfe" 'Номер 5
а(5,2) = "0xfe"
а(5,3) = "0x06"
а(5,4) = "0x06"
а(5,5) = "0x3e"
а(5,6) = "0x60"
а(5,7) = "0xc0"
а(5,8) = "0xc3"
а(5,9) = "0x66"
а(5,10)= "0x3c"
а(6,1) = "0x60" 'Число 6
а(6,2) = "0x30"
а(6,3) = "0x18"
а(6,4) = "0x0c"
а(6,5) = "0x3e"
а(6,6) = "0x63"
а(6,7) = "0xc3"
а(6,8) = "0xc3"
а(6,9) = "0x66"
а(6,10)="0x3c"
a(7,1) = "0xff" 'Число 7
а(7,2) = "0xc0"
а(7,3) = "0x60"
а(7,4) = "0x30"
а(7,5) = "0x18"
а(7,6) = "0x18"
а(7,7) = "0x18"
а(7,8) = "0x18"
а(7,9) = "0x18"
а(7,10)= "0x18"
a(8,1) = "0x3c" 'Число 8
а(8,2) = "0x66"
а(8,3) = "0xc3"
а(8,4) = "0x66"
а(8,5) = "0x3c"
а(8,6) = "0x66"
а(8,7) = "0xc3"
а(8,8) = "0xc3"
а(8,9) = "0x66"
а(8,10)= "0x3c"
a(9,1) = "0x3c" 'Номер 9
а(9,2) = "0x66"
а(9,3) = "0xc3"
а(9,4) = "0xc3"
а(9,5) = "0x66"
а(9,6) = "0x3c"
а(9,7) = "0x18"
а(9,8) = "0x0c"
а(9,9) = "0x06"
а(9,10)= "0x03"
%>