华域联盟 .Net asp.net生成验证码(纯数字)

asp.net生成验证码(纯数字)

CheckCode.cs

复制代码 代码如下:

using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

using System.Drawing;

/// <summary>

/// CheckCode 的摘要说明

/// </summary>

public class CheckCode

{

public CheckCode()

{

//

// TODO: 在此处添加构造函数逻辑

//

}

public static void DrawImage()

{

CheckCode img = new CheckCode();

HttpContext.Current.Session["CheckCode"] = img.RndNum(4);

img.checkCodes(HttpContext.Current.Session["CheckCode"].ToString());

}

/// <summary>

/// 生成验证图片

/// </summary>

/// <param name="checkCode">验证字符</param>

private void checkCodes(string checkCode)

{

int iwidth = (int)(checkCode.Length * 13);

System.Drawing.Bitmap image = new System.Drawing.Bitmap(iwidth, 23);

Graphics g = Graphics.FromImage(image);

g.Clear(Color.White);

//定义颜色

Color[] c = { Color.Black, Color.Red, Color.DarkBlue, Color.Green, Color.Orange, Color.Brown, Color.DarkCyan, Color.Purple };

//定义字体

string[] font = { "Verdana", "Microsoft Sans Serif", "Comic Sans MS", "Arial", "宋体" };

Random rand = new Random();

//随机输出噪点

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

{

int x = rand.Next(image.Width);

int y = rand.Next(image.Height);

g.DrawRectangle(new Pen(Color.LightGray, 0), x, y, 1, 1);

}

//输出不同字体和颜色的验证码字符

for (int i = 0; i < checkCode.Length; i++)

{

int cindex = rand.Next(7);

int findex = rand.Next(5);

Font f = new System.Drawing.Font(font[findex], 10, System.Drawing.FontStyle.Bold);

Brush b = new System.Drawing.SolidBrush(c[cindex]);

int ii = 4;

if ((i + 1) % 2 == 0)

{

ii = 2;

}

g.DrawString(checkCode.Substring(i, 1), f, b, 3 + (i * 12), ii);

}

//画一个边框

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

//输出到浏览器

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

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

HttpContext.Current.Response.ClearContent();

//Response.ClearContent();

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

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

g.Dispose();

image.Dispose();

}

/// <summary>

/// 生成随机的字母

/// </summary>

/// <param name="VcodeNum">生成字母的个数</param>

/// <returns>string</returns>

private string RndNum(int VcodeNum)

{

string Vchar = "0,1,2,3,4,5,6,7,8,9";

string[] VcArray = Vchar.Split(',');

string VNum = ""; //由于字符串很短,就不用StringBuilder了

int temp = -1; //记录上次随机数值,尽量避免生产几个一样的随机数

//采用一个简单的算法以保证生成随机数的不同

Random rand = new Random();

for (int i = 1; i < VcodeNum + 1; i++)

{

if (temp != -1)

{

rand = new Random(i * temp * unchecked((int)DateTime.Now.Ticks));

}

int t = rand.Next(VcArray.Length);

if (temp != -1 && temp == t)

{

return RndNum(VcodeNum);

}

temp = t;

VNum += VcArray[t];

}

return VNum;

}

}

再建立一个引用类的页面checkCode.aspx前台不用写东西,后台引用我们创建的类的DrawImage()方法即可。

复制代码 代码如下:

using System;

using System.Data;

using System.Configuration;

using System.Collections;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

public partial class checkCode : System.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e)

{

CheckCode.DrawImage();

}

}

下面我们在需要验证码的页面引用checkCode.aspx页面即可。

前台

复制代码 代码如下:

<asp:TextBox ID="Validator" runat="server" Width="150px" ></asp:TextBox>

<img id="Img1" alt="看不清,请点击我!" onclick="this.src=this.src+'?'" src="checkCode.aspx"

style="width: 73px; height: 22px" align="left" />

<asp:ImageButton ID="imgBtnLogin" runat="server" ImageUrl="~/Images/Login.GIF"

OnClick="imgBtnLogin_Click" />

后台判断

复制代码 代码如下:

protected void imgBtnLogin_Click(object sender, ImageClickEventArgs e)

{

if(this.Validator.Text==Session["CheckCode"].ToString())

{

//。。。。

}

else

{

Response.Write("<script>alert('验证码输入错误,请重新输入!');Location='MumberValidate.aspx'</script>");

return;

}

}

以上代码请根据实际情况作适当修改。

您可能感兴趣的文章:

  • asp.net 验证码生成和刷新及验证
  • asp.net(C#) 生成随机验证码的代码
  • asp.net 简单验证码验证实现代码
  • ASP.NET MVC验证码功能实现代码
  • ASP.NET中的无刷新验证码的开发(完整代码)
  • asp.net 图片验证码的HtmlHelper
  • asp.net中3种验证码示例(实现代码)(数字,数字字母混和,汉字)
  • asp.net 验证码的简单制作(vb.net+C#)
  • asp.net下生成英文字符数字验证码的代码
  • asp.net生成字母和数字混合图形验证码
  • Asp.net开发之webform图片水印和图片验证码的实现方法
  • ASP.NET实现的生成验证码功能示例【附demo源码】

本文由 华域联盟 原创撰写:华域联盟 » asp.net生成验证码(纯数字)

转载请保留出处和原文链接:https://www.cnhackhy.com/43844.htm

本文来自网络,不代表华域联盟立场,转载请注明出处。

作者: sterben

发表回复

联系我们

联系我们

2551209778

在线咨询: QQ交谈

邮箱: [email protected]

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部