用Session实现验证码

Posted 叶祖辉

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用Session实现验证码相关的知识,希望对你有一定的参考价值。

新建一个 ashx 一般处理程序 如: YZM.ashx
继承接口 IRequiresSessionState //在一般处理程序里面继承

HttpContext context 
为请求上下文,包含此次请求处理要使用到的信息和对象都在里面,有Response,有Request


下面为 YZM.ashx网页内容:

技术分享
public class YZM : IHttpHandler,System.Web.SessionState.IRequiresSessionState {  
 public void ProcessRequest (HttpContext context) {
    context.Response.ContentType = "image/JPEG";  //设置格式为 图片
     using (System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(55, 25))  //新建一张图片,设置宽度与高度
     { 
       using (System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap))
        {
          Random rand = new Random();         //创建一个 随机数类
          int code = rand.Next(1000, 9999);   //获得一个随机数,指定范围
          string strCode = code.ToString();
          HttpContext.Current.Session["Code"] = strCode;  //将随机数赋值给 Session
          g.DrawString(strCode,new System.Drawing.Font("宋体",15),System.Drawing.Brushes.Red,new System.Drawing.PointF(0,0));                //利用随机数创建一个图片,设置大小,颜色
          bitmap.Save(context.Response.OutputStream,System.Drawing.Imaging.ImageFormat.Jpeg);  
                               //保存图片并输出
            }
        }
    }
技术分享

下面为WEB页面的代码内容:

技术分享
  protected void Button1_Click(object sender, EventArgs e)
    {
        string code =Convert.ToString( Session["Code"]);  //得到Session值,验证码值 
        if (code == TextBox3.Text)              //判断验证码
        {
            if (TextBox1.Text == "admin" && TextBox2.Text == "gao")
            {
                Label1.Text = "登录成功";
            }
            else
            {
                Label1.Text = "登录失败";
            }
        }
        else
        {
            Label1.Text = "验证码错误!";
        }
    }
技术分享

下面为WEB页面的设计内容:

<img  src="YZM.ashx" />    //插入验证码

 




以上是关于用Session实现验证码的主要内容,如果未能解决你的问题,请参考以下文章

用Session实现验证码

Java实现登录验证码

使用session实现一次性验证码

绕过session验证码实现批量登录注册

php 总结(13) 验证码实现原理

javascript如何验证session中的验证码?