成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識(shí)庫 > 如何使用ASP.NET制作簡單的驗(yàn)證碼

如何使用ASP.NET制作簡單的驗(yàn)證碼

熱門標(biāo)簽:海東防封電銷卡 上海市三維地圖標(biāo)注 云南外呼系統(tǒng)代理 西寧電銷外呼系統(tǒng)公司 寧德防封版電銷卡 聊城智能電銷機(jī)器人電話 安陸市地圖標(biāo)注app 南昌自動(dòng)外呼系統(tǒng)線路 辦公用地圖標(biāo)注網(wǎng)點(diǎn)怎么操作

大家都知道驗(yàn)證碼是以圖片形式展示的,而且是動(dòng)態(tài)生成的,這樣就需要我們?nèi)ギ嫵鏊?,那不得不提到是GDI+繪圖了

科普一下,什么是GDI+?

GDI+是圖形設(shè)備接口(GDI)的高級(jí)版本, 提供了各種豐富的圖形圖像處理功能。GDI+主要由二維矢量圖形、圖像處理和版式3部分組成。GDI+為使用各種字體、字號(hào)和樣式來顯示文本這種復(fù)雜任務(wù)提供了大量的支持。

下面說說驗(yàn)證碼,對(duì)于驗(yàn)證碼這樣的圖片,我覺得是由兩部分組成的,一部分是矩形的背景,另一部分是在其上的字母數(shù)字組合(有的時(shí)候有漢字,有的時(shí)候是純字母或者純數(shù)字,這個(gè)沒有統(tǒng)一規(guī)定,怎么選擇看你~)。對(duì)于矩形的背景我們可以直接把其當(dāng)成畫布,字母數(shù)字組合呢?我們可以利用隨機(jī)數(shù)去拼出一組新組合。這樣整個(gè)過程我們都想好了,下面看下代碼吧:
聲明一下,我寫的這個(gè)驗(yàn)證碼為5個(gè)字符長度,由大小寫英文字母+數(shù)字隨機(jī)組合。

private readonly char[] constant = { 
  '0','1','2','3','4','5','6','7','8','9', 
  'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z', 
  'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};//一個(gè)由數(shù)字和大小寫英文字母組成的字符數(shù)組
 
  protected void Page_Load(object sender, EventArgs e)
  {
   Bitmap bitmap = new Bitmap(100, 25);//創(chuàng)建一個(gè)位圖,寬100,高25,就是我所說的第一部分,矩形背景
   Graphics g = Graphics.FromImage(bitmap);//創(chuàng)建畫布
   g.Clear(Color.YellowGreen);//為畫布填充黃綠色
 
   Font font1 = new Font("Arial", 15);//設(shè)置字體類型和大小 
   Brush brush = new SolidBrush(Color.Blue);//設(shè)置畫刷顏色
   Pen myPen = new Pen(Color.Blue, 5);//創(chuàng)建畫筆對(duì)象
 
   StringBuilder random = new StringBuilder(5); //創(chuàng)建可變字符串對(duì)象,用于存放隨機(jī)生成的驗(yàn)證碼
   Random rd = new Random();//創(chuàng)建一個(gè)隨機(jī)數(shù)生成器對(duì)象
   for (int i = 0; i  random.Capacity; i++)
   {
   random.Append(constant[rd.Next(62)]);//生成一個(gè)隨機(jī)字符加到random里
   }
 
   g.DrawString(random.ToString(), font1, brush, 10, 5);//在畫布上畫出字符串
 
   System.IO.MemoryStream ms = new System.IO.MemoryStream();//創(chuàng)建數(shù)據(jù)流MemoryStream
   bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);//指定圖像的輸出格式為gif
 
   Response.ClearContent();
   Response.ContentType = "image/Gif";
   Response.BinaryWrite(ms.ToArray());//輸出二進(jìn)制數(shù)據(jù)流
  }

生成的效果是這樣的:

大家可能會(huì)覺得這樣看起來很容易辨識(shí),跟我們平時(shí)登錄網(wǎng)站時(shí)輸入的驗(yàn)證碼比起來有點(diǎn)像個(gè)小學(xué)生。當(dāng)然,我們可以做些改變,比較加上一定的角度。

