当前位置:首页 > 网络编程 > WEB编程 > ASP.net >  ASP.Net实现验证码

 ASP.Net实现验证码

点击次数:15 次 发布日期:2008-11-26 10:59:08 作者:源代码网
源代码网推荐      原文出处:http://www.csdn.net/Develop/Read_Article.asp?Id=22618
源代码网推荐  上面是原文出处,是VB版!在评论中 cwbboy 给出了C#代码
源代码网推荐  自己参考了代码,实践了一下!OK记录一下!
源代码网推荐  生成图片的Gif.aspx文件!需要引入以下两名命名空间!
源代码网推荐  -----------------------------------start----------------------------------------------
源代码网推荐  using System.Drawing;
源代码网推荐  using System.Drawing.Imaging;
源代码网推荐  private void Page_Load(object sender, System.EventArgs e)
源代码网推荐   {
源代码网推荐   // 在此处放置用户代码以初始化页面
源代码网推荐   //RndNum是一个自定义函数
源代码网推荐   string VNum=RndNum(4); //这里的数字4代表显示的是4位的验证字符串!
源代码网推荐   Session["VNum"]=VNum;
源代码网推荐   ValidateCode(VNum);
源代码网推荐   }
源代码网推荐  //生成图像函数
源代码网推荐   private void ValidateCode(string VNum)
源代码网推荐   {
源代码网推荐   int Gheight=(int)(VNum.Length * 11.5);
源代码网推荐   //gheight为图片宽度,根据字符长度自动更改图片宽度
源代码网推荐   System.Drawing.Bitmap Img = new System.Drawing.Bitmap(Gheight,20);
源代码网推荐   Graphics g = Graphics.FromImage(Img);
源代码网推荐   g.DrawString(VNum,new System.Drawing.Font("Arial",10),new System.Drawing.SolidBrush(Color.Red),3,3);
源代码网推荐   //在矩形内绘制字串(字串,字体,画笔颜色,左上x.左上y)
源代码网推荐   System.IO.MemoryStream ms=new System.IO.MemoryStream();
源代码网推荐   Img.Save(ms,System.Drawing.Imaging.ImageFormat.Png);
源代码网推荐   Response.ClearContent(); //需要输出图象信息 要修改HTTP头
源代码网推荐   Response.ContentType="image/Png";
源代码网推荐   Response.BinaryWrite(ms.ToArray());
源代码网推荐   g.Dispose();
源代码网推荐   Img.Dispose();
源代码网推荐   Response.End();
源代码网推荐   }
源代码网推荐  
源代码网推荐  //生成随机数函数中从Vchar数组中随机抽取
源代码网推荐  //字母区分大小写
源代码网推荐  public 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,W,X,Y,Z" ;
源代码网推荐  
源代码网推荐   string[] VcArray = Vchar.Split(",") ;
源代码网推荐   string VNum = "" ;//由于字符串很短,就不用StringBuilder了
源代码网推荐   int temp = -1 ;//记录上次随机数值,尽量避免生产几个一样的随机数
源代码网推荐  
源代码网推荐   //采用一个简单的算法以保证生成随机数的不同
源代码网推荐   Random rand =new Random();
源代码网推荐   for ( int i = 1 ; i < VcodeNum+1 ; i++ )
源代码网推荐   {
源代码网推荐   if ( temp != -1)
源代码网推荐   {
源代码网推荐   rand =new Random(i*temp*unchecked((int)DateTime.Now.Ticks));
源代码网推荐   }
源代码网推荐   //int t = rand.Next(35) ;
源代码网推荐   int t=rand.Next(35);
源代码网推荐   if (temp != -1 && temp == t)
源代码网推荐   {
源代码网推荐   return RndNum( VcodeNum );
源代码网推荐   }
源代码网推荐   temp = t ;
源代码网推荐   VNum += VcArray[t];
源代码网推荐  
源代码网推荐   }
源代码网推荐   return VNum ;
源代码网推荐   }
源代码网推荐  -----------------------------------end--------------------------------------------
源代码网推荐  
源代码网推荐  下面是Login.Aspx在在调用提交按钮的响应事件中
源代码网推荐  
源代码网推荐  private void Page_Load(object sender, System.EventArgs e)
源代码网推荐   {
源代码网推荐   if(!Page.IsPostBack )
源代码网推荐   {
源代码网推荐   Session.Clear();
源代码网推荐   }
源代码网推荐   }
源代码网推荐  
源代码网推荐  public void doit(object sender, System.EventArgs e)
源代码网推荐   {
源代码网推荐   if(Page.IsValid)
源代码网推荐   {
源代码网推荐  
源代码网推荐   string VNum;
源代码网推荐   VNum=Session["VNum"].ToString();
源代码网推荐   ViewState["VNum"]=VNum;
源代码网推荐   if(this.Vcode.Text==ViewState["VNum"].ToString())
源代码网推荐   {
源代码网推荐  
源代码网推荐   Hover.Manage.CheckLogin obj=new Hover.Manage.CheckLogin();
源代码网推荐   string name=username.Text;
源代码网推荐   string password=FormsAuthentication.HashPasswordForStoringInConfigFile(pass.Text.ToString(),"md5");
源代码网推荐   if(!obj.checklogin(name,password))
源代码网推荐   {
源代码网推荐   Response.Redirect("../Error.aspx?action=Errorlogin");
源代码网推荐   Response.End();
源代码网推荐   return;
源代码网推荐   }
源代码网推荐   else
源代码网推荐   {
源代码网推荐   Session.Add("adminname",name);
源代码网推荐   Session.Add("adminpass",password);
源代码网推荐   Response.Redirect("Default.aspx");
源代码网推荐   Response.End();
源代码网推荐   return;
源代码网推荐   }
源代码网推荐  
源代码网推荐   }
源代码网推荐   else
源代码网推荐   {
源代码网推荐   Response.Write("<script>alert("请输入正确的附加码!");</script>");
源代码网推荐   }
源代码网推荐   }
源代码网推荐   }
源代码网推荐   如果提交过来的验证字符串正确就验证是否是合法用户!
源代码网推荐  否则弹出提示返回登陆页!你也可以简化此页!
源代码网推荐   if(this.Vcode.Text==ViewState["VNum"].ToString())
源代码网推荐   {
源代码网推荐   Response.Write("验证码正确");
源代码网推荐   }
源代码网推荐   else
源代码网推荐   {
源代码网推荐   Response.Write("验证码错误!");
源代码网推荐   }
源代码网推荐  
源代码网推荐    做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。
源代码网推荐


源代码网供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华