이 프로그램은 주로 난수를 생성한 다음 생성된 난수에 따라 XBM 사진의 내용으로 변환하고 마지막으로 사진을 표시합니다. 확인하는 동안 입력된 숫자를 가져와서 세션("validatecode")과 비교합니다. 동일하면 검증에 합격합니다(비교된 두 데이터의 유형이 일치한다는 점도 참고하세요).
생성된 이미지를 어떻게 표시하나요? <img src="xbm.asp"></img>
XBM 그래프 형식에 대한 자세한 내용은 여기를 참조하세요.
http://www.zdnet.com.cn/developer/tech/story/0,2000081602,39134972,00.htm
xbm.asp의 코드는 다음과 같습니다.
<!--#include 파일="numcode.asp"-->
<%
'버퍼링 켜기
응답.버퍼 = 참
응답 포함
.만료 = -1
.AddHeader "Pragma","no-cache"
.AddHeader "cache-ctrol","no-cache"
치수 번호
로 끝남
무작위화
숫자 = 정수(7999 * Rnd + 2000)
Session("validateCode") = num
희미한 이미지
희미한 너비, 높이
희미한 디지털
희미한 길이
희미한 정렬
htK
길이 = 4
hc = chr(13) & chr(10)
Redim 정렬(길이)
digital = ""
I = 1에서 길이 - Len(num)
디지털 = 디지털 & "0"
다음
I = 1에서 Len(num)으로
digital = digital & Mid(숫자, I, 1)
다음
I = 1 To Len(디지털)
sort(I) = Mid(디지털, I, 1)
다음
너비 = 8 * Len(디지털)
높이 = 10
Response.ContentType = "image/x-xbitmap"
Image = "#define counter_width " & 너비 & hc
이미지 = 이미지 & "#define counter_height " & 높이 & hc
이미지 = 이미지 & "static unsigned char counter_bits[] = {" & hc
For I = 1 To Height
J = 1 길이
이미지 = 이미지 & a(sort(J),I) & ","
다음
다음
이미지 = 왼쪽(이미지, Len(이미지) - 1)
이미지 = 이미지 & "};" & hc
응답.이미지 쓰기
%>
Numcode.asp의 코드는 다음과 같습니다.
프로그램 코드:
<%
희미한(10,10)
a(0,1) = "0x3c" '숫자 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" '숫자 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" '숫자 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" '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" '숫자 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" '숫자 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" '숫자 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" '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" '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" '숫자 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"
%>