private readonly char[] constant = { 
  '0','1','2','3','4','5','6','7','8','9', 
  'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z', 
  'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};//一個(gè)由數(shù)字和大小寫英文字母組成的字符數(shù)組
 
  protected void Page_Load(object sender, EventArgs e)
  {
   Bitmap bitmap = new Bitmap(100, 25);//創(chuàng)建一個(gè)位圖,寬100,高25,就是我所說的第一部分,矩形背景
   Graphics g = Graphics.FromImage(bitmap);//創(chuàng)建畫布
   g.Clear(Color.YellowGreen);//為畫布填充黃綠色
 
   Font font1 = new Font("Arial", 15);//設(shè)置字體類型和大小 
   float angle = 60;//旋轉(zhuǎn)的一個(gè)基礎(chǔ)角度
   float length = 0;//顯示字符的基礎(chǔ)位置,往后看
   Brush brush = new SolidBrush(Color.Blue);//設(shè)置畫刷顏色
   Pen myPen = new Pen(Color.Blue, 5);//創(chuàng)建畫筆對(duì)象
 
   StringBuilder random = new StringBuilder(5); //創(chuàng)建可變字符串對(duì)象,用于存放隨機(jī)生成的驗(yàn)證碼
   Random rd = new Random();//創(chuàng)建一個(gè)隨機(jī)數(shù)生成器對(duì)象
   for (int i = 0; i  random.Capacity; i++)
   {
    random.Append(constant[rd.Next(62)]);//生成一個(gè)隨機(jī)字符加到random里
 
    g.ResetTransform();//將畫布重置矩陣
    SizeF size = g.MeasureString(random[random.Length - 1].ToString(), font1);//得到新生成字符的尺寸
    g.TranslateTransform(length + size.Width / 2, size.Height / 2);//選擇此次旋轉(zhuǎn)的中心位置
    g.RotateTransform((float)rd.NextDouble() * angle * 2 - angle);//進(jìn)行隨機(jī)角度旋轉(zhuǎn)
    g.DrawString(random[random.Length - 1].ToString(), font1, brush, new PointF(-size.Width / 2, -size.Height / 2));//注意,這里不是前一個(gè)例子,一次性把5個(gè)字符全部畫出來,而是一個(gè)一個(gè)畫
    length += size.Width;//保證下次畫字符的位置不會(huì)覆蓋前一次的字符
   }
 
   System.IO.MemoryStream ms = new System.IO.MemoryStream();//創(chuàng)建數(shù)據(jù)流MemoryStream
   bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);//指定圖像的輸出格式為gif
 
   Response.ClearContent();
   Response.ContentType = "image/Gif";
   Response.BinaryWrite(ms.ToArray());//輸出二進(jìn)制數(shù)據(jù)流
  }

這時(shí)生成的效果是這樣的:

是不是看起來更專業(yè)一些了呢?如果大家還是覺得不滿意的話,可以看下GDI+的相關(guān)內(nèi)容,通過添加一些噪點(diǎn)的元素,或者刪除線這樣子的東西來達(dá)到提高識(shí)別難度的目的,我這里就不一一列舉啦。
關(guān)于如何畫驗(yàn)證碼我們說過了,但是還有兩點(diǎn)問題我還是想多說一下。
1、我們實(shí)際輸出的是一個(gè)二進(jìn)制的流,如何做到顯示到頁面上與頁面其他元素共存呢?
這里通用的一種方法就是把畫驗(yàn)證碼的這段代碼放到一個(gè)獨(dú)立的Web窗體頁中,在另一個(gè)需要顯示驗(yàn)證碼的頁面放一個(gè)img>元素,把其src屬性指向該驗(yàn)證碼頁的url。比如我寫的一段是這樣:

復(fù)制代碼 代碼如下:

asp:Image ID="image_validatecode" runat="server" ImageUrl="~/PublicMethod/ValidateCode.aspx" style="padding-left:3px"/>

其實(shí)這里我是用大家通用的方法,不過我先前也有單獨(dú)寫一個(gè)web自定義控件,專門生成驗(yàn)證碼使用,但是當(dāng)拖入到頁面中后運(yùn)行,它還是會(huì)把頁面其他元素給覆蓋掉,具體原因我也不清楚。

