zoukankan      html  css  js  c++  java
  • 随机验证码.ashx

    ValidateCode.ashx

    <%@ WebHandler Language="C#" class="ValidateCode" %>

    using System;
    using System.Collections;
    using System.Data;
    using System.Linq;
    using System.Web;
    using System.Web.Services;
    using System.Web.Services.Protocols;
    using System.Xml.Linq;
    using System.Drawing.Drawing2D;
    using System.Drawing;

        public class ValidateCode : IHttpHandler
        {
            public void ProcessRequest(HttpContext context)
            {
                context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
                this.CreateCheckCodeImage(GenerateCheckCode(context), context);
            }
            public bool IsReusable
            {
                get
                {
                    return false;
                }
            }
            private string GenerateCheckCode(HttpContext context)
            {
                int number;
                char code;
                string checkCode = String.Empty;

                System.Random random = new Random();

                for (int i = 0; i < 6; i++)
                {
                    number = random.Next();

                    if (number % 2 == 0)
                        code = (char)('0' + (char)(number % 10));
                    else if (number % 3 == 0)
                        code = (char)('A' + (char)(number % 26));
                    else
                        code = (char)('a' + (char)(number % 26));
                    checkCode += code.ToString();
                }

                context.Response.Cookies.Add(new HttpCookie("CheckCode", checkCode));
                //也可以存到Seesion里.        
                //context.Session["CheckCode"] = checkCode;   
                return checkCode;
            }
            private void CreateCheckCodeImage(string checkCode, HttpContext context)
            {
                if (checkCode == null || checkCode.Trim() == String.Empty)
                    return;
                Bitmap image = new 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);
                    context.Response.ClearContent();
                    context.Response.ContentType = "image/Gif";
                    context.Response.BinaryWrite(ms.ToArray());
                }
                finally
                {
                    g.Dispose();
                    image.Dispose();
                }

            }
        }
    }


    页面:

           <img src="ValidateCode.ashx" title="看不清?点击刷新" style="cursor:pointer" onclick="this.src='ValidateCode.ashx?_='+Math.random()">     

    后台代码:

    using System; using System.Data; using System.Configuration; using System.Collections; 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;

        public partial class Default : System.Web.UI.Page  

       {        

    protected void Page_Load(object sender, EventArgs e)        

    {

            }

            protected void Button1_Click(object sender, EventArgs e)  

           {         

        if (Request.Cookies["CheckCode"] == null)        

         {           

          lblMessage.Text = "您的浏览器设置已被禁用 Cookies,您必须设置浏览器允许使用 Cookies 选项后才能使用本系统。";          

           lblMessage.Visible = true;       

              return;           

      }

                if (String.Compare(Request.Cookies["CheckCode"].Value, txtCheckCode.Text, true) != 0)     

            {          

           lblMessage.Text = "验证码错误,请输入正确的验证码。";    

                 lblMessage.Visible = true;      

               return;       

          }

     //在这执行下一步     

                                    //CheckCode是存到Session里的       

          //if (Session["CheckCode"] != null)             //{             //    if (String.Compare(Session["CheckCode"].ToString(), txtCheckCode.Text.Trim(), true) != 0)             //    {             //        lblMessage.Text = "验证码错误,请输入正确的验证码。";             //        lblMessage.Visible = true;             //        return;             //    }             //    else             //    {//在这执行下一步             //    }             //}         }     }

  • 相关阅读:
    poj 1579(动态规划初探之记忆化搜索)
    hdu 1133(卡特兰数变形)
    CodeForces 625A Guest From the Past
    CodeForces 625D Finals in arithmetic
    CDOJ 1268 Open the lightings
    HDU 4008 Parent and son
    HDU 4044 GeoDefense
    HDU 4169 UVALive 5741 Wealthy Family
    HDU 3452 Bonsai
    HDU 3586 Information Disturbing
  • 原文地址:https://www.cnblogs.com/quwujin/p/5395565.html
Copyright © 2011-2022 走看看