在Z-BLOG可用的新版ASP的GIF验证码[V70404]_ASP教程-查字典教程网
在Z-BLOG可用的新版ASP的GIF验证码[V70404]
在Z-BLOG可用的新版ASP的GIF验证码[V70404]
发布时间:2016-12-29 来源:查字典编辑
摘要:复制下面代码,存为c_validcode.asp上传到function下就可以了复制代码代码如下:=0AndpY*(Height-pY-1)...

复制下面代码,存为c_validcode.asp上传到function下就可以了

复制代码 代码如下:

<%@CODEPAGE=65001%>

<%

'///////////////////////////////////////////////////////////////////////////////

'//Z-Blog

'//作者:朱煊(zx.asd),sipo

'//版权所有:RainbowSoftStudio

'//技术支持:rainbowsoft@163.com

'//单元名称:c_validcode.asp

'//开始时间:2007-4-4

'//最后修改:2007-4-4

'//备注:www.dc9.cn

'///////////////////////////////////////////////////////////////////////////////

%>

<%OptionExplicit%>

<%OnErrorResumeNext%>

<>

<>

<%

'.VerifyCodeGetVerifyNumber,False

ClassCom_GifCode_Class

PublicNoisy,Count,Width,Height,Angle,Offset,Border

PrivateGraph(),Margin(3)

PrivateSubClass_Initialize()

Randomize

Noisy=7'干扰点出现的概率

Count=5'字符数量

Width=60'图片宽度

Height=20'图片高度

Angle=3'角度随机变化量

Offset=10'偏移随机变化量

Border=2'边框大小

EndSub

PublicFunctionCreate(str)

Dimi

DimvIndex

ReDimGraph(Width-1,Height-1)

Fori=0ToCount-1

vIndex=CInt(Mid(str,i+1,1)-1)

SetDrawvIndex,i

Next

EndFunction

SubSetDot(pX,pY)

IfpX*(Width-pX-1)>=0AndpY*(Height-pY-1)>=0Then

Graph(pX,pY)=1

EndIf

EndSub

PublicSubSetDraw(pIndex,pNumber)

'字符数据字典

IfpIndex=-1ThenpIndex=9

DimDotData(9)

DotData(0)=Array(30,15,50,1,50,100)

DotData(1)=Array(1,34,30,1,71,1,100,34,1,100,93,100,100,86)

DotData(2)=Array(1,1,100,1,42,42,100,70,50,100,1,70)

DotData(3)=Array(100,73,6,73,75,6,75,100)

DotData(4)=Array(100,1,1,1,1,50,50,35,100,55,100,80,50,100,1,95)

DotData(5)=Array(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)=Array(6,26,6,6,100,6,53,100)

DotData(7)=Array(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)=Array(1,80,30,100,80,100,100,70,100,20,70,1,30,1,1,20,1,40,30,50,70,50,100,40)

DotData(9)=Array(100,20,70,1,20,1,1,30,1,80,30,100,70,100,100,80,100,60,90,20,80,3)

DimvExtent:vExtent=Width/Count

Margin(0)=Border+vExtent*(Rnd*Offset)/100+Margin(1)

Margin(1)=vExtent*(pNumber+1)-Border-vExtent*(Rnd*Offset)/100

Margin(2)=Border+Height*(Rnd*Offset)/100

Margin(3)=Height-Border-Height*(Rnd*Offset)/100

DimvStartX,vEndX,vStartY,vEndY

DimvWidth,vHeight,vDX,vDY,vDeltaT

DimvAngle,vLength

vWidth=Int(Margin(1)-Margin(0))

vHeight=Int(Margin(3)-Margin(2))

vStartX=Int((DotData(pIndex)(0)-1)*vWidth/100)

vStartY=Int((DotData(pIndex)(1)-1)*vHeight/100)

Dimi,j

Fori=1ToUBound(DotData(pIndex),1)/2

IfDotData(pIndex)(2*i-2)<>0AndDotData(pIndex)(2*i)<>0Then

