• C#之asp.net 及MVC 生成动态验证码:


    C#之asp.net 及MVC 生成动态验证码:

    1.生成验证码字符串

    复制代码
    // 随机生成指定长度的验证码字符串
    private
    string RandomCode(int length) { string s = "0123456789zxcvbnmasdfghjklqwertyuiop"; StringBuilder sb = new StringBuilder(); Random rand = new Random(); int index; for(int i = 0; i < length; i++) { index = rand.Next(0, s.Length); sb.Append(s[index]); } return sb.ToString(); }
    复制代码

     2.绘制干扰线

    复制代码
    private void PaintInterLine(Graphics g,int num,int width,int height)
    {
        Random r = new Random();
        int startX, startY, endX, endY;
        for(int i = 0; i < num; i++)
        {
            startX = r.Next(0, width);
            startY = r.Next(0, height);
            endX = r.Next(0, width);
            endY = r.Next(0, height);
            g.DrawLine(new Pen(Brushes.Red), startX, startY, endX, endY);
        }
    }
    复制代码

    3.生成验证码

    复制代码
    public ActionResult GetValidateCode()
    {
        byte[] data = null;
        string code = RandomCode(5);
        TempData["code"] = code;
        //定义一个画板
        MemoryStream ms = new MemoryStream();
        using(Bitmap map=new Bitmap(100, 40))
        {
            //画笔,在指定画板画板上画图
            //g.Dispose();
            using (Graphics g = Graphics.FromImage(map))
            {
                g.Clear(Color.White);
                g.DrawString(code,new Font("黑体",18.0F),Brushes.Blue,new Point(10,8));
                //绘制干扰线
                PaintInterLine(g, 30, map.Width, map.Height);
            }
            map.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
        }
        data = ms.GetBuffer();
        return File(data, "image/jpeg");
    }
    复制代码

    4.前段获取验证码

    复制代码
    <form method="post" id="form1" action="/ValidateCode/login">
        <div class="code">
            <input type="text" name="code" />
            <img id="code" src="/ValidateCode/GetValidateCode/" />
            <a style="text-decoration:none; cursor:pointer" id="chCode">看不清?换一个</a>
        </div>
        <div >
            <input type="submit"  value="登录" />
        </div>
    </form>
    复制代码

     5.后台验证

    复制代码
    public ActionResult Login()
    {
        string code = Request.Form["code"].ToString();
        if (string.IsNullOrEmpty(code))
        {
            return Content("验证输不能为空");
        }
        if (!code.Equals(TempData["code"]))
        {
            return Content("验证输不正确");
        }
        return Content("验证输入正确");
    }
    复制代码
     
  • 相关阅读:
    CH1301 邻值查找【set应用】
    poj1185 炮兵阵地【状压DP】
    codeforces#516 Div2---ABCD
    2017ACM-ICPC沈阳区域赛
    poj2411 Mondriaan's Dream【状压DP】
    hdu2196 Computer【树形DP】【换根法】
    poj3345 Bribing FIPA【树形DP】【背包】
    poj1463 Strategic game【树形DP】
    poj1191 棋盘分割【区间DP】【记忆化搜索】
    CH5E09 能量相连【区间DP】
  • 原文地址:https://www.cnblogs.com/mslalan/p/7843446.html
Copyright © 2020-2023  润新知