• 验证码的实现


            protected string GetVCode(int num)       //生成验证码的方法        
            {
                char[] cha = new char[] {'1','2','3','a','b','c','e','f' };                //定义一个char数组
                string vcode=string.Empty;                                //定义一个空string字符串变量准备接收数据
                Random r = new Random();                         //实例化Random
                for (int i = 0; i < num; i++)     //循环的在数组中随机取值
                {
                    vcode += cha[r.Next(0, cha.Length - 1)].ToString();                
                }
                return vcode;
            }
     public void DrawPoints(Image img, Graphics g, int num)    //绘制干扰点的方法
            {
    
                Random r = new Random();
                //定义点的x轴的坐标
                int x;
                //定义点的y轴的坐标
                int y;
                //随机生成的第一个点
                Point p1;
                Point p2;
    
                for (int i = 0; i < num; i++)
                {
                    //给x生成随机(这个数必须在图片中)
                    x = r.Next(img.Width);
                    y = r.Next(img.Height);
                    //创建第一个点
                    p1 = new Point(x, y);
                    p2 = new Point(x + 2, y + 2);
                    //将两个点连接起来
                    g.DrawLine(Pens.Black, p1, p2);
                }
            }
            public void ProcessRequest(HttpContext context)
            {
                using (Image img = new Bitmap(65, 30))                         //定义一个画布,width=65,height=30
                {
                    using (Graphics g = Graphics.FromImage(img))    //为画布定义画家
                    {
                        g.Clear(Color.White);   //清楚整个绘面并且指定颜色填充
    
                        g.DrawRectangle(Pens.Black, 0, 0, img.Width - 1, img.Height - 1);    //描绘边框
    
                        g.DrawString(GetVCode(4), new Font("微软雅黑", 16, FontStyle.Italic | FontStyle.Strikeout), Brushes.Red, 0, 0);    //将获得string类型验证码画出来
                        DrawPoints(img, g, 50);                   //加干扰点
                    }
                    img.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);    //以二进制模式输出并且保存为指定格式
                }
            }
            <tr>
                <th>验证码:</th>
                <td><input type="text" name="VCode" /><img id="img" src="/VCode.ashx" /></td>
            </tr>
  • 相关阅读:
    装饰着模式
    观察者模式
    策略模式
    nginx配置图片防盗链
    nginx配置文件详解( 看着好长,其实不长,看了就知道了,精心整理,有些配置也是没用到呢 )
    php引用计数的基本知识
    PHP运行模式
    CURL常用命令--update20151015
    memcache相同主域名下的session共享
    memcached命令行操作详解,命令选项的详细解释
  • 原文地址:https://www.cnblogs.com/ianism/p/4328488.html
Copyright © 2020-2023  润新知