asp.net登录验证码实现方法
前端添加的标签和方法:
验证码:
<inputid="txtVerifyCode"type="text"maxlength="5"style="line-height:30px; height:30px;width:80px;border:solid1px#d4d4d4;"class="input"/> <imgsrc=""alt="点击刷新"id="imgValidateCode"style="width:100px;height:30px;line-height:30px;vertical-align:middle;"/> 点击图片刷新</p>//标签
$(function(){ $("#imgValidateCode").click(function(){ DoFresh(); }); DoFresh(); }) functionDoFresh(){ varimg=$("#imgValidateCode"); img.attr("src","VerifyCode.aspx?random="+Math.random()); }//添加的方法,src是生成图片的aspx的地址
然后在项目中在新建一个VerifyCode.aspx,下面是aspx的代码:
<%@PageLanguage="C#"AutoEventWireup="true"CodeBehind="VerifyCode.aspx.cs"Inherits="Form.VerifyCode"%> <!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <htmlxmlns="http://www.w3.org/1999/xhtml"> <headid="Head1"runat="server"> <title></title> </head> <body> <formid="form1"runat="server"> <div> </div> </form> </body> </html>
接着是aspx.cs的代码:
usingSystem; usingSystem.Collections.Generic; usingSystem.Linq; usingSystem.Web; usingSystem.Web.UI; usingSystem.Web.UI.WebControls; usingSystem.Drawing; namespaceForm { publicpartialclassVerifyCode:System.Web.UI.Page { publicstaticstringHZ; ///<summary> ///验证码的最大长度 ///</summary> publicintMaxLength { get{return10;} } ///<summary> ///验证码的最小长度 ///</summary> publicintMinLength { get{return1;} } protectedvoidPage_Load(objectsender,EventArgse) { string[]str=CreateValidateNumber(4); stringstrcode=string.Empty; for(inti=0;i<str.Length;i++) { strcode+=str[i]; } CreateCheckCodeImage(str); HZ=strcode; Response.Write(HZ); //验证码存入session Session["ValidateCode"]=HZ; } ///<summary> ///生成验证码 ///</summary> ///<paramname="length">指定验证码的长度</param> ///<returns>验证码</returns> publicstring[]CreateValidateNumber(intlength) { stringVchar="1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,g,h,i,j,k,l,m,n,p"+ ",q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,P,Q"+ ",R,S,T,U,V,W,X,Y,Z"; string[]VcArray=Vchar.Split(newChar[]{','});//拆分成数组 string[]num=newstring[length]; inttemp=-1;//记录上次随机数值,尽量避避免生产几个一样的随机数 Randomrand=newRandom(); //采用一个简单的算法以保证生成随机数的不同 for(inti=1;i<length+1;i++) { if(temp!=-1) { rand=newRandom(i*temp*unchecked((int)DateTime.Now.Ticks)); } intt=rand.Next(VcArray.Length-1); if(temp!=-1&&temp==t) { returnCreateValidateNumber(length); } temp=t; num[i-1]=VcArray[t]; //num.SetValue(VcArray[t]); //VNum+=VcArray[t]; } returnnum; } privatevoidCreateCheckCodeImage(string[]checkCode) { if(checkCode==null||checkCode.Length<=0) return; System.Drawing.Bitmapimage=newSystem.Drawing.Bitmap((int)Math.Ceiling((checkCode.Length*32.5)),60); System.Drawing.Graphicsg=Graphics.FromImage(image); try { //生成随机生成器 Randomrandom=newRandom(); //清空图片背景色 g.Clear(Color.White); //定义颜色 Color[]c={Color.Black,Color.Red,Color.DarkBlue,Color.Green,Color.Orange,Color.Brown,Color.DarkCyan,Color.Purple}; //画图片的背景噪音线 for(inti=0;i<25;i++) { intcindex=random.Next(7); intfindex=random.Next(5); intx1=random.Next(image.Width); intx2=random.Next(image.Width); inty1=random.Next(image.Height); inty2=random.Next(image.Height); //g.DrawLine(newPen(c[cindex]),x1,y1,x2,y2); } //定义字体 string[]f={"Verdana","MicrosoftSansSerif","ComicSansMS","Arial","宋体"}; for(intk=0;k<=checkCode.Length-1;k++) { intcindex=random.Next(7); intfindex=random.Next(5); FontdrawFont=newFont(f[findex],26,(System.Drawing.FontStyle.Bold)); SolidBrushdrawBrush=newSolidBrush(c[cindex]); floatx=5.0F; floaty=0.0F; floatwidth=42.0F; floatheight=48.0F; intsjx=random.Next(10); intsjy=random.Next(image.Height-(int)height); RectangleFdrawRect=newRectangleF(x+sjx+(k*25),y+sjy,width,height); StringFormatdrawFormat=newStringFormat(); drawFormat.Alignment=StringAlignment.Center; g.DrawString(checkCode[k],drawFont,drawBrush,drawRect,drawFormat); } //画图片的前景噪音点 for(inti=0;i<500;i++) { intx=random.Next(image.Width); inty=random.Next(image.Height); image.SetPixel(x,y,Color.FromArgb(random.Next())); } intcindex1=random.Next(7); //画图片的边框线 g.DrawRectangle(newPen(c[cindex1]),0,0,image.Width-1,image.Height-1); System.IO.MemoryStreamms=newSystem.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(); } } } }
于是!就可以生成验证码了,然后自己再把编写验证版的判断逻辑写好就可以啦!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。