ASP.NET 实现验证码以及刷新验证码的小例子
ASP.NET 实现验证码以及刷新验证码的小例子
发布时间:2017-01-07 来源:查字典编辑
摘要:实现代码复制代码代码如下://////生成验证码图片,保存session名称VerificationCode///publicstaticv...

实现代码

复制代码 代码如下:

/// <summary>

/// 生成验证码图片,保存session名称VerificationCode

/// </summary>

public static void CreateVerificationCode()

{

int number;

string checkCode = string.Empty;

//随机数种子

Random randoms = new Random();

for (int i = 0; i < 4; i++) //校验码长度为4

{

//随机的整数

number = randoms.Next();

//字符从0-9,A-Z中随机产生,对应的ASCII码分别为

//48-57,65-90

number = number % 36;

if (number < 10)

{

number += 48;

}

else

{

number += 55;

}

checkCode += ((char)number).ToString();

}

//在session中保存校验码

System.Web.HttpContext.Current.Session["VerificationCode"] = checkCode;

//若校验码为空,则直接返回

if (checkCode == null || checkCode.Trim() == String.Empty)

{

return;

}

//根据校验码的长度确定输出图片的长度

System.Drawing.Bitmap image = new System.Drawing.Bitmap(55, 20);//(int)Math.Ceiling(Convert.ToDouble(checkCode.Length * 15))

//创建Graphics对象

Graphics g = Graphics.FromImage(image);

try

{

//生成随机数种子

Random random = new Random();

//清空图片背景色

g.Clear(Color.White);

//画图片的背景噪音线 10条

//---------------------------------------------------

for (int i = 0; i < 10; i++)

{

//噪音线起点坐标(x1,y1),终点坐标(x2,y2)

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);

}

//---------------------------------------------------

//Brush b = Brushes.Silver;

//g.FillRectangle(b, 0, 0, image.Width, image.Height);

//---------------------以上两种任选其一------------------------------

//输出图片中校验码的字体: 12号Arial,粗斜体

Font font = new Font("Arial", 12, (FontStyle.Bold | FontStyle.Italic));

//线性渐变画刷

LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.Blue, Color.Purple, 1.2f, true);

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

//画图片的前景噪音点 50个

for (int i = 0; i < 50; 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.Peru), 0, 0, image.Width - 1, image.Height - 1);

//创建内存流用于输出图片

using (MemoryStream ms = new MemoryStream())

{

//图片格式指定为png

image.Save(ms, ImageFormat.Jpeg);

//清除缓冲区流中的所有输出

System.Web.HttpContext.Current.Response.ClearContent();

//输出流的HTTP MIME类型设置为"image/Png"

System.Web.HttpContext.Current.Response.ContentType = "image/Jpeg";

//输出图片的二进制流

System.Web.HttpContext.Current.Response.BinaryWrite(ms.ToArray());

}

}

finally

{

//释放Bitmap对象和Graphics对象

g.Dispose();

image.Dispose();

}

}

创建一个aspx页面

复制代码 代码如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="AuthCode.aspx.cs" Inherits="AuthCode" %>

<%Help.CreateVerificationCode(); %>

添加HTML代码,引用

复制代码 代码如下:

<div>

<label>验证码:</label>

<span> *</span>

<input type="text" runat="Server" reg="^.+$" id="txtAuthCode" tip="请输入验证码!" />

<img src="AuthCode.aspx" id="imgAuthCode" />

</div>

如何实现刷新?

复制代码 代码如下:

<script type="text/javascript">

$("#imgAuthCode").click(function () {

$(this).attr("src", "AuthCode.aspx?code=" + (new Date()).getTime());

});

</script>

效果图

ASP.NET 实现验证码以及刷新验证码的小例子1

实例下载

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新asp.net教程学习
热门asp.net教程学习
编程开发子分类