ASP教程之ASP天生考证码具体教程
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对数据库的操作非常得心应手。你甚至可以像使用本地数据库那样,管理远程主机上的数据库,对表格、记录进行各种操作。 哪些内置对象是可以跳过的,或者哪些属性和方法是用不到的? ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp),它可以看作是VC和Java的混合体吧。 如何学好ASP,以前也有人问过,把回答给你转过来看看能否对你有帮助: 他的语法和设计思路和VB完全相同,导致很多ASP的书都留一句“相关内容请参考VB的相关教材....”更糟糕的是,相当多的ASP教程混合了Javascript,VBscript等等脚本语言,搞的初学者。 弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。 我就感觉到ASP和一些常用的数据库编程以及软件工程方面的思想是非常重要的。我现在也在尝试自己做网页,这其中就用到了ASP,我想它的作用是可想而知的。 用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。 我认为比较好的方法是找一些比较经典的例子,每个例子比较集中一种编程思想而设计的。
页:
[1]