当前位置: 首页 > 图文教程 > 网络编程 > ASP > 数字和字母组合并生成图片的验证码祥解

ASP
对连串英文自动换行的解决方法 IE5.5
怎样写你自己的EMAIL组件(原理)
ASP中有关timeout超时的体会
用ASP实现从SQL Server导出数据到Access
ASP向NT域中加一个用户
ASP乱码的解决方法
关于 aspsmartupload 注册问题
利用XML不离开页面刷新数据
IIS 处理 SEARCH 请求漏洞
不用组件实现上载功能(1)
不用组件实现上载功能(2)
在网页中实现OICQ里的头像选择的下拉框
仅用xsl和asp实现分页功能
如何使用context()方法将数据置入表格(XML)
利用ASP从远程服务器上接收XML数据
将数据库里面的内容生成EXCEL
怎样在ASP里面创建统计图表
加密你的Access数据库
利用global.asp定时执行ASP
加密QueryString数据

ASP 中的 数字和字母组合并生成图片的验证码祥解


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 77 ::
收藏到网摘: n/a

 

  大家经常在网上登陆的时候经常会看到让你输入验证码,有的是文字的,有的呢是图片,比如chinaren.com校友录中留言的时候,我们就会看到数字图片验证码;网上关于数字文字验证码实现方法的相关资料很多,而我们这里介绍的是数字和字母随机组成的并且生成图片的验证码的实现方法。看起来很复杂、其实很简单的,大家跟着我往下看:

  首先,我们先介绍一下设计思路,数字和字母的随机组合生成验证码,然后将验证码生成图片,这里“数字和字母的组合”应该是随机取出来的;如果是专门的数字验证码,我们可以这样实现:

  ycodenum=4 '验证码的位数,或者说成个数
  for i=1 to ycodenum
    Randomize '初始化随机数发生器
    ycode=ycode&Int((9*Rnd)) 'rnd是随机数,从0到1之间的任意实数,这里获得0到9之间的整数
  next

  response.write ycode '就可以输出数字验证码(4位)

  然而,我们要让数字和字母同样随机生成,这里我们可以用到数组来实现这种效果,如下:

  ychar="0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z" '将数字和大写字母组成一个字符串
  yc=split(char,",") '将字符串生成数组
  ycodenum=4
  for i=1 to ycodenum
    Randomize
    ycode=ycode&yc(Int((35*Rnd))) '数组一般从0开始读取,所以这里为35*Rnd
  next

  response.write ycode
  
  现在看看输出结果是不是数字和字母随机组合的呢?

  下面看看怎样生成图片,这个也许有些朋友知道:asp不能生成图片,必须使用asp组件。不错,我们这里使用的是ASP图象组件shotgraph。有一点大家注意,服务器不是自己的不能用哦,因为你装不了这组件。

  组件的下载地址:http://www.knowsky.com/download/ShotGraph.rar,至于怎么注册,这里就不多说了,网上有很多资料

  我们看看生成图片的代码:

  ychar="0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z" '将数字和大写字母组成一个字符串
  yc=split(char,",") '将字符串生成数组
  ycodenum=4
  for i=1 to ycodenum
    Randomize
    ycode=ycode&yc(Int((35*Rnd))) '数组一般从0开始读取,所以这里为35*Rnd
  next

  Response.Clear
  Response.ContentType="image/gif"
  set obj=Server.CreateObject("shotgraph.image")
  x=55 '图片的宽
  y=26 '图片的高
  obj.CreateImage x,y,8 '8是图片的颜色8位
  obj.SetColor 0,55,126,222
  obj.SetColor 1,255,255,255

  obj.CreatePen "PS_SOLID",1,0
  obj.SetBgColor 0
  obj.Rectangle 0,0,x-1,y-1
  obj.SetBkMode "TRANSPARENT"
  obj.CreateFont "Arial",136,18,1,False,False,False,False
  obj.SetTextColor 1
  obj.TextOut 5,4,ycode&" "

  img=obj.GifImage(-1,1,"")
  Response.BinaryWrite (img)

  针对以上代码也就是说shotgraph普通的画图的原理请参考:http://www.pconline.com.cn/pcedu/empolder/wz/asp/10204/45207.html