最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

ASP.NET生成图形验证码的方法详解

来源:动视网 责编:小采 时间:2020-11-27 22:37:25
文档

ASP.NET生成图形验证码的方法详解

ASP.NET生成图形验证码的方法详解:本文实例讲述了ASP.NET生成图形验证码的方法。分享给大家供大家参考,具体如下: 通常生成一个图形验证码主要 有3个步骤: (1)随机产生一个长度为N的随机字符串,N的值可由开发可由开发人员自行设置。该字符串可以包含数字、字母等。 (2)将随机生成的字符
推荐度:
导读ASP.NET生成图形验证码的方法详解:本文实例讲述了ASP.NET生成图形验证码的方法。分享给大家供大家参考,具体如下: 通常生成一个图形验证码主要 有3个步骤: (1)随机产生一个长度为N的随机字符串,N的值可由开发可由开发人员自行设置。该字符串可以包含数字、字母等。 (2)将随机生成的字符


本文实例讲述了ASP.NET生成图形验证码的方法。分享给大家供大家参考,具体如下:

通常生成一个图形验证码主要 有3个步骤:

(1)随机产生一个长度为N的随机字符串,N的值可由开发可由开发人员自行设置。该字符串可以包含数字、字母等。
(2)将随机生成的字符串创建成图片,并显示。
(3)保存验证码。

新建一个页面为default.aspx,  放置一个TextBox控件和一个Image控件,TextBox控件用于输入生成的字符串,Image控件用于显示字符串,它的图片就为生成的图形验证码imageUrl=“/default.aspx”;

default.aspx页面的源代码为:

<form id="form1" runat="server">
 <div>
 <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
 <asp:Image ID="Image1" imageUrl=“/default.aspx” runat="server" />
 </div>
</form>

图形验证码的代码为:

using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Drawing;
public partial class _Default : System.Web.UI.Page 
{
 protected void Page_Load(object sender, EventArgs e)
 {
 if (!IsPostBack)
 {
 string validateNum = CreateRandomNum(4);
 CreateImage(validateNum);
 Session["ValidateNum"] = validateNum;
 }
 }
 //生产随机数
 private string CreateRandomNum(int NumCount)
 {
 string allChar = "0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,O,P,Q,R,S,T,U,W,X,Y,Z,a,b,c,d,e,f,g,h,i,j,k,m,n,o,p,q,s,t,u,w,x,y,z";
 string[] allCharArray = allChar.Split(',');//拆分成数组
 string randomNum = "";
 int temp = -1; //记录上次随机数的数值,尽量避免产生几个相同的随机数
 Random rand = new Random();
 for (int i = 0; i < NumCount; i++)
 {
 if (temp != -1)
 {
 rand = new Random(i*temp*((int)DateTime.Now.Ticks));
 }
 int t = rand.Next(35);
 if (temp == t)
 {
 return CreateRandomNum(NumCount);
 }
 temp = t;
 randomNum += allCharArray[t];
 }
 return randomNum;
 }
 //生产图片
 private void CreateImage(string validateNum)
 {
 if (validateNum == null || validateNum.Trim() == string.Empty)
 return;
 //生成BitMap图像
 System.Drawing.Bitmap image = new System.Drawing.Bitmap(validateNum.Length*12+12,22);
 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,x2,y1,y2);
 }
 Font font = new System.Drawing.Font("Arial",12,(System.Drawing.FontStyle.Bold|System.Drawing.FontStyle.Italic));
 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);
 g.DrawString(validateNum,font,brush ,2,2);
 //画图片的前景噪音点
 for( int i=0;i<100;i++)
 {
 int x=random.Next(image.Width);
 int y=random.Next(image.Height);
 image.SetPixel(x,y,Color.FromArgb(random.Next()));
 }
 //画图片的边框线
 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,System.Drawing.Imaging.ImageFormat.Gif);
 Response.ClearContent();
 Response.ContentType="image/Gif";
 Response.BinaryWrite(ms.ToArray());
 }
 finally
 {
 g.Dispose();
 image.Dispose();
 }
 }
}

更多关于asp.net相关内容感兴趣的读者可查看本站专题:《asp.net字符串操作技巧汇总》、《asp.net操作XML技巧总结》、《asp.net文件操作技巧汇总》、《asp.net ajax技巧总结专题》及《asp.net缓存操作技巧总结》。

希望本文所述对大家asp.net程序设计有所帮助。

文档

ASP.NET生成图形验证码的方法详解

ASP.NET生成图形验证码的方法详解:本文实例讲述了ASP.NET生成图形验证码的方法。分享给大家供大家参考,具体如下: 通常生成一个图形验证码主要 有3个步骤: (1)随机产生一个长度为N的随机字符串,N的值可由开发可由开发人员自行设置。该字符串可以包含数字、字母等。 (2)将随机生成的字符
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top