ASP.NET中如何使用验证码效验

主要功能:

  * 生成验证码

  * 效验验证码

  基本原理:

  根据一定的规则生成随机的5为字符(由0—9的数字和A—Z的字母组成),并写入Session。验证的时候再从Session中取出进行比较。

  前提知识:

  关于ashx文件

  本质:缺少html文件的asp教程x文件。

  使用场景:

  适合生成动态的图像或文本。

  ashx输出作为页面元素img的背景(属性src的值,eg:<img src="../Handler/WaterMark.ashx" id="vimg" alt="" onclick="change()" />)

  .ashx文件有个缺点,他处理控件的回发事件非常麻烦,比如说如果用它来生成DataGrid的列表也不是不行,但是处理数据的回发,需要一些.aspx页的功能,只有自己手动处理这些功能。所以,一般使用.ashx,用来输出一些不需要回发处理的项目即可。

  程序设计

  1 <%@ WebHandler Language="C#" Class="WaterMark" %>

  2

  3 using System;

  4 using System.Web;

  5 using System.Drawing;

  6 using System.Drawing.Drawing2D;

  7 using System.Web.SessionState;

  8

  9 public class WaterMark : IHttpHandler,IRequiresSessionState{

  10     //使用Session时必须实现IRequiresSessionState接口,并引入命名空间System.Web.SessionState

  11     public void ProcessRequest (HttpContext context) {

  12         string checkCode = GenCode(5);

  13         context.Session["Code"] = checkCode;

  14         System.Drawing.Bitmap image = new System.Drawing.Bitmap(70, 22);

  15         Graphics g = Graphics.FromImage(image);

  16         try

  17         {

  18             Random random = new Random();

  19

  20             g.Clear(Color.White);

  21

  22             int i;

  23             for (i = 0; i < 25; i++)

  24             {

  25                 int x1 = random.Next(image.Width);

  26                 int x2 = random.Next(image.Width);

  27                 int y1 = random.Next(image.Height);

  28                 int y2 = random.Next(image.Height);

  29       g.DrawLine(new Pen(Color.Silver), x1, y1, x2, y2);

 

  30             }

  31

  

  32             Font font = new System.Drawing.Font("Arial", 12, (System.Drawing.FontStyle.Bold));

  33             System.Drawing.Drawing2D.LinearGradientBrush brush = new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.Blue, Color.DarkRed, 1.2F, true);

  34             g.DrawString(checkCode, font, brush, 2, 2);

  35

  36             g.DrawRectangle(new Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1);

  37             System.IO.MemoryStream ms = new System.IO.MemoryStream();

  38             image.Save(ms, System.Drawing.Imaging.ImageFormat.Png);

  39             context.Response.ClearContent();

  40             context.Response.ContentType = "image/png";

  41             context.Response.BinaryWrite(ms.ToArray());

  42         }

  43         finally {

  44             g.Dispose();

  45             image.Dispose();

  46         }

  47     }

  48

  49     //产生随机字符串

  50     private string GenCode(int num) {

  51         string str = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";

  52         char[] chastr = str.ToCharArray();

  53         string code = "";

  54         Random rd = new Random();

  55         int i;

  56         for (i = 0; i < num;i++ )

  57         {

  58             code += str.Substring(rd.Next(0, str.Length), 1);

  59         }

  60         return code;

  61     }

  62     public bool IsReusable {

  63         get {

  64             return false;

  65         }

  66     }

  67

  68 }ASP.NET中如何使用验证码效验

时间: 2024-10-29 01:28:34

ASP.NET中如何使用验证码效验的相关文章

ASP.NET中的输入验证之服器端验证

在ASP.NET平台下.用户可以使用控件和正则表达式在服务器端实现输入验证,相对来说验证控件使 用简单 且能满足大部分需求 但说句实话 偶对这些东东是不敢恭维 Microsoft Visual Studio验证控件 既是客户端验证又是服务器端验证 当我们触发验证 就会自动生 成很多客户端脚本 如果我们单击按扭不但要触发验证 还要写一些其它的脚本 验证将可能失效 在项目 中为了防止这类意外发生 有人提了用客户端验证 但是敲过代码的都晓得客户端不安全 所以只有先服务 器端验证有时间再加个客户端验证咯

