自己动手做验证码 .net

   今天学了下如何做验证码。

   下面说下简单的步骤

1.   新建一个validate.ashx页面,把 ProcessRequest(HttpContext context)的函数体换成一下内容。

            context.Response.ContentType = "image/jpeg";

            using (System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(100, 40))

            {

                using (System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap))

                {

                    Random rand = new Random();

                    int code = rand.Next(1000, 9999);

                    string strCode=code.ToString();

                    // 如果要让一般处理程序使用Session,必须实现System.Web.SessionState.IRequiresSessionState接口

                    HttpContext.Current.Session["code"]=strCode;

                    g.DrawString(strCode,new System.Drawing.Font("宋体",30),System.Drawing.Brushes.Green,new System.Drawing.PointF(0,0));

                    System.Drawing.Pen pen = (System.Drawing.Pen)System.Drawing.Pens.Red.Clone();

                    g.DrawLine(pen, new System.Drawing.Point(10, 10), new System.Drawing.Point(20, 20));

                    bitmap.Save(context.Response.OutputStream,System.Drawing.Imaging.ImageFormat.Jpeg);

                }

            }

 

上面代码主要用了点GUI的知识,不必深入研究,略知即可。

 

2.  新建一个Validate.aspx页面,然后再其中<div></div>中,添加一个<img />,使其src属性为第一步中所建页面名称。 如果

     想要点击下图片就换一下验证码的话,就可以为<img />加上一个onclick事件使其重新指向第一步中所建页面。    

     οnclick="this.src='validate.ashx'"

 

3.  然后运行下第二步中所建页面,就能看到效果。接着在Validate.aspx中添加一个TextBox和一个Button,Button的click响

    应函数体如下:

            string txtVal = txtValidate.Text;

            if (Session["code"].ToString() == txtVal)

            {

                Response.Write("登录成功!");

            }

            else

            {

                Response.Write("登录失败!");

            }

4. 好了,结束了。可以运行下Validate.aspx页面,查看下效果。简单吧?但是有个问题,你试一试就知道了。

 

5. 其实上面还是有个问题的。<img /> onclick事件中,我们把this.src重新赋值为validate.ashx,原本是想让它重新向服务器请求,

    服务器重新生成一个验证码显示。但是关键是,我们传过去的仍然是validate.ashx这个页面,当服务器检测到传来的页面还是原

    来的页面时,它并不会对此作出响应。所以我们上面所做的验证码仍然无法实现点击下就切换这个效果。对此问题有个方法可以解决。

    就是在validate.ashx传给服务器时我们给加上一些参数,但是参数得每次都不一样。根据这个思路,可以js中的随机数来产生参数,

    也可以用个时间函数解决问题。我就用个时间函数解决了,图个方便而已。把<img /> onclick事件改成"this.src='validate.ashx?    

    aaa='+new Date()"。 OK,最终结果出来了。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值