zoukankan      html  css  js  c++  java
  • 生成验证码(数字字母混合)

    CheckCode.aspx页面其实什么也不用写

    <%@ Page Language="C#"  CodeFile="CheckCode.aspx.cs" Inherits="ValidateCode" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>Untitled Page</title>
    </head>
    <body>
        <form id="form1" runat="server">
           
        </form>
    </body>
    </html>

    CheckCode.aspx.cs页面代码,生成验证码的主要部分

    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.Drawing;
    
     public partial class ValidateCode : System.Web.UI.Page
     {
         private void Page_Load(object sender, System.EventArgs e)
         {
             this.CreateCheckCodeImage(GenerateCheckCode());
         }
         #region Web 窗体设计器生成的代码
         override protected void OnInit(EventArgs e)
         {
             //
             // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
             //
             InitializeComponent();
             base.OnInit(e);
         }
      
          /// <summary>
          /// 设计器支持所需的方法 - 不要使用代码编辑器修改
          /// 此方法的内容。
          /// </summary>
         private void InitializeComponent()
         {
             this.Load += new System.EventHandler(this.Page_Load);
         }
         #endregion
    
         private string GenerateCheckCode()
         {
             int number;
             char code;
             string checkCode = String.Empty;
    
             System.Random random = new Random();
    
             for (int i = 0; i < 5; i++)
             {
                 number = random.Next();
    
                 if (number % 2 == 0)
                     code = (char)('0' + (char)(number % 10));
                 else
                     code = (char)('A' + (char)(number % 26));
    
                 checkCode += code.ToString();
             }
    
             Session["CheckCodeImage"] = checkCode;
    
             return checkCode;
         }
    
         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.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();
             }
         }
     }

    下一步我们来引用上面的生成验证码页面(太简单不多说)

                           <asp:Label ID="labFlag" runat="server" Text="Label"></asp:Label>
                           <asp:TextBox ID="txtYz_Code" runat="server" MaxLength="5" Width="55px" BorderColor="Gray" BorderWidth="1px"></asp:TextBox>
                           <img title="看不清点击换一张" align="absMiddle" onclick="this.src=this.src+'?'" src="PassWord/CheckCode.aspx" />

    后台判断

            if (String.Compare(Session["CheckCodeImage"].ToString(), this.txtYz_Code.Text.Trim().ToUpper(), true) != 0)
            {
                this.labFlag.text = "验证码错误,请输入正确的验证码。";
            }
  • 相关阅读:
    Sprinig.net 双向绑定 Bidirectional data binding and data model management 和 UpdatePanel
    Memcached是什么
    Spring.net 网络示例 codeproject
    jquery.modalbox.show 插件
    UVA 639 Don't Get Rooked
    UVA 539 The Settlers of Catan
    UVA 301 Transportation
    UVA 331 Mapping the Swaps
    UVA 216 Getting in Line
    UVA 10344 23 out of 5
  • 原文地址:https://www.cnblogs.com/52net/p/2521467.html
Copyright © 2011-2022 走看看