验证码 是 怎么生成的,按“确定“后怎么比较是否 输入了正确 的 数字?

解决方案 »

  1.   

    是不是用随机数:
    System.Random ra = new System.Random();
    Label1.Text = ra.Next().ToString();//得到随机数
    if(Label1.Text!=TextRdm.text)//比较输入的验证码
    {}
      

  2.   

    那个是用图片做的主要用到了以下几个类,System.Drawing.Imaging
    System.Drawing.Bitmap
    System.Drawing.Graphics.DrawString(方法)
    用以上类生成图片
    //保存到内存流中(MemoryStream)
    System.IO.MemoryString stream=new System.IO.MemoryString();
    System.Drawing.Bitmap.Save(stream,Imaging.Imaging.ImageFormat.Jpeg)
    Response.ContentType="image/jpeg"
    Response.Clear()
    Response.BinaryWrite(stream.ToArray())大概就是这样了,不过有些地方还得好好看看,如DrawString这个方法,
      

  3.   

    //我做的一个实例,保存为XX.cs文件,再用XX.aspx调用Tht.test这个类就行了,
    //如:<%@page inherits="Tht.test" src="XX.cs"%>
    ///////
    using System.IO;
    using System.Drawing;
    using System.Drawing.Imaging;
    using System.Web.UI;namespace Tht
    {
    public class  test: Page
    { Random random=new Random();
    public void page_load(object source,EventArgs e)
    {
    ShowImage(800,600,"#00003F",5,"0");//
          //ShowImage(宽, 高 ,背景色,字符数,字符类型[1是数字,2是汉字,0是字母])  /////使用说明
    }//page_load
    public void ShowImage(int Image_W,int Image_H,string BgColor,int StrLength,string Type)
    {
    int FontSize=(int)(Image_W/(StrLength+0.3));
    Bitmap bitmap=new Bitmap(Image_W,Image_H,PixelFormat.Format32bppRgb);
    Graphics graphics=Graphics.FromImage(bitmap);
    graphics.FillRectangle(new SolidBrush(ColorTranslator.FromHtml(BgColor)),new Rectangle(0,0,Image_W,Image_H));
    string str=GetStr(StrLength,Type);
    string end="";
    for(int i=0;i<StrLength;i++)
    {
    if(FontSize*i<Image_W-FontSize)
    {
    end+=str[i];
    graphics.DrawString(str[i].ToString(),new Font(GetFont(),FontSize+random.Next(-3,3),FontStyle.Bold),new SolidBrush(ColorTranslator.FromHtml(GetColor())),FontSize*i,(int)((Image_H-FontSize)/3));
    }
    }
    for(int i=0;i<random.Next(3,5);i++)
    {
    graphics.DrawArc(new Pen(ColorTranslator.FromHtml(GetColor()),random.Next(1,3)),new Rectangle(random.Next(1,Image_W/3),random.Next(1,Image_H/3),random.Next(Image_W/3,Image_W+Image_W/3),random.Next(Image_H/3,Image_H+Image_H/3)),random.Next(0,360),random.Next(0,360));
    }
    Session["Num"]=end;
    MemoryStream memoryStream=new MemoryStream();
    bitmap.Save(memoryStream,ImageFormat.Jpeg);
    Response.ClearContent();
    Response.ContentType="Image/Jpeg";
    Response.BinaryWrite(memoryStream.ToArray());
    }//ShowImage
    public string GetStr(int StrLength,string Type)
    {
    string Result="";
    if(random.Next(0,10)==0)
    {
    string[] str=new string[]{"爱你一万年","好想你啊","Miss You"};
    int sub=random.Next(0,str.Length);
    for(int i=0;i<=StrLength/(str[sub].Length);i++)
    {
    Result+=str[sub];
    }
    Result.Substring(0,StrLength+random.Next(-2,2));
    }
    else
    {
    string str;
    switch(Type)
    {
    case "0":
    str="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
    break;
    case "1":
    str="1234567890";
    break;
    case "2":
    str="会说谎的是语言不说谎的是感觉而我对悲哀使我了解最爱的是谁离开我是旷世以为我太过自卑";
    break;
    default:
    str="会说谎的是语言不说谎的是感觉";
    break;
    }
    for(int i=0;i<StrLength;i++)
    {
    Result+=str[random.Next(0,str.Length-1)];
    }
    }
    return Result;
    }
    public string GetFont()
    {
    string[] Font=new string[]{"Comic Sans MS","Haettenschweiler","Lucida Sans Unicode","Lucida Console","Georgia","Georgia","GulimChe","隶书","方正舒体","方正舒体","方正舒体","楷体_GB2312","隶书","幼圆","新宋体","宋体-方正超大字符集","华文中宋","黑体","方正姚体","Arial","Arial Black","Lucida Console",};
    return Font[random.Next(0,Font.Length)];
    }
    public string GetColor()
    {
    string Result="#";
    string[] Hex=new string[]{"7","8","9","A","B","C","D","E","F"};
    for(int i=0;i<6;i++)
    {
    Result +=Hex[random.Next(0,Hex.Length)];
    }
    return Result;
    }
    }//class test
      

  4.   

    .net动态生成图片(图片上有不规则的数字).net随即生成验证码,详细例子
    http://coolhomepages.org/blog/showlog.asp?cat_id=29&log_id=579