欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2023-11-08 14:22:28
  大家经常在网上登陆的时候经常会看到让你输入验证码,有的是文字的,有的呢是图片,比如chinaren.com校友录中留言的时候,我们就会看到数字图片验证码;网上关于数字文字验证...

  大家经常在网上登陆的时候经常会看到让你输入验证码,有的是文字的,有的呢是图片,比如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图象组件shotgraph。有一点大家注意,服务器不是自己的不能用哦,因为你装不了这组件。

  组件的下载地址:https://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普通的画图的原理请参考: