zoukankan      html  css  js  c++  java
  • 验证码的使用

    前台:

      <div class="textcontent">
                验证码:
                <asp:TextBox ID="validateNumber" runat="server"></asp:TextBox>
          </div>
          <div class="textcontent">
                <asp:ImageButton ID="ValidateButton" runat="server" Width="61" Height="21" />看不清?
                 <a href="javascript:changeCode()" style="text-decoration: underline;">换一张</a>
           </div>

    前台js:

       function changeCode() {

                document.getElementById('ValidateButton').src = document.getElementById('ValidateButton').src + '?';

            }

    后台:

      ValidateButton.ImageUrl = "ValidatePage.aspx";

    后台提交:

     
                        if (!Session["code"].ToString().Trim().Equals(validateNumber.Text.Trim()))
                        {
                            ClientScript.RegisterStartupScript(ClientScript.GetType(), "myscript", "<script>$('#validateNumber').after('验证码错误')</script>");
                        }

    新建ValidatePage.aspx:

    前台不动

    后台:

     protected void Page_Load(object sender, EventArgs e)

            {

                string validateCode = CreateValidateCode();//生成验证码

                Bitmap bitmap = new Bitmap(imgWidth, imgHeight);//生成Bitmap图像

                DisturbBitmap(bitmap); //图像背景

                DrewValidateCode(bitmap, validateCode);//绘制验证码图像

                bitmap.Save(Response.OutputStream, ImageFormat.Gif);//保存图像,等待输出

            }

            private int codeLen = 4;//验证码长度

            private int fineness = 85;//图片清晰度

            private int imgWidth = 48;//图片宽度

            private int imgHeight = 24;//图片高度

            private string fontFamily = "Times New Roman";//字体名称

            private int fontSize = 14;//字体大小

            private int fontStyle = 0;//字体样式

            private int posX = 0;//绘制起始坐标X

            private int posY = 0;//绘制坐标Y

            private string CreateValidateCode() //生成验证码

            {

                string validateCode = "";

                Random random = new Random();// 随机数对象

                for (int i = 0; i < codeLen; i++)//循环生成每位数值

                {

                    int n = random.Next(10);//数字

                    validateCode += n.ToString();

                }  

               Session["code"] = validateCode;//保存验证码

                return validateCode;// 返回验证码         }

            private void DisturbBitmap(Bitmap bitmap)//图像背景

            {

                Random random = new Random();//通过随机数生成

                for (int i = 0; i < bitmap.Width; i++)//通过循环嵌套,逐个像素点生成

                {

                    for (int j = 0; j < bitmap.Height; j++)

                    {

                        if (random.Next(90) <= this.fineness)

                            bitmap.SetPixel(i, j, Color.LightGray);

                    }

                }

            }

            private void DrewValidateCode(Bitmap bitmap, string validateCode)//绘制验证码图像

            {

                Graphics g = Graphics.FromImage(bitmap);//获取绘制器对象

                Font font = new Font(fontFamily, fontSize, FontStyle.Bold);//设置绘制字体

                g.DrawString(validateCode, font, Brushes.Black, posX, posY);//绘制验证码图像

            }

        }

  • 相关阅读:
    你的面向对象技术在哪个级别?
    图解面向对象中的聚合与耦合概念
    系统架构39问
    谈谈对一些软件架构设计箴言的理解
    mysql 常用见的错误处理
    mysql 局域网连接
    mysql版本:'for the right syntax to use near 'identified by 'password' with grant option'
    Ubuntu系统开放指定端口
    spring cloud 项目
    spring cloud 知识总结
  • 原文地址:https://www.cnblogs.com/Yida-Tingting/p/4568449.html
Copyright © 2011-2022 走看看