zoukankan      html  css  js  c++  java
  • 生成验证码的一段源代码

    在页面中生成验证码的代码:

    private void Page_Load(object sender, System.EventArgs e)
      {
       
    string checkCode = GetRandomCode(4);
       Session[
    "CheckCode"= checkCode;
       SetPageNoCache();
       CreateImage(checkCode);
      }

      
    /// <summary>
      
    /// 设置页面不被缓存
      
    /// </summary>
      private void SetPageNoCache()
      {
       Response.Buffer 
    = true;
       Response.ExpiresAbsolute 
    = System.DateTime.Now.AddSeconds(-1);
       Response.Expires 
    = 0;
       Response.CacheControl 
    = "no-cache";
       Response.AppendHeader(
    "Pragma","No-Cache");
      }



    private string GetRandomCode(int CodeCount) 
      {
                
    string allChar = "0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,i,J,K,M,N,P,Q,R,S,T,U,W,X,Y,Z";
       
    string[] allCharArray = allChar.Split(','); 
       
    string RandomCode = ""
       
    int temp = -1

       Random rand 
    = new Random(); 
       
    for (int i=0;i<CodeCount;i++
       { 
        
    if (temp != -1
        { 
         rand 
    = new Random(temp*i*((int) DateTime.Now.Ticks)); 
        } 

        
    int t = rand.Next(33); 

        
    while (temp == t) 
        { 
         t 
    = rand.Next(33); 
        } 
      
        temp 
    = t; 
        RandomCode 
    += allCharArray[t]; 
       } 

       
    return RandomCode; 
      }
      
    private void CreateImage(string checkCode)
      {
       
    int iwidth = (int)(checkCode.Length * 14);
       System.Drawing.Bitmap image 
    = new System.Drawing.Bitmap(iwidth, 20);
       Graphics g 
    = Graphics.FromImage(image);
       Font f 
    = new System.Drawing.Font("Arial "10);//, System.Drawing.FontStyle.Bold);
       Brush b = new System.Drawing.SolidBrush(Color.Black);
                Brush r 
    = new System.Drawing.SolidBrush(Color.FromArgb(166,8,8));
       
       
    //g.FillRectangle(new System.Drawing.SolidBrush(Color.Blue),0,0,image.Width, image.Height);
    //   g.Clear(Color.AliceBlue);//背景色
       g.Clear(System.Drawing.ColorTranslator.FromHtml("#99C1CB"));//背景色

                
    char[] ch = checkCode.ToCharArray();
                
    for (int i = 0; i < ch.Length; i++ )
                {
                    
    if(ch[i] >= '0' && ch[i] <= '9')
                    {
                        
    //数字用红色显示
                        g.DrawString(ch[i].ToString(), f, r, 3 + (i * 12),3);
                    }
                    
    else
                    {   
    //字母用黑色显示
                        g.DrawString(ch[i].ToString(), f, b, 3 + (i * 12),3);
                    }
                }            
       System.IO.MemoryStream ms 
    = new System.IO.MemoryStream();
       image.Save(ms,System.Drawing.Imaging.ImageFormat.Jpeg);
       
    //history back 不重复 
       Response.Cache.SetNoStore();//这一句   
       Response.ClearContent();
       Response.ContentType 
    = "image/Jpeg";
       Response.BinaryWrite(ms.ToArray());
       g.Dispose();
       image.Dispose();
      }

    调用的时候设置imageurl='...aspx'就可以了。

  • 相关阅读:
    nginx-1.8.1的安装
    ElasticSearch 在3节点集群的启动
    The type java.lang.CharSequence cannot be resolved. It is indirectly referenced from required .class files
    sqoop导入导出对mysql再带数据库test能跑通用户自己建立的数据库则不行
    LeetCode 501. Find Mode in Binary Search Tree (找到二叉搜索树的众数)
    LeetCode 437. Path Sum III (路径之和之三)
    LeetCode 404. Sum of Left Leaves (左子叶之和)
    LeetCode 257. Binary Tree Paths (二叉树路径)
    LeetCode Questions List (LeetCode 问题列表)- Java Solutions
    LeetCode 561. Array Partition I (数组分隔之一)
  • 原文地址:https://www.cnblogs.com/Hard/p/1398061.html
Copyright © 2011-2022 走看看