最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#使用GDI+實(shí)現(xiàn)生成驗(yàn)證碼

 更新時(shí)間:2022年05月16日 09:29:18   作者:springsnow  
這篇文章介紹了C#使用GDI+實(shí)現(xiàn)生成驗(yàn)證碼的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

一、概述

一般處理程序 ashx :它沒(méi)有服務(wù)器控件,用response輸出什么就是什么。

生成驗(yàn)證碼原理:產(chǎn)生隨機(jī)字符,并將字符生成為圖片,同時(shí)儲(chǔ)存到Session里去,然后驗(yàn)證用戶輸入的內(nèi)容是否與Session中的驗(yàn)證碼相符即可。

效果圖:用戶可以點(diǎn)擊切換驗(yàn)證碼信息。

二、一般處理程序

    public class CheckCodeHandler : IHttpHandler, IRequiresSessionState//使用到Session,需要實(shí)現(xiàn)此接口IRequiresSessionState
    {
        private int intLength = 5;        //長(zhǎng)度
        private string strIdentify = "Identify"; //隨機(jī)字串存儲(chǔ)鍵值,以便存儲(chǔ)到Session中


        /// <summary>
        /// 生成驗(yàn)證圖片核心代碼
        /// </summary>
        /// <param name="context"></param>
        public void ProcessRequest(HttpContext context)
        {
            //背景用白色填充
            Bitmap map = new Bitmap(200, 60);
            Graphics g = Graphics.FromImage(map);
            g.FillRectangle(new SolidBrush(Color.White), 0, 0, 200, 60);

            //將隨機(jī)生成的字符串繪制到圖片上
            string letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
            Random r = new Random();
            StringBuilder s = new StringBuilder();
            Font font = new Font(FontFamily.GenericSerif, 48, FontStyle.Bold, GraphicsUnit.Pixel);

            for (int i = 0; i < intLength; i++)
            {
                s.Append(letters.Substring(r.Next(0, letters.Length - 1), 1));
                g.DrawString(s[s.Length - 1].ToString(), font, new SolidBrush(Color.Blue), i * 38, r.Next(0, 15));
            }
            font.Dispose();
            context.Session[strIdentify] = s.ToString(); //先保存在Session中,驗(yàn)證與用戶輸入是否一致

            //生成干擾線條,混淆背景
            Pen pen = new Pen(new SolidBrush(Color.Blue), 2);
            for (int i = 0; i < 10; i++)
            {
                g.DrawLine(pen, new Point(r.Next(0, 199), r.Next(0, 59)), new Point(r.Next(0, 199), r.Next(0, 59)));
            }
            pen.Dispose();

            //設(shè)置輸出流圖片格式
            context.Response.ContentType = "image/gif";
            map.Save(context.Response.OutputStream, ImageFormat.Gif);
            map.Dispose();

            context.Response.End();
        }
        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }

三、在頁(yè)面調(diào)用

<img src="CheckCodeHandler.ashx" alt="驗(yàn)證碼" style="width: 60px; height: 24px" />
if (this.TextBox1.Text.ToUpper().Trim() != Session["strIdentify"].ToString().ToUpper().Trim())
{
    Response.Write("<script>alert('驗(yàn)證碼不正確')</script>");
}
else
{
    Response.Write("<script>alert('登錄成功')</script>");
}

