ASP는 GIF 형식의 구성요소 없는 인증코드 생성을 구현합니다. ASP 인증코드가 필요한 친구는 참고할 수 있습니다. 다음과 같이 코드 코드를 복사합니다.
<%
Option Explicit ' 표시 선언
클래스 Com_GifCode_Class
'''''''''''''''''''''''''''''''''''''
' 작성자: Layen [email protected] 84815733(QQ)
' 감사합니다: Laomi, Laomiao, NetRube
'2006-01-02
'''''''''''''''''''''''''''''''''''''
공개 시끄러움, 개수, 너비, 높이, 각도, 오프셋, 테두리
프라이빗 그래프(), 마진(3)
비공개 하위 클래스_Initialize()
무작위화
Noisy = 16' 간섭점 발생 확률
Count = 4 '문자 수
너비 = 80' 이미지 너비
높이 = 20' 이미지 높이
각도 = 2 ' 각도의 무작위 변경
오프셋 = 20' 오프셋 무작위 변형
테두리 = 1 '테두리 크기
서브 끝
공개 함수 생성()
상수 cCharSet = 123456789
나는, x, y를 어둡게 한다
희미한 vValidCode : vValidCode =
희미한 vIndex
ReDim 그래프(너비-1, 높이-1)
i = 0의 경우 계산하려면 - 1
vIndex = Int(Rnd * Len(cCharSet))
vValidCode = vValidCode + Mid(cCharSet, vIndex+1, 1)
SetDraw vIndex, i
다음
생성 = vValidCode
기능 종료
하위 SetDot(pX, pY)
pX * (Width-pX-1) >= 0 그리고 pY * (Height-pY-1) >= 0이면
그래프(pX, pY) = 1
종료 조건
서브 끝
Public Sub SetDraw(pIndex, pNumber)
'문자 데이터
희미한 도트 데이터(8)
DotData(0) = 배열(30, 15, 50, 1, 50, 100)
DotData(1) = 배열(1 ,34 ,30 ,1 ,71, 1, 100, 34, 1, 100, 93, 100, 100, 86)
DotData(2) = 배열(1, 1, 100, 1, 42, 42, 100, 70, 50, 100, 1, 70)
DotData(3) = 배열(100, 73, 6, 73, 75, 6, 75, 100)
DotData(4) = 배열(100, 1, 1, 1, 1, 50, 50, 35, 100, 55, 100, 80, 50, 100, 1, 95)
DotData(5) = 배열(100, 20, 70, 1, 20, 1, 1, 30, 1, 80, 30, 100, 70, 100, 100, 80, 100, 60, 70, 50, 30, 50 , 1, 60)
DotData(6) = 배열(6, 26, 6, 6, 100, 6, 53, 100)
DotData(7) = 배열(100, 30, 100, 20, 70, 1, 30, 1, 1, 20, 1, 30, 100, 70, 100, 80, 70, 100, 30, 100, 1, 80 , 1, 70, 100, 30)
DotData(8) = 배열(1, 80, 30, 100, 80, 100, 100, 70, 100, 20, 70, 1, 30, 1, 1, 20, 1, 40, 30, 50, 70, 50 , 100, 40)
Dim vExtent : vExtent = 너비 / 개수
여백(0) = 테두리 + vExtent * (Rnd * 오프셋) / 100 + 여백(1)
여백(1) = vExtent * (pNumber + 1) - 테두리 - vExtent * (Rnd * 오프셋) / 100
여백(2) = 테두리 + 높이 * (Rnd * 오프셋) / 100
여백(3) = 높이 - 테두리 - 높이 * (Rnd * 오프셋) / 100
희미한 vStartX, vEndX, vStartY, vEndY
희미한 vWidth, vHeight, vDX, vDY, vDeltaT
희미한 vAngle, vLength
vWidth = Int(여백(1) - 여백(0))
vHeight = Int(Margin(3) - Margin(2))
'시작 좌표
vStartX = Int((DotData(pIndex)(0)-1) * vWidth / 100)
vStartY = Int((DotData(pIndex)(1)-1) * vHeight / 100)
어두워요,j
i = 1의 경우 UBound(DotData(pIndex), 1)/2
DotData(pIndex)(2*i-2) <> 0 및 DotData(pIndex)(2*i) <> 0이면
'종점 좌표
vEndX = (DotData(pIndex)(2*i)-1) * vWidth / 100
vEndY = (DotData(pIndex)(2*i+1)-1) * vHeight / 100
'수평 간격
vDX = vEndX - vStartX
'수직 간격
vDY = vEndY - vStartY
'기울기 각도
vDX = 0이면
vAngle = Sgn(vDY) * 3.14/2
또 다른
vAngle = Atn(vDY / vDX)
종료 조건
'두 좌표 사이의 거리
Sin(vAngle) = 0이면
v길이 = vDX
또 다른
v길이 = vDY / Sin(vAngle)
종료 조건
' 임의의 회전 각도
vAngle = vAngle + (Rnd - 0.5) * 2 * 각도 * 3.14 * 2 / 100
vDX = Int(Cos(vAngle) * vLength)
vDY = Int(Sin(vAngle) * vLength)
Abs(vDX) > Abs(vDY)이면 vDeltaT = Abs(vDX) 그렇지 않으면 vDeltaT = Abs(vDY)
j = 1인 경우 vDeltaT로
SetDot 여백(0) + vStartX + j * vDX / vDeltaT, 여백(2) + vStartY + j * vDY / vDeltaT
다음
vStartX = vStartX + vDX
vStartY = vStartY + vDY
종료 조건
다음
서브 끝
공개 하위 출력()
응답.만료 = -9999
Response.AddHeader pragma, 캐시 없음
Response.AddHeader 캐시 제어, 캐시 없음
Response.ContentType = 이미지/gif
'파일 형식
응답.BinaryWrite ChrB(Asc(G)) & ChrB(Asc(I)) & ChrB(Asc(F))
'버전 정보
응답.BinaryWrite ChrB(Asc(8)) & ChrB(Asc(9)) & ChrB(Asc(a))
'논리적 화면 너비
Response.BinaryWrite ChrB(폭 Mod 256) & ChrB((폭 / 256) Mod 256)
'논리적 화면 높이
Response.BinaryWrite ChrB(높이 Mod 256) & ChrB((높이 / 256) Mod 256)
응답.BinaryWrite ChrB(128) & ChrB(0) & ChrB(0)
'글로벌 색상 목록
응답.BinaryWrite ChrB(255) & ChrB(255) & ChrB(255)
응답.BinaryWrite ChrB(0) & ChrB(85) & ChrB(255)
'이미지 식별자
응답.BinaryWrite ChrB(Asc(,))
응답.BinaryWrite ChrB(0) & ChrB(0) & ChrB(0) & ChrB(0)
'이미지 너비
Response.BinaryWrite ChrB(폭 Mod 256) & ChrB((폭 / 256) Mod 256)
'이미지 높이
Response.BinaryWrite ChrB(높이 Mod 256) & ChrB((높이 / 256) Mod 256)
응답.BinaryWrite ChrB(0) & ChrB(7) & ChrB(255)
희미한 x, y, i : i = 0
y = 0에서 높이 - 1
x = 0에서 너비 - 1
Rnd < Noisy / 100인 경우
응답.BinaryWrite ChrB(1-그래프(x, y))
또 다른
x * (x-너비) = 0 또는 y * (y-높이) = 0이면
응답.BinaryWrite ChrB(그래프(x, y))
또 다른
그래프(x-1, y) = 1 또는 그래프(x, y) 또는 그래프(x, y-1) = 1이면
응답.BinaryWrite ChrB(1)
또 다른
응답.BinaryWrite ChrB(0)
종료 조건
종료 조건
종료 조건
(y * 너비 + x + 1) Mod 126 = 0이면
응답.BinaryWrite ChrB(128)
나는 = 나는 + 1
종료 조건
(y * 너비 + x + i + 1) Mod 255 = 0이면
If (너비*높이 - y * 너비 - x - 1) > 255 그러면
응답.BinaryWrite ChrB(255)
또 다른
Response.BinaryWrite ChrB(너비 * 높이 모드 255)
종료 조건
종료 조건
다음
다음
응답.BinaryWrite ChrB(128) & ChrB(0) & ChrB(129) & ChrB(0) & ChrB(59)
서브 끝
수업 종료
희미한 mCode
mCode 설정 = 새 Com_GifCode_Class
세션(GetCode) = mCode.Create()
mCode.출력()
mCode = 없음 설정
%>