ASP.Net实现图片的验证码

生成图片的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在在调用提交按钮的响应事件中
public void doit(object sender, System.EventArgs e)
 {
  if(Page.IsValid)
  {
  
  string VNum;
  VNum=Session["VNum"].ToString();    
  Session.Abandon();
  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("验证码错误!");
  }


 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值