zl程序教程

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

当前栏目

asp.net验证码图片生成示例

NetASP 示例 图片 生成 验证码
2023-06-13 09:15:16 时间

验证码是一张图片。我们需要在前台代码中写一段<img>,src指向一张页面(ValidateImage.aspx)。

复制代码代码如下:


<scriptlanguage="javascript">

       functionchangeImg(){
           $("#imgCheckNo").attr("src","ValidateImage.aspx?r="+getRandom(999));
       }
       functiongetRandom(n){returnMath.floor(Math.random()*n+1)}
</script>

<div>
<imgid="imgCheckNo"src="ValidateImage.aspx"style="border-color:#000000;border-width:1px;border-style:Solid">
 <spanonclick="changeImg();">看不清?换一张</span>
 </div>
<div>
  <divclass="labelCss">验证码:</div>
<div>
<asp:TextBoxID="tbxCheckNo"runat="server"CssClass="tbxCss"></asp:TextBox>
</div>
<div>
<asp:ButtonID="btnSubmit"runat="server"Text="立即注册"OnClick="btnSubmit_Click"/>
</div>

ValidateImage.aspx用来生产验证码图片,并将验证码的码值保存到cookie中。
代码如下:

复制代码代码如下:


publicpartialclassValidateImage:System.Web.UI.Page
   {
       protectedvoidPage_Load(objectsender,EventArgse)
       {
           this.CreateCheckCodeImage(RndNum());
       }

       ///<summary>生成验证码
       ///</summary>
       ///<returns></returns>
       privatestringRndNum()
       {
           intnumber;
           charcode;
           stringcheckCode=String.Empty;

           System.Randomrandom=newRandom();

           for(inti=0;i<4;i++)
           {
               number=random.Next();
               if(number%2==0)
                   code=(char)("0"+(char)(number%10));
               else
                   code=(char)("A"+(char)(number%26));
               checkCode+=code.ToString();
           }
           Response.Cookies.Add(newHttpCookie("yzmcode",checkCode));
           returncheckCode;
       }

       ///<summary>向页面生成验证码Gif图片
       ///</summary>
       ///<paramname="checkCode"></param>
       privatevoidCreateCheckCodeImage(stringcheckCode)
       {
           if(checkCode==null||checkCode.Trim()==String.Empty)
               return;
           System.Drawing.Bitmapimage=newSystem.Drawing.Bitmap((int)Math.Ceiling((checkCode.Length*12.5)),22);
           Graphicsg=Graphics.FromImage(image);
           try
           {
               //生成随机生成器
               Randomrandom=newRandom();
               //清空图片背景色
               g.Clear(Color.White);
               //画图片的背景噪音线
               for(inti=0;i<25;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.Silver),x1,y1,x2,y2);
               }

               Fontfont=newSystem.Drawing.Font("Arial",12,(System.Drawing.FontStyle.Bold|System.Drawing.FontStyle.Italic));
               System.Drawing.Drawing2D.LinearGradientBrushbrush=newSystem.Drawing.Drawing2D.LinearGradientBrush(newRectangle(0,0,image.Width,image.Height),Color.Blue,Color.DarkRed,1.2f,true);
               g.DrawString(checkCode,font,brush,2,2);
               //画图片的前景噪音点
               for(inti=0;i<100;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);
               Response.ClearContent();
               Response.ContentType="image/Gif";
               Response.BinaryWrite(ms.ToArray());
           }
           finally
           {
               g.Dispose();
               image.Dispose();
           }
       }

   }

最后就是后台事件,判断当前验证码是否正确。
代码如下:

复制代码代码如下:
#region页面控件事件
       protectedvoidbtnSubmit_Click(objectsender,EventArgse)
       {
           if(String.Compare(Request.Cookies["yzmcode"].Value,tbxCheckNo.Text,true)!=0)
           {
               Response.Write("<script>alert("验证码错误!")</script>");
           }
           else
           {
              //Response.Write("<script>alert("验证吗正确!!!")</script>");
           }
       }
 #endregion