到此這篇關(guān)于C#使用GDI+實(shí)現(xiàn)生成驗(yàn)證碼的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C#中Abstract方法和Virtual方法的區(qū)別

    C#中Abstract方法和Virtual方法的區(qū)別

    這篇文章介紹了C#中Abstract方法和Virtual方法的區(qū)別,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • C#利用Spire.Pdf包實(shí)現(xiàn)為PDF添加數(shù)字簽名

    C#利用Spire.Pdf包實(shí)現(xiàn)為PDF添加數(shù)字簽名

    Spire.PDF for .NET 是一款專業(yè)的基于.NET平臺(tái)的PDF文檔控制組件。它能夠讓開(kāi)發(fā)人員在不使用Adobe Acrobat和其他外部控件的情況下,運(yùn)用.NET 應(yīng)用程序創(chuàng)建,閱讀,編寫和操縱PDF 文檔。本文將利用其實(shí)現(xiàn)添加數(shù)字簽名,需要的可以參考一下
    2022-08-08
  • C#中調(diào)用MySQL存儲(chǔ)過(guò)程的方法

    C#中調(diào)用MySQL存儲(chǔ)過(guò)程的方法

    這篇文章主要介紹了C#中調(diào)用MySQL存儲(chǔ)過(guò)程的方法,涉及C#數(shù)據(jù)庫(kù)操作的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • C#爬取動(dòng)態(tài)網(wǎng)頁(yè)上信息得流程步驟

    C#爬取動(dòng)態(tài)網(wǎng)頁(yè)上信息得流程步驟

    動(dòng)態(tài)內(nèi)容網(wǎng)站使用 JavaScript 腳本動(dòng)態(tài)檢索和渲染數(shù)據(jù),爬取信息時(shí)需要模擬瀏覽器行為,否則獲取到的源碼基本是空的,這篇文章主要給大家詳細(xì)介紹了C#爬取動(dòng)態(tài)網(wǎng)頁(yè)上信息得流程步驟,需要的朋友可以參考下
    2024-10-10
  • C# 中屬性PropertyInfo的setvalue用法說(shuō)明

    C# 中屬性PropertyInfo的setvalue用法說(shuō)明

    這篇文章主要介紹了C# 中屬性PropertyInfo的setvalue用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-01-01
  • C#中實(shí)現(xiàn)任意List的全組合算法代碼

    C#中實(shí)現(xiàn)任意List的全組合算法代碼

    這篇文章主要是介紹了.net C# 實(shí)現(xiàn)任意List的全組合算法實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2013-05-05
  • C#實(shí)現(xiàn)讀寫分離的五種方法小結(jié)

    C#實(shí)現(xiàn)讀寫分離的五種方法小結(jié)

    在C#中實(shí)現(xiàn)分離功能通常指的是將不同的邏輯或責(zé)任分配到不同的類或組件中,以增強(qiáng)代碼的可讀性、可維護(hù)性和可擴(kuò)展性,這通常涉及到設(shè)計(jì)模式、依賴注入和接口的使用,下面是一些在C#中實(shí)現(xiàn)分離功能的基本方法,需要的朋友可以參考下
    2025-03-03
  • C#實(shí)現(xiàn)將文件轉(zhuǎn)換為XML的方法

    C#實(shí)現(xiàn)將文件轉(zhuǎn)換為XML的方法

    這篇文章主要介紹了C#實(shí)現(xiàn)將文件轉(zhuǎn)換為XML的方法,實(shí)例分析了office文件與xml的相互轉(zhuǎn)換技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-12-12
  • C#中GridView動(dòng)態(tài)添加列的實(shí)現(xiàn)方法

    C#中GridView動(dòng)態(tài)添加列的實(shí)現(xiàn)方法

    這篇文章主要介紹了C#中GridView動(dòng)態(tài)添加列的實(shí)現(xiàn)方法,涉及C#中GridView的相關(guān)使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • 在C#項(xiàng)目中調(diào)用C++編寫的動(dòng)態(tài)庫(kù)的三種方式

    在C#項(xiàng)目中調(diào)用C++編寫的動(dòng)態(tài)庫(kù)的三種方式

    這篇文章給大家介紹了三種方式詳解如何在C#項(xiàng)目中調(diào)用C++編寫的動(dòng)態(tài)庫(kù),文中通過(guò)代碼示例給大家介紹的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下
    2024-01-01

最新評(píng)論

双桥区| 建水县| 古浪县| 改则县| 丰都县| 余干县| 舒城县| 九寨沟县| 柳河县| 石棉县| 凤山县| 华亭县| 麦盖提县| 广宗县| 宁波市| 文安县| 威宁| 黎城县| 时尚| 汕尾市| 梁山县| 山丹县| 彰化市| 宜川县| 临朐县| 昆山市| 阜新市| 连云港市| 施秉县| 荆州市| 淮阳县| 子洲县| 曲阜市| 天气| 南和县| 定陶县| 土默特左旗| 廊坊市| 伊吾县| 南充市| 黄陵县|