vEndX=(DotData(pIndex)(2*i)-1)*vWidth/100

vEndY=(DotData(pIndex)(2*i+1)-1)*vHeight/100

vDX=vEndX-vStartX

vDY=vEndY-vStartY

IfvDX=0Then

vAngle=Sgn(vDY)*3.14/2

Else

vAngle=Atn(vDY/vDX)

EndIf

IfSin(vAngle)=0Then

vLength=vDX

Else

vLength=vDY/Sin(vAngle)

EndIf

vAngle=vAngle+(Rnd-0.5)*2*Angle*3.14*2/100

vDX=Int(Cos(vAngle)*vLength)

vDY=Int(Sin(vAngle)*vLength)

IfAbs(vDX)>Abs(vDY)ThenvDeltaT=Abs(vDX)ElsevDeltaT=Abs(vDY)

Forj=1TovDeltaT

SetDotMargin(0)+vStartX+j*vDX/vDeltaT,Margin(2)+vStartY+j*vDY/vDeltaT

Next

vStartX=vStartX+vDX

vStartY=vStartY+vDY

EndIf

Next

EndSub

PublicSubOutput()

Response.Expires=-9999

Response.AddHeader"pragma","no-cache"

Response.AddHeader"cache-ctrol","no-cache"

Response.ContentType="image/gif"

Response.BinaryWriteChrB(Asc("G"))&ChrB(Asc("I"))&ChrB(Asc("F"))

Response.BinaryWriteChrB(Asc("8"))&ChrB(Asc("9"))&ChrB(Asc("a"))

Response.BinaryWriteChrB(WidthMod256)&ChrB((Width256)Mod256)

Response.BinaryWriteChrB(HeightMod256)&ChrB((Height256)Mod256)

Response.BinaryWriteChrB(128)&ChrB(0)&ChrB(0)

Response.BinaryWriteChrB(250)&ChrB(250)&ChrB(250)

Response.BinaryWriteChrB(0)&ChrB(0)&ChrB(0)

Response.BinaryWriteChrB(Asc(","))

Response.BinaryWriteChrB(0)&ChrB(0)&ChrB(0)&ChrB(0)

Response.BinaryWriteChrB(WidthMod256)&ChrB((Width256)Mod256)

Response.BinaryWriteChrB(HeightMod256)&ChrB((Height256)Mod256)

Response.BinaryWriteChrB(0)&ChrB(7)&ChrB(255)

Dimx,y,i:i=0

Fory=0ToHeight-1

Forx=0ToWidth-1

IfRnd<Noisy/100Then

Response.BinaryWriteChrB(1-Graph(x,y))

ElseIfx*(x-Width)=0Ory*(y-Height)=0Then

Response.BinaryWriteChrB(Graph(x,y))

ElseIfGraph(x-1,y)=1OrGraph(x,y)OrGraph(x,y-1)=1Then

Response.BinaryWriteChrB(1)

Else

Response.BinaryWriteChrB(0)

EndIf

If(y*Width+x+1)Mod126=0Then

Response.BinaryWriteChrB(128)

i=i+1

EndIf

If(y*Width+x+i+1)Mod255=0Then

If(Width*Height-y*Width-x-1)>255Then

Response.BinaryWriteChrB(255)

Else

Response.BinaryWriteChrB(Width*HeightMod255)

EndIf

EndIf

Next

Next

Response.BinaryWriteChrB(128)&ChrB(0)&ChrB(129)&ChrB(0)&ChrB(59)

EndSub

EndClass

DimmCode

Dimcode

SetmCode=NewCom_GifCode_Class

mCode.Create(GetVerifyNumber)

mCode.Output()

SetmCode=Nothing

%>

由于原验证码过于简单,导致zblogger们饱受垃圾评论与引用之苦,下一版本将集成该验证码。

该验证码是根据网络上流传的一个源代码修改而来。

另,近期新的反垃圾评论与引用工具将与大家见面。

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新ASP教程学习
    热门ASP教程学习
    编程开发子分类