一个简单的ASP.NET验证码
本文实例为大家分享了ASP.NET验证码的具体代码,供大家参考,具体内容如下
我主要是看到干扰线了,一个验证码里面要是没有干扰线什么的,至少得在噪点和随机码的排版上下工夫:
//////验证码生成类 /// publicclassverify_code:IHttpHandler,IRequiresSessionState { publicvoidProcessRequest(HttpContextcontext) { intcodeW=80; intcodeH=22; intfontSize=16; stringchkCode=string.Empty; //颜色列表,用于验证码、噪线、噪点 Color[]color={Color.Black,Color.Red,Color.Blue,Color.Green,Color.Orange,Color.Brown,Color.Brown,Color.DarkBlue}; //字体列表,用于验证码 string[]font={"TimesNewRoman","Verdana","Arial","Gungsuh","Impact"}; //验证码的字符集,去掉了一些容易混淆的字符 char[]character={'0','1','2','3','4','5','6','8','9'}; Randomrnd=newRandom(); //生成验证码字符串 for(inti=0;i<4;i++) { chkCode+=character[rnd.Next(character.Length)]; } //写入Session context.Session["sys_verify_code"]=chkCode; //创建画布 Bitmapbmp=newBitmap(codeW,codeH); Graphicsg=Graphics.FromImage(bmp); g.Clear(Color.White); //画噪线 for(inti=0;i<4;i++) { intx1=rnd.Next(codeW); inty1=rnd.Next(codeH); intx2=rnd.Next(codeW); inty2=rnd.Next(codeH); Colorclr=color[rnd.Next(color.Length)]; g.DrawLine(newPen(clr),x1,y1,x2,y2); } //画验证码字符串 for(inti=0;i基本验证生成代码demo:
usingSystem; usingSystem.Drawing; usingSystem.Drawing.Imaging; usingSystem.IO; usingSystem.Web; publicpartialclassimage:System.Web.UI.Page { protectedvoidPage_Load(objectsender,EventArgse) { stringtmp=RndNum(4); HttpCookiea=newHttpCookie("ImageV",tmp); Response.Cookies.Add(a); this.ValidateCode(tmp); } privatevoidValidateCode(stringVNum) { BitmapImg=null; Graphicsg=null; MemoryStreamms=null; intgheight=VNum.Length*12; Img=newBitmap(gheight,25); g=Graphics.FromImage(Img); //背景颜色 g.Clear(Color.White); //文字字体 Fontf=newFont("ArialBlack",10); //文字颜色 SolidBrushs=newSolidBrush(Color.Black); g.DrawString(VNum,f,s,3,3); ms=newMemoryStream(); Img.Save(ms,ImageFormat.Jpeg); Response.ClearContent(); Response.ContentType="image/Jpeg"; Response.BinaryWrite(ms.ToArray()); g.Dispose(); Img.Dispose(); Response.End(); } privatestringRndNum(intVcodeNum) { stringVchar="0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p"+ ",q,r,s,t,u,v,w,x,y,z"; string[]VcArray=Vchar.Split(newChar[]{','}); stringVNum=""; inttemp=-1; Randomrand=newRandom(); for(inti=1;i以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。