asp.net生成简单验证码
来源:互联网 发布:微信传播数据 编辑:程序博客网 时间:2024/06/05 23:42
我是初学者,只能实现一些小小的功能,希望对于我们这样的初学者有帮助
先看一下效果图:
其实很简单的一个生成验证码的东西。
1、首先创建网站:
创建一个文件夹Handler,并添加一般处理程序Handler.ashx文件;在这里说一下ashx文件是什么。
.ashx 文件用于写web handler的。.ashx文件与.aspx文件类似,可以通过它来调用HttpHandler类,它免去了普通.aspx页面的控件解析以及页面处理的过程。其实就是带HTML和C#的混合文件。
.ashx文件适合产生供浏览器处理的、不需要回发处理的数据格式,例如用于生成动态图片、动态文本等内容。
2、编写网站Default.aspx
<body> <form id="form1" runat="server"> <div> <asp:TextBox ID="txtValidCode" runat="server"></asp:TextBox> <asp:Image ID="Image1" runat="server" AlternateText="验证码图片" Height="22px" ImageUrl="~/Handler/Handler.ashx" Width="70px" /> <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="txtValidCode" ErrorMessage="*" ForeColor="#FF3300"></asp:RequiredFieldValidator> <br /> <br /> <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="提交" /> </div> </form></body>3、handler.ashx文件代码内容:
<%@ WebHandler Language="C#" Class="Handler" %>using System;using System.Web;using System.Text;using System.Drawing;using System.Drawing.Drawing2D;using System.Drawing.Imaging;using System.Web.SessionState;//IRequiresSessionState必须加上这个接口,否则对绘画没有访问权限public class Handler : IHttpHandler,IRequiresSessionState { //处理程序默认方法,固定的,context上下文 public void ProcessRequest (HttpContext context) { string strValidCode; // 产生5位随机字符 strValidCode = this.GetValidCode(5); //将字符串保存到Session中,以便需要时进行验证 context.Session["ValidCode"] = strValidCode; //定义宽120像素,高30像素的数据定义的图像对象 Bitmap image = new Bitmap(120, 30); //绘制图片 Graphics g = Graphics.FromImage(image); try { //生成随机对象 Random random = new Random(); //清除图片背景色 g.Clear(Color.White); // 随机产生图片的背景噪线 for (int i = 0; i < 25; i++) { int x1 = random.Next(image.Width); int x2 = random.Next(image.Width); int y1 = random.Next(image.Height); int y2 = random.Next(image.Height); g.DrawLine(new Pen(Color.Silver), x1, y1, x2, y2); } //设置图片字体风格 Font font = new System.Drawing.Font("新宋体", 20, (System.Drawing.FontStyle.Bold)); //设置画笔类型 LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.Blue, Color.DarkRed, 3, true); //绘制随机字符 g.DrawString(strValidCode, font, brush, 5, 2); //绘制图片的前景噪点 g.DrawRectangle(new Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1); //建立存储区为内存的流 System.IO.MemoryStream ms = new System.IO.MemoryStream(); //将图像对象储存为内存流 image.Save(ms, ImageFormat.Gif); //清除当前缓冲区流中的所有内容 context.Response.ClearContent(); //设置输出流的MIME类型 context.Response.ContentType = "image/Gif"; //将内存流写入到输出流 context.Response.BinaryWrite(ms.ToArray()); } finally { g.Dispose(); image.Dispose(); } } public bool IsReusable { get { return false; } } private string GetValidCode(int num) { //定义要随机抽取的字符串 string strRandomCode = "ABCD1EF2GH3IJ4KL5MN6P7QR8ST9UVWXYZ"; //将定义的字符串转成字符数组 char[] chastr = strRandomCode.ToCharArray(); //定义StringBuilder对象用于存放验证码 StringBuilder sbValidCode = new StringBuilder(); //随机函数,随机抽取字符 Random rd = new Random(); for (int i = 0; i < num; i++) { //以strRandomCode的长度产生随机位置并截取该位置的字符添加到StringBuilder对象中 sbValidCode.Append(strRandomCode.Substring(rd.Next(0, strRandomCode.Length), 1)); } return sbValidCode.ToString(); }}
4、点击提交所处理的后台代码Default.aspx.cs
protected void Button1_Click(object sender, EventArgs e) { if (txtValidCode.Text.ToUpper().Equals(Session["ValidCode"].ToString().ToUpper())) { Response.Write("<script>alert('验证码输入正确!')</script>"); } else { Response.Write("<script>alert('验证码输入错误,请重新输入!')</script>"); } }
ok!
- asp.net生成简单验证码
- 很简单的ASP,ASP.Net,PHP生成验证码
- asp.net如何生成图片验证码(简单)
- asp.net如何生成图片验证码(简单)
- asp.net如何生成图片验证码(简单)
- asp.net如何生成图片验证码(简单)
- asp.net如何生成图片验证码(简单)
- asp.net如何生成图片验证码(简单)
- asp.net如何生成图片验证码(简单)
- asp.net如何生成图片验证码(简单
- asp.net如何生成图片验证码(简单)
- asp.net如何生成图片验证码(简单)
- asp.net如何生成图片验证码(简单)
- asp.net如何生成图片验证码(简单)
- asp.net如何生成图片验证码(简单)
- ASP.NET如何生成图片验证码(简单)
- asp.net如何生成图片验证码(简单)
- asp.net如何生成图片验证码(简单)
- 9种常见的Java不规范代码
- js实现单双行以不同颜色显示
- 对APU/GPU异构开发大赛的一点解释
- Java接口详解
- USACO Camelot,难题
- asp.net生成简单验证码
- nginx防止sql注入过滤
- 微信开放平台开发,下一个发财方向
- Unity3D NGUI 2D背景图片的实现
- Web应用漏洞fuzz工具 – teenage mutant ninja turtles V 1.5
- Selenium测试环境搭建
- runlooop
- UIPopoverController 非模式视图 ,好用
- 五子棋的棋盘Android版