欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

asp.net实现简单数字验证码实例

程序员文章站 2022-03-15 09:33:57
...

调用

验证码:<input type="text" id="txtValidate" style="border: solid 1px #9B9B9B; width: 85px;
                        height: 17px;" />  <img src="Rnd.aspx" mce_src="Rnd.aspx" style="width: 58px; height: 17px;
                            border: solid 1px #9B9B9B" align="absmiddle" />


后台实现
Rnd.aspx.cs

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Drawing;
using System.Drawing.Imaging;

public partial class Rnd : System.Web.UI.Page
{
    private int codeLen = 5;//随机显示字符个数
    private int fineness = 100;//图片清晰度
    private int imgWidth = 65;//图片宽度
    private int imgHeight = 20;//图片高度
    private string fontFamily = "Roman";//字体名称
    private int fontSize = 12; //字体大小
    private Random random = new Random();

    protected void Page_Load(object sender, EventArgs e)
    {
        string validateCode = CreateValidateCode();
        Session["RandomNumber"] = validateCode;
        Bitmap bitmap = new Bitmap(imgWidth, imgHeight);
        DisturbBitmap(bitmap);
        DrawValidateCode(bitmap, validateCode);
        bitmap.Save(Response.OutputStream, ImageFormat.Gif);
    }
    private string CreateValidateCode()//得到随机数
    {
        string validateCode = "";
        for (int i = 0; i < codeLen; i++)
        {
            int n = random.Next(10);//返回一个小于最大值得随机数
            validateCode += n.ToString();
        }
        return validateCode;
    }
    private void DisturbBitmap(Bitmap bitmap)//获取背景图
    {
        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.White);//获取指定位置的像素颜色
                }
            }
        }
    }
    private void DrawValidateCode(Bitmap bitmap, string validateCode)
    {
        Graphics g = Graphics.FromImage(bitmap);
        Font font = new Font(fontFamily, fontSize, FontStyle.Bold);
        g.DrawString(validateCode, font, Brushes.Green, random.Next(-3, 11), random.Next(-4, 1));//在指定区域绘制文本字符
    }
}

以上就是asp.net实现简单数字验证码实例的详细内容,更多请关注其它相关文章!