2、驗(yàn)證碼主要目的還是用于驗(yàn)證使用的,所以我們?cè)谟脩裘?,密碼是否合法外,同時(shí)也要判斷當(dāng)前輸入的驗(yàn)證碼是不是與圖片上的驗(yàn)證碼一致。
我上面的代碼中并沒有寫這塊,其實(shí)只要在隨機(jī)生成最終驗(yàn)證碼之后,把其值存入一個(gè)session中去就可以了。然后在判斷用戶名,密碼的同時(shí)去比較一下這個(gè)session值就OK了。如:

復(fù)制代碼 代碼如下:

Session["login_validate_code"] = random.ToString();

3、如何用戶沒有看清此張驗(yàn)證碼,想換一張如何實(shí)現(xiàn)?
可以通過腳本給img元素的src屬性重新賦值url實(shí)現(xiàn),當(dāng)然,麻煩點(diǎn)的話也可以使用ajax去實(shí)現(xiàn)。大家可以自己試試。

以上就是本文給大家分享的制作驗(yàn)證碼的全部過程,希望大家能夠喜歡。

您可能感興趣的文章:
  • ASP.NET驗(yàn)證碼實(shí)現(xiàn)(附源碼)
  • asp.net驗(yàn)證碼的簡單制作
  • ASP.NET驗(yàn)證碼(3種)
  • asp.net之生成驗(yàn)證碼的方法集錦(一)
  • asp.net驗(yàn)證碼圖片生成示例
  • ASP.NET MVC驗(yàn)證碼功能實(shí)現(xiàn)代碼
  • asp.net生成驗(yàn)證碼(純數(shù)字)
  • asp.net ajax實(shí)現(xiàn)無刷新驗(yàn)證碼
  • 封裝的一個(gè)asp.net驗(yàn)證碼類
  • ASP.NET中的無刷新驗(yàn)證碼的開發(fā)(完整代碼)
  • asp.net簡單生成驗(yàn)證碼的方法

