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

ASP
ASP正则表达式技巧
ASP Access实现网站计数器(访问量)
ASP新闻分页,将一篇过长的文章分页,生成静态页面
一些关于asp 购物车的想法
一个sql查询器,自动画表格填字段
ASP实现文件直接下载的代码
把网页中的(电话,qq等数字)生成图片的ASP程序
asp长文章用分页符来分页显示
Asp函数介紹(37个常用函数)
ASP中的面向对象类
分页实现方法的性能比较
asp ajax跨域提交数据
asp修改文件和文件夹的名字的代码
ASP 多关键词查询实例代码
asp被杀毒软件误删的解决方法
asp 多关键词搜索的简单实现方法
asp 根据IP地址自动判断转向分站的代码
asp dictionary对象的用法
ASP 千万级数据分页的存储过程
ASP隐藏真实文件的下载功能实现代码

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 183 ::
收藏到网摘: 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