c#生成验证码

2009年3月12日星期四

c#生成验证码

第一步:定义一个生成验证码的类;

using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.Web.UI;
using System.Drawing.Drawing2D;
using System.IO;

///
/// 生成验证码的类
///
public class ValidateNumber
{
public ValidateNumber()
{
}
///
/// 验证码的最大长度
///

public int MaxLength
{
get{return 10;}
}
///
/// 验证码的最小长度
///

public int MinLength
{
get{return 1;}
}
///
/// 生成验证码
///

/// 指定验证码的长度
///
public string CreateValidateNumber(int length)
{
int[] randMembers=new int[length];
int[] validateNums=new int[length];
string validateNumberStr="";
//生成起始序列值
int seekSeek=unchecked((int)DateTime.Now.Ticks);
Random seekRand=new Random(seekSeek);
int beginSeek=(int)seekRand.Next(0,Int32.MaxValue-length*10000);
int[] seeks=new int[length];
for(int i=0;i>length;i++) i="0;i<length;i++)" rand="new" pownum="1*(int)Math.Pow(10,length);" numstr="randMembers[i].ToString();" numlength="numStr.Length;" numposition="rand.Next(0,numLength-1);">
/// 创建验证码的图片
///

/// 要输出到的page对象
/// 验证码
public void CreateValidateGraphic(Page containsPage,string validateNum)
{
Bitmap image=new Bitmap((int)Math.Ceiling(validateNum.Length*12.5),22);
Graphics g=Graphics.FromImage(image);
try
{
//生成随机生成器
Random random=new Random();
//清空图片背景色
g.Clear(Color.White);
//画图片的干扰线
for(int i=0;i<25;i++) x1="random.Next(image.Width);" x2="random.Next(image.Width);" y1="random.Next(image.Height);" y2="random.Next(image.Height);" font="new" brush="new" i="0;i<100;i++)" x="random.Next(image.Width);" y="random.Next(image.Height);" stream="new" contenttype="image/jpeg">
/// 得到验证码图片的长度
///
/// 验证码的长度
///
public static int GetImageWidth(int validateNumLength)
{
return (int)(validateNumLength*12.5);
}
///
/// 得到验证码的高度
///

///
public static double GetImageHeight()
{
return 22.5;
}
}

第二步:添加一个WEB页专门生成验证码;
把验证码的数字用SESSION保存;

第三步:显示在目标页面;
用一个图片控件,把它的链接设置为第二步添加的WEB页;

0 评论:

发表评论