仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 517|回复: 8
打印 上一主题 下一主题

[学习教程] ASP教程之ASP程序无组件天生考证码

[复制链接]
跳转到指定楼层
楼主
发表于 2015-1-16 22:16:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
缺点:正版成本价格贵(盗版就不说了)、不够安全,大多数服务器用windows系统,没有linux安全程序|无组件|考证码  1、无组件天生考证码-GIF格局
<%
OptionExplicit显现声明
ClassCom_GifCode_Class

Author:Layensupport@ssaw.net84815733(QQ)
Thanks:Laomi,Laomiao,NetRube
2006-01-02

PublicNoisy,Count,Width,Height,Angle,Offset,Border
PrivateGraph(),Margin(3)
PrivateSubClass_Initialize()
Randomize
Noisy=16搅扰点呈现的几率
Count=4字符数目
Width=80图片宽度
Height=20图片高度
Angle=2角度随机变更量
Offset=20偏移随机变更量
Border=1边框巨细
EndSub
PublicFunctionCreate()
ConstcCharSet="123456789"
Dimi,x,y
DimvValidCode:vValidCode=""
DimvIndex
ReDimGraph(Width-1,Height-1)
Fori=0ToCount-1
vIndex=Int(Rnd*Len(cCharSet))
vValidCode=vValidCode+Mid(cCharSet,vIndex+1,1)
SetDrawvIndex,i
Next
Create=vValidCode
EndFunction
SubSetDot(pX,pY)
IfpX*(Width-pX-1)>=0AndpY*(Height-pY-1)>=0Then
Graph(pX,pY)=1
EndIf
EndSub
PublicSubSetDraw(pIndex,pNumber)
字符数据
DimDotData(8)
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)
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(255)&ChrB(255)&ChrB(255)
Response.BinaryWriteChrB(0)&ChrB(85)&ChrB(255)
图像标识符
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))
Else
Ifx*(x-Width)=0Ory*(y-Height)=0Then
Response.BinaryWriteChrB(Graph(x,y))
Else
IfGraph(x-1,y)=1OrGraph(x,y)OrGraph(x,y-1)=1Then
Response.BinaryWriteChrB(1)
Else
Response.BinaryWriteChrB(0)
EndIf
EndIf
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
SetmCode=NewCom_GifCode_Class
Session("GetCode")=mCode.Create()
mCode.Output()
SetmCode=Nothing
%>
保留成ASP文件便可瞥见效果!
  2、无组件天生考证码-BMP格局
