asp.net 编写验证码

首先准备一个类来实现对验证码的绘制功能。

createcode.cs

  1 using System;
  2 using System.Collections.Generic;
  3 using System.Linq;
  4 using System.Web;
  5 using System.Drawing;
  6 using System.IO;
  7 using System.Configuration;
  8
  9
 10 namespace LoginProject
 11 {
 12     public class createcode
 13     {
 14         static string yanzheng = "";
 15         int length = 4;
 16         int fontsize = 25;
 17         string[] fontfamily = { "Arial Narrow", "Baskerville Old Face", "Algerian" };
 18         Color[] colors = { Color.Red, Color.Pink, Color.Plum, Color.Purple, Color.PaleTurquoise, Color.Orchid };//颜色
 19         string CodeValue = "1,2,3,4,5,6,7,8,9,0,a,b,c,d,e,f,g,h,l,i,j,k,m,n,o,p,q,r,s,t,w,q,y,u,x,z"; //值
 20         int imgwidth = 100; //图片宽
 21         int imgheight = 30; //图片高
 22         public static string YanZheng
 23         {
 24             get { return yanzheng; }
 25         }
 26         public int GetLength
 27         {
 28             get { return length; }
 29             set { length = value; }
 30         }
 31         public int FontSize
 32         {
 33             get { return fontsize; }
 34             set { fontsize = value; }
 35         }
 36         public string[] FontFamily
 37         {
 38             get { return fontfamily; }
 39             set { fontfamily = value; }
 40         }
 41         public Color[] GetColor
 42         {
 43             get { return colors; }
 44             set { colors = value; }
 45         }
 46         public string codevalue
 47         {
 48             get { return CodeValue; }
 49             set { CodeValue = value; }
 50         }
 51         public int ImaHeight
 52         {
 53             get { return imgheight; }
 54         }
 55         public int ImaWidth
 56         { get { return imgwidth; } }
 57         //产生随机字母
 58         public string createvalue()
 59         {
 60             string val = "";
 61             string[] arr = codevalue.Split(‘,‘);
 62             Random rand = new Random();
 63             for (int i = 0; i < GetLength; i++)
 64             {
 65                 int strindex = rand.Next(0, arr.Length - 1);
 66                 val = val + arr[strindex];
 67             }
 68             yanzheng = val;
 69             return val;
 70         }
 71         //绘制背景图像
 72         public void DrawImage(Bitmap map)
 73         {
 74             Random rand = new Random();
 75             for (int i = 0; i < map.Width; i++)
 76             {
 77                 for (int j = 0; j < map.Height; j++)
 78                 {
 79                     if (rand.Next(60, 90) < 80)
 80                     {
 81                         map.SetPixel(i, j, Color.Beige);
 82                     }
 83                 }
 84             }
 85         }
 86         //绘制验证码
 87         public void DrawValue(string code, Bitmap bmap)
 88         {
 89             Random rand = new Random();
 90             Graphics g = Graphics.FromImage(bmap);//获取背景图片(获取绘制器对象)
 91
 92             System.Drawing.StringFormat sF = new StringFormat();
 93             sF.Alignment = StringAlignment.Center;
 94             for (int i = 0; i < code.Length; i++)
 95             {
 96                 System.Drawing.PointF point = new PointF(i * FontSize, 2);
 97                 string cellcode = code[i].ToString();
 98                 Font F = new Font(FontFamily[rand.Next(0, 2)], FontSize, FontStyle.Italic);
 99                 g.DrawString(cellcode, F, Brushes.BlueViolet, point, sF);
100             }
101         }
102         //输出
103         public void Output(string code, HttpContext type)
104         {
105            // System.IO.MemoryStream ms = new MemoryStream();
106             type.Response.ContentType = "image/jpeg";
107             Bitmap bit = new Bitmap(ImaWidth,ImaHeight);
108             this.DrawImage(bit);
109             this.DrawValue(code, bit);
110             bit.Save(type.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
111             //ms.Close();
112             //ms = null;
113             bit.Dispose();
114             bit = null;
115         }
116     }
117 }

然后准备一个页面来接收绘制出的验证码图片,如下

yanzhengma.aspx

 1 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="yanzhengma.aspx.cs" Inherits="LoginProject.yanzhengma" %>
 2
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 4
 5 <html xmlns="http://www.w3.org/1999/xhtml">
 6 <head runat="server">
 7     <title></title>
 8 </head>
 9 <body>
10     <form id="form1" runat="server">
11     <div>
12     <asp:Image  ID="imag" Width="100px" Height="50px" runat="server" ImageUrl="~/yanzhengma.aspx"/>
13     </div>
14     </form>
15 </body>
16 </html>

yanzhengma.aspx.cs

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 using System.Web.UI;
 6 using System.Web.UI.WebControls;
 7
 8 namespace LoginProject
 9 {
10     public partial class yanzhengma : System.Web.UI.Page
11     {
12         protected void Page_Load(object sender, EventArgs e)
13         {
14             createcode code = new createcode();
15             string strcode = code.createvalue();
16             code.Output(strcode, this.Context);
17         }
18     }
19 }

如果想实现“看不清换一张”的功能则需要在另外使用一个接收页面。这个页面就是你的登陆页面代码如下

 1 <script type="text/javascript">
 2         function change() {
 3             var img = document.getElementById("Image1");
 4             img.src = img.src + ‘?‘;
 5         }
 6     </script>
 7
 8 <td class="style1">验证码</td>
 9                 <td>
10                  <asp:TextBox ID="yanzheng" runat="server" Width="150px" Height="25px"></asp:TextBox><label><img  id="Image1" style=" Width:150px; Height:30px;" src="yanzhengma.aspx" alt="看不清换一张" onclick="change()"/></label>
11                 </td>

当然还有其他的页面排版呀什么的,我就不一一写出来,就把最主要的部分写出来。

最后的效果,图片比较丑,主要还是个人的美工不好哇!

希望能帮到你哟..........

时间: 2024-10-05 14:56:02

asp.net 编写验证码的相关文章

ASP.NET图片验证码学习!

1. 新建一个Validate.aspx,然后在Validate.aspx.cs编写代码: using System;using System.Collections;using System.ComponentModel;using System.Data;using System.Web;using System.Drawing;using System.Web.SessionState;using System.Web.UI;using System.Web.UI.WebControls;

ASP.NET MVC验证码演示(Ver2)

前一版本<ASP.NET MVC验证码演示>http://www.cnblogs.com/insus/p/3622116.html,Insus.NET还是使用了Generic handler来产生一个验证码图片,这一直是Insus.NET在开发asp.net时使用的方法. 本篇Insus.NET不使用ASHX,在MVC开发就是方法多. 可以先创建一个自定义的Result,叫CaptchaResult.cs,继承ContentResult类. 在控制器中,写三个Action:ActionResu

js编写验证码

这是一个简单的js编写的验证码,自己已经亲自验证,没有问题了 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head&g

ASP.NET MVC验证码演示

我们在网站登录或理一个评论时,可以放置一个验证码(Captcha),可以为系统免去那些恶意刷新等功能. 今次Insus.NET在asp.net mvc应用程序实现与演示验证码的产生以及应用等 . 前天Insus.NET已经实现了随机产生一个字符串<在ASP.NET MVC应用程序中随机获取一个字符串>http://www.cnblogs.com/insus/p/3619224.html,稍后我们就可以使用到此方法,随机产生一个验证字符串. 在应用程序的Handlers目录下,创建一个Gener

ASP.NET mvc 验证码 (转)

ASP.net 验证码(C#) MVC http://blog.163.com/xu_shuhao/blog/static/5257748720101022697309/ 网站添加验证码,主要为防止机器人程序批量注册,或对特定的注册用户用特定程序暴力破解方式,以进行不断的登录.灌水等危害网站的操作.验证码被广泛应用在注册.登录.留言等提交信息到服务器端处理的页面中.     在ASP.NET网站中应用验证码是很容易的,网上有很多的解决方案.最近在做一个OA项目,因系统采用的ASP.NET MVC

ASP.NET生成验证码

平时我们写项目时总会有一些通用的功能,比如验证码. 下面是我小结了别人的经验,总是加上了一些自己的想法,跟大家分享,同时欢迎大家指正错误. 1.创建一个GenerateCheckCode.aspx的网页,用来生成验证码 在cs文件中的代码如下: 1 protected void Page_Load(object sender, EventArgs e) 2 { 3 string chkCode = string.Empty; 4 //颜色列表,用于验证码.噪线.噪点 5 Color[] colo

ASP.NET图形验证码的生成

效果: 调用方法: int[] r = QAPI.VerifImage.RandomList();//取得随机数种子列 string vcode = QAPI.VerifImage.CreateVCode(r, 4);//产生验证码字符 pictureBox1.Image = QAPI.VerifImage.CreateVerifImage(vcode, r, true, true, TextRenderingHint.AntiAlias);//生成 //-----ASP.NET中上面最后一句改

ASP.NET实现验证码图片

新建一个checkcode.aspx文件,页面中不用写任何东西,在代码中,Page_Load中写入如下代码: string chkCode = string.Empty;        int ix, iy;        ix = 80;        iy = 24;        //颜色列表,用于验证码.噪线.噪点          Color[] color ={ Color.Black, Color.Red, Color.Blue, Color.Green, Color.Orange

ASP.NET实现验证码

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using System.Drawing;using System.Drawing.Drawing2D;using System.IO; namespace UI._1209{    public partial class 验证码