zl程序教程

您现在的位置是:首页 >  后端

当前栏目

asp.net生成验证码代码(纯中文)

NetASP代码 生成 验证码
2023-06-13 09:14:34 时间
复制代码代码如下:

usingSystem;
usingSystem.Data;
usingSystem.Configuration;
usingSystem.Web;
usingSystem.Web.Security;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
usingSystem.Web.UI.WebControls.WebParts;
usingSystem.Web.UI.HtmlControls;
usingSystem.Text;//添加引用
usingSystem.Drawing;//添加引用
///<summary>
///CheckCode_Ch的摘要说明
///</summary>
publicclassCheckCode_Ch
{
publicCheckCode_Ch()
{
//
//TODO:在此处添加构造函数逻辑
//
}
privatestaticobject[]CreateString()
{
//定义一个数组存储汉字编码的组成元素
string[]str=newstring[16]{"0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"};
Randomran=newRandom();//定义一个随机数对象
object[]bytes=newobject[4];
for(inti=0;i<4;i++)
{
//获取区位码第一位
intran1=ran.Next(11,14);
stringstr1=str[ran1].Trim();
//获取区位码第二位并防止数据重复
ran=newRandom(ran1*unchecked((int)DateTime.Now.Ticks)+i);
intran2;
if(ran1==13)
{
ran2=ran.Next(0,7);
}
else
{
ran2=ran.Next(0,16);
}
stringstr2=str[ran2].Trim();
//获取区位码第三位
ran=newRandom(ran2*unchecked((int)DateTime.Now.Ticks)+i);
intran3=ran.Next(10,16);
stringstr3=str[ran3].Trim();
//获取区位码第四位
ran=newRandom(ran3*unchecked((int)DateTime.Now.Ticks)+i);
intran4;
if(ran3==10)
{
ran4=ran.Next(1,16);
}
elseif(ran3==15)
{
ran4=ran.Next(0,15);
}
else
{
ran4=ran.Next(0,16);
}
stringstr4=str[ran4].Trim();
//定义字节变量存储产生的随机汉字区位码
bytebyte1=Convert.ToByte(str1+str2,16);
bytebyte2=Convert.ToByte(str3+str4,16);
byte[]stradd=newbyte[]{byte1,byte2};
//将产生的汉字字节放入数组
bytes.SetValue(stradd,i);
}
returnbytes;
}
privatestaticstringGetString()
{
Encodinggb=Encoding.GetEncoding("gb2312");
object[]bytes=CreateString();
//根据汉字字节解码出中文汉字
stringstr1=gb.GetString((byte[])Convert.ChangeType(bytes[0],typeof(byte[])));
stringstr2=gb.GetString((byte[])Convert.ChangeType(bytes[1],typeof(byte[])));
stringstr3=gb.GetString((byte[])Convert.ChangeType(bytes[2],typeof(byte[])));
stringstr4=gb.GetString((byte[])Convert.ChangeType(bytes[3],typeof(byte[])));
stringstr=str1+str2+str3+str4;
HttpContext.Current.Response.Cookies.Add(newHttpCookie("CheckCode",str));
returnstr;
}
publicstaticvoidGraphicsImage()
{
System.Drawing.Bitmapimage=newSystem.Drawing.Bitmap((int)Math.Ceiling((GetString().Length*22.5)),22);
Graphicsg=Graphics.FromImage(image);//创建画布
try
{
//生成随机生成器
Randomrandom=newRandom();
//清空图片背景色
g.Clear(Color.White);
//画图片的背景噪音线
for(inti=0;i<1;i++)
{
intx1=random.Next(image.Width);
intx2=random.Next(image.Width);
inty1=random.Next(image.Height);
inty2=random.Next(image.Height);
g.DrawLine(newPen(Color.Black),x1,y1,x2,y2);
}
Fontfont=newSystem.Drawing.Font("CouriewNew",12,System.Drawing.FontStyle.Bold);
System.Drawing.Drawing2D.LinearGradientBrushbrush=newSystem.Drawing.Drawing2D.LinearGradientBrush
(newRectangle(0,0,image.Width,image.Height),Color.Blue,Color.DarkRed,1.2f,true);
g.DrawString(GetString(),font,brush,2,2);
//画图片的前景噪音点
for(inti=0;i<50;i++)
{
intx=random.Next(image.Width);
inty=random.Next(image.Height);
image.SetPixel(x,y,Color.FromArgb(random.Next()));
}
//画图片的边框线
g.DrawRectangle(newPen(Color.Silver),0,0,image.Width-1,image.Height-1);
System.IO.MemoryStreamms=newSystem.IO.MemoryStream();
image.Save(ms,System.Drawing.Imaging.ImageFormat.Gif);
HttpContext.Current.Response.ClearContent();
HttpContext.Current.Response.ContentType="image/Gif";
HttpContext.Current.Response.BinaryWrite(ms.ToArray());
}
catch(Exceptionms)
{
HttpContext.Current.Response.Write(ms.Message);
}
}
}

第二步建立一个页面引用类库ChineseCheckCode.aspx前台不用写代码,后台引用类库。。
复制代码代码如下:

usingSystem;
usingSystem.Collections;
usingSystem.Configuration;
usingSystem.Data;
usingSystem.Web;
usingSystem.Web.Security;
usingSystem.Web.UI;
usingSystem.Web.UI.HtmlControls;
usingSystem.Web.UI.WebControls;
usingSystem.Web.UI.WebControls.WebParts;
publicpartialclassUserValidator_ChineseCheckCode:System.Web.UI.Page
{
protectedvoidPage_Load(objectsender,EventArgse)
{
CheckCode_Ch.GraphicsImage();//调用方法生成四位汉字验证码
}
}

第三步引用验证码页
复制代码代码如下:
<asp:TextBoxID="Validator"runat="server"Width="150px"></asp:TextBox>
<imgid="Img1"alt="看不清,请点击我!"onclick="this.src=this.src+"?""src="ChineseCheckCode.aspx"
style="width:75px;height:24px"align="left"/>
<asp:ImageButtonID="imgBtnLogin"runat="server"ImageUrl="~/Images/Login.GIF"
OnClick="imgBtnLogin_Click"/>

后台判断
复制代码代码如下:
protectedvoidimgBtnLogin_Click(objectsender,ImageClickEventArgse)
{
HttpCookiecookie=Request.Cookies["CheckCode"];
if(cookie.Value==this.Validator.Text.Trim())
{
//。。。
}
else
{
Response.Write("<script>alert("验证码输入错误,请重新输入!");Location="ChineseCodeValidator.aspx"</script>");
return;
}
}

以上验证码生成四位,请各位根据情况做适当修改。
现在总结了生成纯数字、数字字母混合、纯汉字的验证码技术。希望对各位有所帮助。。