function changeImg() { $("#imgCheckNo").attr("src", "ValidateImage.aspx?r=" + getRandom(999));">

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

来源:这里教程网 时间:2026-02-21 13:10:53 作者:

验证码是一张图片。我们需要在前台代码中写一段asp.net验证码图片生成示例,src指向一张页面(validateimage.aspx)。

<script language="javascript">
        function changeImg() {
            $("#imgCheckNo").attr("src", "ValidateImage.aspx?r=" + getRandom(999));
        }
        function getRandom(n) { return Math.floor(Math.random() * n + 1) }
</script>
<div>
<img  id="imgCheckNo" src="ValidateImage.aspx"%20%20%20style="max-width:90%"%20alt="asp.net验证码图片生成示例"%20>
%20<span%20onclick="changeImg();">看不清?换一张</span>
%20</div>
<div>
%20%20%20<div%20class="labelCss">验证码:</div>
<div>
<asp:TextBox%20ID="tbxCheckNo"%20runat="server"%20CssClass="tbxCss"></asp:TextBox>
</div>
<div>
<asp:Button%20ID="btnSubmit"%20runat="server"%20Text="立即注册"%20OnClick="btnSubmit_Click"%20/>
</div>

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

public%20partial%20class%20ValidateImage%20:%20System.Web.UI.Page
%20%20%20%20{
%20%20%20%20%20%20%20%20protected%20void%20Page_Load(object%20sender,%20EventArgs%20e)
%20%20%20%20%20%20%20%20{
%20%20%20%20%20%20%20%20%20%20%20%20this.CreateCheckCodeImage(RndNum());
%20%20%20%20%20%20%20%20}
%20%20%20%20%20%20%20%20///%20<summary>生成验证码
%20%20%20%20%20%20%20%20///%20</summary>
%20%20%20%20%20%20%20%20///%20<returns></returns>
%20%20%20%20%20%20%20%20private%20string%20RndNum()
%20%20%20%20%20%20%20%20{
%20%20%20%20%20%20%20%20%20%20%20%20int%20number;
%20%20%20%20%20%20%20%20%20%20%20%20char%20code;
%20%20%20%20%20%20%20%20%20%20%20%20string%20checkCode%20=%20String.Empty;
%20%20%20%20%20%20%20%20%20%20%20%20System.Random%20random%20=%20new%20Random();
%20%20%20%20%20%20%20%20%20%20%20%20for%20(int%20i%20=%200;%20i%20<%204;%20i++)
%20%20%20%20%20%20%20%20%20%20%20%20{
%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20number%20=%20random.Next();
%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(number%20%%202%20==%200)
%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20code%20=%20(char)('0'%20+%20(char)(number%20%%2010));
%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else
%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20code%20=%20(char)('A'%20+%20(char)(number%20%%2026));
%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20checkCode%20+=%20code.ToString();
%20%20%20%20%20%20%20%20%20%20%20%20}
%20%20%20%20%20%20%20%20%20%20%20%20Response.Cookies.Add(new%20HttpCookie("yzmcode",%20checkCode));
%20%20%20%20%20%20%20%20%20%20%20%20return%20checkCode;
%20%20%20%20%20%20%20%20}
%20%20%20%20%20%20%20%20///%20<summary>向页面生成验证码Gif图片
%20%20%20%20%20%20%20%20///%20</summary>
%20%20%20%20%20%20%20%20///%20<param%20name="checkCode"></param>
%20%20%20%20%20%20%20%20private%20void%20CreateCheckCodeImage(string%20checkCode)
%20%20%20%20%20%20%20%20{
%20%20%20%20%20%20%20%20%20%20%20%20if%20(checkCode%20==%20null%20||%20checkCode.Trim()%20==%20String.Empty)
%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return;
%20%20%20%20%20%20%20%20%20%20%20%20System.Drawing.Bitmap%20image%20=%20new%20System.Drawing.Bitmap((int)Math.Ceiling((checkCode.Length%20*%2012.5)),%2022);
%20%20%20%20%20%20%20%20%20%20%20%20Graphics%20g%20=%20Graphics.FromImage(image);
%20%20%20%20%20%20%20%20%20%20%20%20try
%20%20%20%20%20%20%20%20%20%20%20%20{
%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20//生成随机生成器
%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Random%20random%20=%20new%20Random();
%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20//清空图片背景色
%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20g.Clear(Color.White);
%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20//画图片的背景噪音线
%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20(int%20i%20=%200;%20i%20<%2025;%20i++)
%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20{
%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20int%20x1%20=%20random.Next(image.Width);
%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20int%20x2%20=%20random.Next(image.Width);
%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20int%20y1%20=%20random.Next(image.Height);
%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20int%20y2%20=%20random.Next(image.Height);
%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20g.DrawLine(new%20Pen(Color.Silver),%20x1,%20y1,%20x2,%20y2);
%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20}
%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Font%20font%20=%20new%20System.Drawing.Font("Arial",%2012,%20(System.Drawing.FontStyle.Bold%20|%20System.Drawing.FontStyle.Italic));
%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20System.Drawing.Drawing2D.LinearGradientBrush%20brush%20=%20new%20System.Drawing.Drawing2D.LinearGradientBrush(new%20Rectangle(0,%200,%20image.Width,%20image.Height),%20Color.Blue,%20Color.DarkRed,%201.2f,%20true);
%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20g.DrawString(checkCode,%20font,%20brush,%202,%202);
%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20//画图片的前景噪音点
%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20(int%20i%20=%200;%20i%20<%20100;%20i++)
%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20{
%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20int%20x%20=%20random.Next(image.Width);
%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20int%20y%20=%20random.Next(image.Height);
%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20image.SetPixel(x,%20y,%20Color.FromArgb(random.Next()));
%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20}
%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20//画图片的边框线
%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20g.DrawRectangle(new%20Pen(Color.Silver),%200,%200,%20image.Width%20-%201,%20image.Height%20-%201);
%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20System.IO.MemoryStream%20ms%20=%20new%20System.IO.MemoryStream();
%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20image.Save(ms,%20System.Drawing.Imaging.ImageFormat.Gif);
                Response.ClearContent();
                Response.ContentType = "image/Gif";
                Response.BinaryWrite(ms.ToArray());
            }
            finally
            {
                g.Dispose();
                image.Dispose();
            }
        }
    }

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

#region 页面控件事件
        protected void btnSubmit_Click(object sender, EventArgs e)
        {
            if (String.Compare(Request.Cookies["yzmcode"].Value, tbxCheckNo.Text, true) != 0)
            {
                Response.Write("<script>alert('验证码错误!')</script>");
            }
            else
            {
               // Response.Write("<script>alert('验证吗正确!!!')</script>");
            }
        }
  #endregion

更多asp.net验证码图片生成示例相关文章请关注PHP中文网!

相关推荐