zoukankan      html  css  js  c++  java
  • 验证码

    using System;

    using System.Web;

    using System.Drawing;

    using System.Drawing.Drawing2D;

    using System.Web.SessionState;

    public class WaterMark : IHttpHandler,IRequiresSessionState//要使用session必须实现该接口,记的要导入System

     {        

    public void ProcessRequest (HttpContext context)    

         {         string cheakCode=GenCode(5);//产生5位随机字符   

          context.Session["Code"]=cheakCode;//将字符串保存到Session中,以便需要时进行验证    

         System.Drawing.Bitmap image=new System.Drawing.Bitmap(70,22);       

      Graphics g=Graphics.FromImage(image);       

      try{//生成随机生成器       

      Random random=new Random();      

       //清空图片背景色     

        g.Clear(Color.White );    

         // 画图片的背景噪音线        

         int i;           

      for (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.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);         

           //画图片的前景噪音点          

        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();     

         } 

    }     

    /// <summary>   

       /// 产生随机字符串 

        /// </summary> 

        /// <param name="num">随机出几个字符</param>    

      /// <returns>随机出的字符串</returns>   

       private string GenCode(int num)    

      {       

       string str = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";   

         char[] chastr = str.ToCharArray(); 

    //string[] source ={ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "#", "$", "%", "&", "@" };     

         string code = "";      

        Random rd = new Random();      

        int i;     

         for (i = 0; i < num; i++)       

       {              //code += source[rd.Next(0, source.Length)];       

          code += str.Substring(rd.Next(0, str.Length), 1);    

          }       

       return code;   

       }   

       public bool IsReusable    

    {        

      get        

      {      

           return false;    

          }   

    }    

  • 相关阅读:
    [经验] 如何在虚拟机上安装 CentOS
    [经验] Java 使用 netty 框架, 向 Unity 客户端的 C# 实现通信[2]
    [经验] Java 使用 netty 框架, 向 Unity 客户端的 C# 实现通信 [1]
    [经验] 关于 Java 中的非空判断
    [经验] Java Web 项目怎么部署到 Linux 系统上
    求和
    引用与指针
    C++学习前言
    大O
    ubuntu连接不上mysql问题
  • 原文地址:https://www.cnblogs.com/wangqianqiannb/p/3480353.html
Copyright © 2011-2022 走看看