標(biāo)簽:衢州 崇左 洛陽 青海 南寧 贛州 汕尾

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《如何使用ASP.NET制作簡單的驗(yàn)證碼》,本文關(guān)鍵詞  如何,使用,ASP.NET,制作,簡單,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《如何使用ASP.NET制作簡單的驗(yàn)證碼》相關(guān)的同類信息!
  • 本頁收集關(guān)于如何使用ASP.NET制作簡單的驗(yàn)證碼的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    精品无人区麻豆乱码久久久| 亚洲人被黑人高潮完整版| 羞羞视频网站在线免费观看| 免费成人av网站| 日韩精品在线不卡| 潮喷失禁大喷水aⅴ无码| 亚洲一区二区三区在线免费观看| 欧美成人高清在线| 日韩亚洲欧美中文三级| 亚洲男人天堂手机在线| 久久网中文字幕| 成人免费视频视频在线观看免费| 国产免费一区二区三区视频| 亚洲视频免费在线观看| 91国产精品电影| 日本黄色免费网站| 鲁片一区二区三区| 啪啪av大全导航福利综合导航| 在线看的网站你懂| 成都免费高清电影| 日本三级韩国三级久久| 一级日韩一级欧美| 亚洲免费av一区二区三区| 国产91精品在线观看| av黄色免费| 欧美精品中文字幕亚洲专区| 亚洲欧洲精品一区二区三区波多野1战4| 男人操女人免费软件| 欧美在线观看一区二区| 欧美国产日韩在线视频| 亚洲美女黄色| 免费观看的黄色网址| 一区二区亚洲欧洲国产日韩| 成人444kkkk在线观看| 一广人看www在线观看免费视频| 日本黄色片在线观看| 毛片手机在线观看| 超碰成人在线免费| 精品中国亚洲| 在线中文字幕第一页| 日韩欧美一区二区三区四区| 日韩免费大片| 91精品国产高清自在线| 欧美日韩国产a| 国产三级视频在线播放| 免费在线毛片网站| 欧美hdxxxx| 国产aⅴ精品一区二区三区久久| 精品国产乱码久久久久久夜甘婷婷| 婷婷成人综合| 亚洲国产综合自拍| 懂色av粉嫩av浪潮av| 国产一卡二卡在线| 欧美性猛交xxxxxxxx| 亚洲熟妇无码久久精品| 尤物在线视频| 国产精品毛片久久久久久久久久99999999| 日本在线电影一区二区三区| 激情欧美丁香| 久久xxxx| 51精产品一区一区三区| 69av在线播放| 成人午夜精品无码区| 国产三级电影在线观看| 久久久夜精品| 狠狠激情五月综合婷婷俺| 亚洲美女在线国产| 欧洲精品在线播放| 操喷在线视频| 天天人人精品| 91免费看片在线| 依依成人综合视频| 国产视频一区二区三区在线观看| 欧美亚洲另类色图| 久草在线在线| 杨幂一区二区国产精品| 欧美熟妇另类久久久久久不卡| 午夜久久黄色| 久久毛片亚洲| 亚洲精品aaaa| 久久精品久久精品国产大片| 91福利在线观看| 欧美大片免费观看网址| 2020国产精品小视频| 国产精品毛片久久| 亚洲区中文字幕| 自由日本语热亚洲人| 亚洲最新视频在线观看| 免费观看一级特黄欧美大片| 直接在线观看的三级网址| 欧美日韩在线另类| 精品人妻一区二区色欲产成人| 国产精品区一区二区三| 国产成人精品一区二区三区福利| 在线观看一区二区精品视频| 日本亚洲欧美天堂免费| 国产农村妇女毛片精品久久麻豆| 两女双腿交缠激烈磨豆腐| 色综合天天狠狠| 亚洲在线免费看| 日本亚洲欧洲精品| a毛片在线播放| 男人av在线播放| 国产欧美日韩中文久久| 午夜a一级毛片亚洲欧洲| 欧洲一区在线观看| 这里只有精品视频在线观看| 久久久久国产精品免费| 在线电影欧美日韩一区二区私密| 国产91视频在线| 亚欧无线一线二线三线区别| 久久久久久亚洲| 中文字幕视频精品一区二区三区| 99久久国产视频| 精品国产午夜福利| 国产精品三级一区二区| 成年网站在线视频网站| 亚洲人人精品| 天天操天天操天天色天天要| 亚洲图片88| 亚洲激情欧美色图| 日韩精品一区二区三区四区视频| 日本一区二区三区视频在线| 欧美成人video| 日韩亚洲欧美一区二区| 微拍福利一区二区| 国产伊人网av.| 在线综合视频| 天堂v视频永久在线播放| 色哟哟网站入口亚洲精品| 成人精品久久| 熟妇人妻va精品中文字幕| 欧美大片在线看免费观看| 最近中文字幕mv第三季歌词| 99久久婷婷国产| 国产ts丝袜人妖系列视频| 少妇人妻丰满做爰xxx| 日本一区二区精品| 五月婷婷丁香色| 99精品在线播放| 精品视频在线一区二区在线| 污污片在线免费视频| 黄色电影网站在线观看| 欧美蜜桃一区二区三区| 日韩精品久久久毛片一区二区| 久久亚洲精华国产精华液| 欧美偷拍一区二区三区| 欧美一级成年大片在线观看| 伊人久久大香线蕉av超碰演员| 亚洲区成人777777精品| 国产精品麻豆欧美日韩ww| 国产精品久久久久久久无码| 91精品婷婷国产综合久久蝌蚪| 天天看天天色| 日韩欧美精品免费| 91最新地址在线播放| 欧美日韩在线亚洲一区蜜芽| 国产18精品乱码免费看| 99视频在线观看视频| yellow视频在线观看一区二区| 亚洲无线一线二线三线区别av| 大香伊人久久| 成人精品高清在线视频| 亚洲图片欧美视频| 中文在线字幕免费观| 欧美肥老妇视频| 国产日韩在线免费| 日韩中文在线视频| 大地资源网3页在线观看| 嫩草影院永久一二三入口| 欧美xxxxbbbb在线播放| 亚洲www啪成人一区二区麻豆| 水蜜桃亚洲一二三四在线| hd国产人妖ts另类视频| 精品国产网站地址| 伦理片一区二区| 欧美国产日韩在线观看| 自拍在线播放| 在线观看视频免费一区二区三区| 久青草国产97香蕉在线视频| 国产手机视频在线观看| 中文字幕丰满人伦在线| 亚洲天堂视频一区| 香蕉视频黄色片| 亚洲一区二区中文字幕| ts人妖另类在线| www.亚洲一区二区| www.com日本| 成人嫩草影院| 国产精品呻吟| 国产一区二区三区网站| 久久久噜噜噜久久中文字幕色伊伊| 国产欧美一区二区精品性色| 精品久久久久一区二区三区| 超碰在线观看99| 成人欧美一区二区三区黑人一| 99久久精品无码一区二区毛片| 99精品一区二区三区的区别| 亚洲区一区二区| av亚洲在线观看| 国产视频一二三四区| 99免费在线视频观看| 欧美另类激情| 少妇激情av一区二区三区| 国产三级欧美三级日产三级99| 国产大片一区二区三区| 日本三级免费网站| www.狠狠干| 中文字幕日产av| 2021av在线| 欧美日韩一区二区免费在线观看| 欧美大交乱xxxx| 国产麻豆日韩欧美久久| 国产成人精品综合久久久久99| 久蕉依人在线视频| 欧美高清视频手机在在线| 穿情趣内衣被c到高潮视频| 精品日韩在线播放| www.国产成人| 一区二区三区视频观看| 视频免费在线观看| 91精品精品| 蜜桃福利入口| 捆绑裸体绳奴bdsm亚洲| 独立日3在线观看完整版| 成年人网站在线观看免费| 久久综合久久综合久久| 国产亚洲aⅴaaaaaa毛片| 亚洲欧美日韩精品综合在线观看| 996这里只有精品| 中文字幕区一区二区三| 欧美一级大片在线观看| 丁香婷婷深情五月亚洲| 男女污污视频在线观看| 日本www视频| 日本高清视频在线| 国产精品福利电影| 日本韩国欧美三级| 国产午夜精品视频一区二区三区| 久久精品一区二区三区四区五区| 国产精品粉嫩| 一区二区三区伦理片| 国产精选在线视频拍拍拍| 136导航精品福利| 欧亚在线中文字幕免费| 九九九国产视频| 污视频在线看| 人人爱人人爽| 中文字幕av高清| 亚洲一卡2卡三卡4卡2021四卡| 亚洲天堂免费在线| 亚洲精品资源| 夜夜嗨av一区二区三区网站四季av| 欧美日韩另类一区| 欧美在线观看天堂一区二区三区| 日韩av第一页| 人人妻人人澡人人爽欧美一区双| 久久亚洲国产中v天仙www| 麻豆精品一区二区三区视频| a级网站在线播放| 日韩黄色三级| 亚洲欧洲日韩综合二区| 日本japanese极品少妇| 伊人av在线com| 久久sese| 色的视频在线观看免费播放| 丁香五月缴情综合网| 人妻精品久久久久中文字幕69| 国产精品福利久久久| 欧美黑人性猛交xxx| 秋霞国产午夜精品免费视频| 激情综合色综合久久| 欧美国产日韩亚洲一区| jiuse.com91视频| 黄色片在线播放| 国产精品久久久久久久久久久久久久| 青青草成人免费视频| 中文字字幕一区二区三区四区五区| 中文字幕在线有码| 国产一区二区三区四区老人| 91丨porny丨在线中文| 欧美小视频在线| 91亚洲无吗| 日韩成人免费在线| 最近的2019中文字幕免费一页| 亚洲日韩色图| 欧美日韩久久一区二区| 欧美日韩亚洲国内综合网俺| 极品国产91在线网站| 大乳护士喂奶hd| 麻豆91在线| 高清视频国产| 色综合久久综合| 97福利网站在线观看视频| 国产精品不卡一区二区三区| 日本午夜一区二区三区| 国产伦理一区| 国产又粗又猛又色| 国产精品第五页| 亚洲图区综合| 国产精品欧美韩国日本久久| 久久视频这里只有精品| 欧美日韩国内自拍| 国产日韩在线观看视频| 欧美经典三级视频一区二区三区| 92国产精品观看| 一本一道久久a久久精品蜜桃| av资源站一区| 国产又粗又猛又爽又黄的| 激情小说综合区| 在线观看欧美亚洲| 亚洲高清电影| 91一区二区在线| 欧美一级高潮片| 日韩午夜激情电影| 在线免费观看的av| 久久久精品亚洲| 高清一区在线观看| 免费精品视频| 欧美在线视频不卡| 婷婷综合亚洲| 无码人妻一区二区三区一| 99精品视频在线免费播放| 久久理论电影网| 日韩一二三四| 精品日韩av| 欧美黑人巨大xxxxx| 先锋影音av在线|