asp.net實作簡單數位驗證碼實例

怪我咯
發布: 2017-03-30 13:31:51
原創
1720 人瀏覽過

呼叫

验证码:<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實作簡單數位驗證碼實例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!