• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

c# 搞代码 4年前 (2022-01-09) 17次浏览 已收录 0个评论

验证码是一张图片。我们需要在前台代码中写一段<img>,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" style="border-color: #000000; border-width: 1px;border-style: Solid"> <span onclick="changeImg();">看不清?换一张</span> </div><div>   <div class="labelCss">验证码:</div><div><asp:TextBox ID="tbxCheckNo" runat="server" CssClass="tbxCss"></asp:TextBox></div><div><asp:Button ID="btnSubmit" runat="server" Text="立即注册" OnClick="btnSubmit_Click" /></div>

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

public partial class ValidateImage : System.Web.UI.Page    {        protected void Page_Load(object sender, EventArgs e)        {            this.CreateCheckCodeImage(RndNum());        }        /// <summary>生成验证码        /// </summary>        /// <returns></returns>        private string RndNum()        {            int number;            char code;            string checkCode = String.Empty;            System.Random random = new Random();            for (int i = 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(new HttpCookie("yzmcode", checkCode));            return checkCode;        }        /// <summary>向页面生成验证码Gif图片        /// </summary>        /// <param name="checkCode"></param>        private void CreateCheckCodeImage(string checkCode)        {            if (checkCode == null || checkCode.Trim() == String.Empty)                return;            System.Drawing.Bitmap image = new System.Drawing.Bitmap((int)Math.Ceiling((checkCode.Length * 12.5)), 22);            Graphics g = Graphics.FromImage(image);            try            {                //生成随机生成器                Random random = new Random();                //清空图片背景色                g.Clear(Color.White);                //画图片的背景噪音线                for (int i = 0; i < 25; i++)                {                    int x1 = random.Next(image.Width);                    int x2 = random.Next(image.Width);                    int y1 = random.Next(image.Height);                    int y2 = random.Next(image.Height);                    g.DrawLine(new Pen(Color.Silver), x1, y1, x2, y2);                }                Font font = new System.Drawing.Font("Arial", 12, (System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic));                System.Drawing.Drawing2D.LinearGradientBrush brush = new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.Blue, Color.DarkRed, 1.2f, true);                g<strong>本文来源gaodaima#com搞(代@码$网6</strong>.DrawString(checkCode, font, brush, 2, 2);                //画图片的前景噪音点                for (int i = 0; i < 100; i++)                {                    int x = random.Next(image.Width);                    int y = random.Next(image.Height);                    image.SetPixel(x, y, Color.FromArgb(random.Next()));                }                //画图片的边框线                g.DrawRectangle(new Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1);                System.IO.MemoryStream ms = new System.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 页面控件事件        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验证码图片生成示例相关文章请关注搞代码


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:asp.net验证码图片生成示例
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址