ASP.NET中如何对页面输出缓存

  最简单的缓存机制,把整个Aspx页面保存在服务器端内存中,用户请求页面时,直接从服务器端内存中提取数数据,不在经历页面的生命周期.主要用于不经常更新和修改,而在第一次编译是时要经过大量处理的数据.页面输出缓存是缓存的整个页面.     使用很简单<%@ OutPutCache Duration="60" VaryByParam="none"%>     Duration:缓存时间     VaryByParam:通过参数来更新缓存的内容     还有

asp中使用图片验证码的方法

验证码 作者:Loster(OICQ:181306) 如果转载,请勿去掉此行,谢谢. 现在许多网站的登陆都需要输入验证码,验证码一般都是以图片的形式显示的.这样一来,能提高登陆的安全性,防止暴力猜解密码.为何要用图片显示验证码?试想,如果只是生成文本的验证码,破解人可以利用类似于小偷的技术,先把你这个页面读取,然后分析出验证码,最后进行暴力猜解.这样的话,验证码就没有任何实际意义了.废话少说,下面我就开始说一说怎样实现asp中显示图片验证码. 要实现asp中显示图片验证码,首先需要以下三个文件:

ASP网页开发过程中的几个小技巧

过程|技巧|网页 摘要:本文介绍了用ASP进行网页设计过程中的几个小技巧,包括新闻栏的创建和自动更新,以及公告栏的创建.使用和维护.指明了解决此类问题的大致方法. Abstract: We introduce several tricks when using Active Server Pages to design homepages. These include the creation and automatic updating of news columns, as well as

asp.net程序中最常用的三十三种编程代码

asp.net|编程|程序 asp.net程序中最常用的三十三种编程代码,为初学者多多积累经验,为高手们归纳总结,看了觉得很有价值~,大家不妨参考下!  1. 打开新的窗口并传送参数:   传送参数:  response.write("<script>window.open('*.aspx?id="+this.DropDownList1.SelectIndex+"&id1="+...+"')</script>") 

在ASP.NET页面中实现数据棒图

asp.net|数据|页面     棒图有时又称为"Bar"图.在我的上一篇文章<在ASP.net实现数据图表>中已经介绍了在浏览器看到的图表,一般都是图片文件.那么在ASP.NET中是否也可以生成这些图表?答案是肯定的,因为在ASP.NET中拥有了一个新功能--绘图功能,通过此功能就能够按照要实现的图表的模样来绘制,最后在客户端的浏览器中形成一个图片,从而显示出图表来.        本文就在上一篇文章的基础上,进一步介绍在ASP.NET页面中实现Bar图的具体方法.希望

在ASP.NET页面中实现数据饼图

在<在ASP.NET页面中实现数据棒图>中已经介绍了ASP.NET中数据棒图的绘制方法.前文已经说过,ASP.NET之所以能够在客户端浏览器中形成各种数据图片,是因为在ASP.NET中提供了绘图功能,具体的作法是先在服务器端创建一个Bitmap实例,然后利用ASP.NET中提供的绘图功能,按照要生成的图片的模样,进行绘制,最后把绘制好的实例以数据流的方式传送到客户端的浏览器上,并形成图片显示出来.本文要介绍的在ASP.NET页面中实现数据饼图采用的基本也是这种方法.饼图有时称为"Pi

ASP.NET程序中常用编程代码

ASP.NET程序中常用编程代码 1.为按钮添加确认对话框 Button1.Attributes.Add("onclick","return confirm('确认?')");button.attributes.add("onclick","if(confirm('are you sure...?')){return true;}else{return false;}") 2.删除表格选定记录 //获得DataGrid主键in

ASP.NET/C#中如何调用动态链接库DLL_实用技巧

动态链接库(也称为DLL,即为"Dynamic Link Library"的缩写)是Microsoft Windows最重要的组成要素之一,打开Windows系统文件夹,你会发现文件夹中有很多DLL文件,Windows就是将一些主要的系统功能以DLL模块的形式实现. 动态链接库是不能直接执行的,也不能接收消息,它只是一个独立的文件,其中包含能被程序或其它DLL调用来完成一定操作的函数(方法.注:C#中一般称为"方法"),但这些函数不是执行程序本身的一部分,而是根据进