|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
ASP是依赖组件的,能访问数据库的组件好多就有好多种,再有就是你微软的工具可是什么都要收钱的啊!统共有三个文件.解说怎样经由过程ASP天生考证码.
Asp文件:Code.Asp
数据文件:body.Fix,Head.Fix
用法:<imgsrc="code.asp">
<%OptionExplicitResponse.buffer=trueNumCodeFunctionNumCode()Response.Expires=-1Response.AddHeader"Pragma","no-cache"Response.AddHeader"cache-ctrol","no-cache"dimzNum,i,jdimAdos,Ados1RandomizetimerzNum=cint(8999*Rnd+1000)Session("GetCode")=zNumdimzimg(4),NStrNStr=cstr(zNum)Fori=0to3zimg(i)=cint(mid(NStr,i+1,1))NextdimPossetAdos=Server.CreateObject("Adodb.Stream")Ados.Mode=3Ados.Type=1Ados.OpensetAdos1=Server.CreateObject("Adodb.Stream")Ados1.Mode=3Ados1.Type=1Ados1.OpenAdos.LoadFromFile(Server.mappath("body.Fix"))Ados1.writeAdos.read(1280)fori=0to3Ados.Position=(9-zimg(i))*320Ados1.Position=i*320Ados1.writeados.read(320)nextAdos.LoadFromFile(Server.mappath("head.fix"))Pos=lenb(Ados.read())Ados.Position=Posfori=0to9step1forj=0to3Ados1.Position=i*32+j*320Ados.Position=Pos+30*j+i*120Ados.writeados1.read(30)nextnextResponse.ContentType="image/BMP"Ados.Position=0Response.BinaryWriteAdos.read()Ados.Close:setAdos=nothingAdos1.Close:setAdos1=nothingEndFunctionAspcodeCreatedbyBlueIdea.COMWebTeamV372003-7-25%>
代码注释:
Response.buffer=true
NumCode
FunctionNumCode()
Response.Expires=-1
Response.AddHeader"Pragma","no-cache"
Response.AddHeader"cache-ctrol","no-cache"
dimzNum,i,j
dimAdos,Ados1
Randomizetimer
天生随机四位数字:
zNum=cint(8999*Rnd+1000)
传送给session
Session("GetCode")=zNum
该for轮回是将随机数字放进一个下标3的数组,便于供应给前面的阵列变更
dimzimg(3),NStr
NStr=cstr(zNum)
Fori=0to3
zimg(i)=cint(mid(NStr,i+1,1))
Next
dimPos
界说二个ADODB.Streambinary工具,作图象数据操纵之用:
setAdos=Server.CreateObject("Adodb.Stream")
Ados.Mode=3
Ados.Type=1
Ados.Open
setAdos1=Server.CreateObject("Adodb.Stream")
Ados1.Mode=3
Ados1.Type=1
Ados1.Open
载进0~9的数字数据10x100的,Gbr的阵列数据,每一个320字节,10个数字3200byte
BGR一个点,10x10个点一个数字,一个点三个字节(二进制8位,16进制00~FF)
一行10个点30字节+行停止标志0000二字节32字节,以是一个10x100宽小于长的图象每一个数字10x10是320字节
长年夜于宽的则无行停止标志0000,间接是300字节
这些就是BMP24bit的数据具体信息了
‘至于头部,也很复杂,包括长宽,图象入手下手标志等等~~才54字节,远没jpg甚么的庞大
Ados.LoadFromFile(Server.mappath("body.Fix"))
Ados1.writeAdos.read(1280)
第一个for轮回,按天生的随机数字按次从10X100的数字阵列中提掏出响应的四个数字
可是竖排的数字阵列
fori=0to3
Ados.Position=(9-zimg(i))*320
Ados1.Position=i*320
Ados1.writeados.read(320)
next
清空已用完的ADOS的数据,调进交换新的图象头54字节的头文件
Ados.LoadFromFile(Server.mappath("head.fix"))
Pos=lenb(Ados.read())
Ados.Position=Pos
指定Pos地位,便可再偏移54字节的地位增加图形数据
第二个for轮回,举行数字的阵列变更,由竖排的块转换为横排的数字块
办法是隔320字节抽取4次30字节写进ados工具,再抽取偏移第二行的图象数据
30字节是由于bmp严惩于长时无0000的行停止标志
以下为援用的内容:
fori=0to9step1
forj=0to3
Ados1.Position=i*32+j*320
Ados.Position=Pos+30*j+i*120
Ados.writeados1.read(30)
next
next
Ados.Position=0
response.BinaryWrite间接向客户端发送图象数据
Response.ContentType="image/BMP"
Response.BinaryWriteAdos.read()
Ados.Close:setAdos=nothing
Ados1.Close:setAdos1=nothing
EndFunction
使用filesystemobject,可以对服务器上的文件进行操作,浏览、复制、移动、删除等。有ado的支持,asp对数据库的操作非常得心应手。你甚至可以像使用本地数据库那样,管理远程主机上的数据库,对表格、记录进行各种操作。 |
|