Topic: 怎样做随机生成验证码!

ERP俱乐部

第 1 页 总共 1 页 [共有 2 条记录]


Posted by 半神 on 2008-12-20 09:40 下午

到网上收一个第三方控件,控件名是:WebValidates.dll.
编码思路:
1、首先生成一个随机字符串。
2、然后将随机字符 串保存进session或者cookie中。用于输入时比较。
3、然后将随机字符画在图片中,最后将图片保存在流中。就可以了。 
   protected void Page_Load(object sender, EventArgs e)
    {
       
string tmp = RndNum(4);
        HttpCookie a
= new HttpCookie("ImageV", tmp);
        Response.Cookies.Add(a);
       
this.ValidateCode(tmp);

    }
   
//将生成的随机数画图并保存在输出流中
    private void ValidateCode(string VNum)
    {
       
int gwidth = VNum.Length * 12;
       
//定义一个位图,并设置高和宽
        Bitmap Img = new Bitmap(gwidth, 25);
       
//定义一个画布
        Graphics g = Graphics.FromImage(Img);
       
//背景颜色
        g.Clear(Color.LightSteelBlue);
       
//文字字体
        Font f = new Font("Arial Black", 10);
       
//文字颜色
        SolidBrush s = new SolidBrush(Color.RoyalBlue);
       
//将vnum画在位图中
        g.DrawString(VNum, f, s, 3, 3);

       
//定义输出类型
        Response.ContentType = "image/jpeg";
       
//将位图保存在输出流中
        Img.Save(Response.OutputStream, ImageFormat.Jpeg);
        Img.Dispose();
        Response.End();
    }

   
/// <summary>
   
/// 生成四位随机数
   
/// </summary>
   
/// <param name="VcodeNum"></param>
   
/// <returns></returns>
    private string RndNum(int VcodeNum)
    {
       
string Vchar = "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";
       
string[] VcArray = Vchar.Split(',');
       
string VNum = "";

        Random rand
= new Random(DateTime.Now.Millisecond);

       
for (int i = 0; i < VcodeNum; i++)
        {
           
int t = rand.Next(35);
            VNum
+= VcArray[t];
        }
       
return VNum;
    }

//在其他页面调用时,只需要<img src="页面的路径"/>


Posted by cdplayer on 2009-07-16 07:53 下午
学习