• 验证码实现


    这里贴一段验证码的代码,只做记录,方便直接使用。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Drawing;
    using System.IO;
    using System.Drawing.Imaging;
    
    namespace Elink.Web.Authencation.CheckCode
    {
        public partial class SafeCode : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                string chkCode = string.Empty;
                //颜色列表,用于验证码、噪线、噪点 
                Color[] color = new Color[] { Color.Black, Color.Red, Color.Blue, Color.Green, Color.Orange, Color.Brown, Color.Brown, Color.DarkBlue };
                //字体列表,用于验证码 
                string[] font = new string[] { "Times New Roman", "MS Mincho", "Book Antiqua", "Gungsuh", "PMingLiU", "Impact" };
                //验证码的字符集,去掉了一些容易混淆的字符 
                char[] character = { '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'R', 'S', 'T', 'W', 'X', 'Y' };
    
                Random rnd = new Random();
    
                //生成验证码字符串 
                for (int i = 0; i < 4; i++)
                {
                    chkCode += character[rnd.Next(character.Length)];
                }
                Session["CheckCode"] = chkCode;
    
                Bitmap bmp = new Bitmap(100, 20);
                Graphics g = Graphics.FromImage(bmp);
                g.Clear(Color.White);
    
                //画噪线 
                for (int i = 0; i < 5; i++)
                {
                    int x1 = rnd.Next(100);
                    int y1 = rnd.Next(20);
                    int x2 = rnd.Next(100);
                    int y2 = rnd.Next(20);
                    Color clr = color[rnd.Next(color.Length)];
                    g.DrawLine(new Pen(clr), x1, y1, x2, y2);
                }
    
                //画验证码字符串 
                for (int i = 0; i < chkCode.Length; i++)
                {
                    string f = font[rnd.Next(font.Length)];
                    Font ft = new Font(f, 12);
    
                    Color clr = color[rnd.Next(color.Length)];
                    g.DrawString(chkCode[i].ToString(), ft, new SolidBrush(clr), i * 20 + 8, 4);
                }
    
                //画噪点 
                for (int i = 0; i < 40; i++)
                {
                    int x = rnd.Next(bmp.Width);
                    int y = rnd.Next(bmp.Height);
                    Color clr = color[rnd.Next(color.Length)];
                    bmp.SetPixel(x, y, clr);
                }
                //清除该页输出缓存,设置该页无缓存 
                Response.Buffer = true;
                Response.ExpiresAbsolute = DateTime.Now.AddMilliseconds(0);
                Response.Expires = 0;
                Response.CacheControl = "no-cache";
                Response.AddHeader("Pragma", "No-Cache");
    
                //将验证码图片写入内存流,并将其以 "image/Png" 格式输出 
                MemoryStream ms = new MemoryStream();
    
                try
                {
                    bmp.Save(ms, ImageFormat.Png);
                    Response.ClearContent();
                    Response.ContentType = "image/Png";
                    Response.BinaryWrite(ms.ToArray());
                    Response.End();
                }
                finally
                {
                    ////显式释放资源 
                    bmp.Dispose();
                    g.Dispose();
                }
    
            }
        }
    }
    View Code

    获取session保存的验证码内容

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using NAIS.Common;
    using Elink.Common;
    using System.Web.Script.Serialization;
    using System.Web.SessionState;
    
    namespace Elink.Web.RelationService
    {
        /// <summary>
        /// LoginGetCheckCodeValue 的摘要说明
        /// </summary>
        public class LoginGetCheckCodeValue : IHttpHandler, IRequiresSessionState
        {
    
            public void ProcessRequest(HttpContext context)
            {
                //控件ID
                string returnFlag = context.Request["returnFlag"];
                try
                {
                    string reValue = string.Empty;
                    if (returnFlag.ToUpper() == "CHECKCODE")
                    {
                        reValue = SessionUtils.GetSessionValue(context.Session["CheckCode"]);
                    }
                    JavaScriptSerializer jsSerializer = new JavaScriptSerializer();
                    string json = jsSerializer.Serialize(new { result = true, Data = reValue });
                    context.Response.ContentType = "text/plain";
                    context.Response.Write(json);
                }
                catch (Exception ex)
                {
                    LogUtil.Logger.Error(string.Format("用户登录一般处理程序LoginGetCheckCodeValue:ProcessRequest获取指定返回值异常,指定返回值为={0}", returnFlag), ex);
                }
            }
    
            public bool IsReusable
            {
                get
                {
                    return false;
                }
            }
        }
    }
    View Code


     

  • 相关阅读:
    jquery easy ui 1.3.4 窗口,对话框,提示框(5)
    jquery easy ui 1.3.4 布局layout(4)
    4.1 avd
    android sdk 安装排错
    推荐一个非常COOL的开源相册程序!
    JQuery LazyLoad实现图片延迟加载-探究
    Js和asp.net各自设置的cookie相互读取的方法
    js html5推送 实例
    给网页添加[回到顶部]和[去底部]功能
    Session赋值(备注)
  • 原文地址:https://www.cnblogs.com/LL-723/p/3490774.html
Copyright © 2020-2023  润新知