CallCom_CreatValidCode("ValidCode")
SubCom_CreatValidCode(pSN)
Author:Layen
QQ:84815733
E-mail:support@ssaw.net
克制缓存
Response.Expires=-9999
Response.AddHeader"Pragma","no-cache"
Response.AddHeader"cache-ctrol","no-cache"
Response.ContentType="Image/BMP"
Randomize
Dimi,ii,iii
ConstcOdds=8杂点呈现的机率
ConstcAmount=36笔墨数目
ConstcCode="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
色彩的数据(字符,背景)
DimvColorData(1)
vColorData(0)=ChrB(0)&ChrB(0)&ChrB(0)蓝0,绿0,红0(玄色)
vColorData(1)=ChrB(250)&ChrB(236)&ChrB(211)蓝250,绿236,红211(浅蓝色)
随机发生字符
DimvCode(4),vCodes
Fori=0To3
vCode(i)=Int(Rnd*cAmount)
vCodes=vCodes&Mid(cCode,vCode(i)+1,1)
Next
Session(pSN)=vCodes纪录进Session
字符的数据
DimvNumberData(35)
vNumberData(0)="1110000111110111101111011110111101001011110100101111
010010111101001011110111101111011110111110000111"
vNumberData(1)="1111011111110001111111110111111111011111111101111111
110111111111011111111101111111110111111100000111"
vNumberData(2)="1110000111110111101111011110111111111011111111011111
111011111111011111111011111111011110111100000011"
vNumberData(3)="1110000111110111101111011110111111110111111100111111
111101111111111011110111101111011110111110000111"
vNumberData(4)="1111101111111110111111110011111110101111110110111111
011011111100000011111110111111111011111111000011"
vNumberData(5)="1100000011110111111111011111111101000111110011101111
111110111111111011110111101111011110111110000111"
vNumberData(6)="1111000111111011101111011111111101111111110100011111
001110111101111011110111101111011110111110000111"
vNumberData(7)="1100000011110111011111011101111111101111111110111111
110111111111011111111101111111110111111111011111"
vNumberData(8)="1110000111110111101111011110111101111011111000011111
101101111101111011110111101111011110111110000111"
vNumberData(9)="1110001111110111011111011110111101111011110111001111
100010111111111011111111101111011101111110001111"
vNumberData(10)="1111011111111101111111101011111110101111111010111111
101011111100000111110111011111011101111000100011"
vNumberData(11)="1000000111110111101111011110111101110111110000111111
011101111101111011110111101111011110111000000111"
vNumberData(12)="1110000011110111101110111110111011111111101111111110
111111111011111111101111101111011101111110001111"
vNumberData(13)="10000011111101110111110111101111011110111101111011110
11110111101111011110111101111011101111000001111"
vNumberData(14)="10000001111101111011110110111111011011111100001111110
11011111101101111110111111111011110111000000111"
vNumberData(15)="10000001111101111011110110111111011011111100001111110
11011111101101111110111111111011111111000111111"
vNumberData(16)="11100001111101110111101111011110111111111011111111101
11111111011100011101111011111011101111110001111"
vNumberData(17)="10001000111101110111110111011111011101111100000111110
11101111101110111110111011111011101111000100011"
vNumberData(18)="11000001111111011111111101111111110111111111011111111
10111111111011111111101111111110111111100000111"
vNumberData(19)="11100000111111101111111110111111111011111111101111111
11011111111101111111110111110111011111000011111"
vNumberData(20)="10001000111101110111110110111111010111111100011111110
10111111101101111110110111111011101111000100011"
vNumberData(21)="10001111111101111111110111111111011111111101111111110
11111111101111111110111111111011110111000000011"
vNumberData(22)="10001000111100100111110010011111001001111101010111110
10101111101010111110101011111010101111001010011"
vNumberData(23)="10001000111100110111110011011111010101111101010111110
10101111101100111110110011111011001111000110111"
vNumberData(24)="11100011111101110111101111101110111110111011111011101
11110111011111011101111101111011101111110001111"
vNumberData(25)="10000001111101111011110111101111011110111100000111110
11111111101111111110111111111011111111000111111"
vNumberData(26)="11100011111101110111101111101110111110111011111011101
11110111011111011101001101111011001111110001011"
vNumberData(27)="10000011111101110111110111011111011101111100001111110
10111111101101111110110111111011101111000110011"
vNumberData(28)="11100000111101111011110111101111011111111110011111111
11001111111111011110111101111011110111100000111"
vNumberData(29)="10000000111011011011111101111111110111111111011111111
10111111111011111111101111111110111111110001111"
vNumberData(30)="10001000111101110111110111011111011101111101110111110
11101111101110111110111011111011101111110001111"
vNumberData(31)="10001000111101110111110111011111011101111110101111111
01011111110101111111010111111110111111111011111"
vNumberData(32)="10010100111101010111110101011111010101111101010111110
01001111110101111111010111111101011111110101111"
vNumberData(33)="10001000111101110111111010111111101011111111011111111
10111111110101111111010111111011101111000100011"
vNumberData(34)="10001000111101110111110111011111101011111110101111111
10111111111011111111101111111110111111110001111"
vNumberData(35)="11000000111101110111111111011111111011111111101111111
10111111111011111111011111111101110111100000011"
输入图象文件头
Response.BinaryWriteChrB(66)&ChrB(77)&ChrB(230)&ChrB(4)&ChrB(0)&ChrB(0)&ChrB(0)&ChrB(0)&_
ChrB(0)&ChrB(0)&ChrB(54)&ChrB(0)&ChrB(0)&ChrB(0)&ChrB(40)&ChrB(0)&_
ChrB(0)&ChrB(0)&ChrB(40)&ChrB(0)&ChrB(0)&ChrB(0)&ChrB(10)&ChrB(0)&_
ChrB(0)&ChrB(0)&ChrB(1)&ChrB(0)
输入图象信息头
Response.BinaryWriteChrB(24)&ChrB(0)&ChrB(0)&ChrB(0)&ChrB(0)&ChrB(0)&ChrB(176)&ChrB(4)&_
ChrB(0)&ChrB(0)&ChrB(18)&ChrB(11)&ChrB(0)&ChrB(0)&ChrB(18)&ChrB(11)&_
ChrB(0)&ChrB(0)&ChrB(0)&ChrB(0)&ChrB(0)&ChrB(0)&ChrB(0)&ChrB(0)&_
ChrB(0)&ChrB(0)
Fori=9To0Step-1历经一切行
Forii=0To3历经一切字
Foriii=1To10历经一切像素
逐行、逐字、逐像素地输入图象数据
IfRnd*99+1<cOddsThen随机天生杂点
Response.BinaryWritevColorData(0)
Else
Response.BinaryWritevColorData(Mid(vNumberData(vCode(ii)),i*10+iii,1))
EndIf
Next
Next
Next
EndSub
帮助用户快速实现各种应用服务,ASP商有整合各方面资源的能力,可在短期内为用户提供所需的解决方案。例如,典型的ERP安装,如果要在客户端安装的话需要半年到二年的时间,但是美国的一些ASP商如USI和CORIO能在90—120天内提供ERP应用方案。
第二个灵魂 该用户已被删除
沙发
发表于 2015-1-19 06:30:31 | 只看该作者
另外因为asp需要使用组件,所以了解一点组件的知识(ADODB也是组件)
谁可相欹 该用户已被删除
板凳
发表于 2015-1-24 15:13:32 | 只看该作者
代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。
再现理想 该用户已被删除
地板
发表于 2015-2-1 18:13:41 | 只看该作者
掌握asp的特性而且一定要知道为什么。
5#
 楼主| 发表于 2015-2-7 13:58:05 | 只看该作者
哪些内置对象是可以跳过的,或者哪些属性和方法是用不到的?
小女巫 该用户已被删除
6#
发表于 2015-2-22 08:20:58 | 只看该作者
虽然ASP也有很多网络教程。但是这些都不系统。都是半路出家,只是从一个例子告诉你怎么用。不会深入讨论,更不会将没有出现在例子里的方法都一一列举出来。
乐观 该用户已被删除
7#
发表于 2015-3-6 23:47:41 | 只看该作者
ASP的语言不仅仅只是命令格式差不多,而是包含在<%%>之内的命令完全就是VB语法。虽然ASP也是做为单独的一个技术来提出的,但他就是完全继承了VB所有的功能。
分手快乐 该用户已被删除
8#
发表于 2015-3-13 23:08:25 | 只看该作者
Server:这个表示的服务器,操作服务器的一些东西使用这个,如Server.Mappath转换服务器路径,Server.CreateObject实例化一个组件
简单生活 该用户已被删除
9#
发表于 2015-3-20 21:35:38 | 只看该作者
我认为比较好的方法是找一些比较经典的例子,每个例子比较集中一种编程思想而设计的。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 21:33

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表