加入收藏 | 设为首页 | 会员中心 | 我要投稿 航空爱好网 (https://www.52kongjun.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > Asp教程 > 正文

ASP .网实现的生成验证码功能示例【附演示源码】

发布时间:2022-12-19 14:01:08 所属栏目:Asp教程 来源:未知
导读: 本文实例讲述了ASP .网实现的生成验证码功能。分享给大家供大家参考,具体如下:
生成验证码原理:产生随机字符,并将字符生成为图片,同时储存到会议里去,然后验证用户输入的内容是否与

本文实例讲述了ASP .网实现的生成验证码功能。分享给大家供大家参考,具体如下:

生成验证码原理:产生随机字符,并将字符生成为图片,同时储存到会议里去,然后验证用户输入的内容是否与会议中的验证码相符即可。

效果图:用户可以点击切换验证码信息。

一般处理程序:CheckCodeHandler.cs

%@ WebHandler语言=' c# ' %使用系统;使用系统网络.使用系统。文字;使用系统。绘图;使用系统网络。会话状态公共类CheckCodeHandler : IHttpHandler,irequissessionstate {//产生验证码的字符集公共字符串charcode='2,3,4,5,6,8,9,A,B,C,D,E,F,G,H,J,K,M,N,P,R,S,U,W,X,Y,A,B,C,D,E,F,G,H,J,K,M,N,P,R,S,U,W,X,Y ';公共无效进程请求(HttpContext上下文){ string validate code=CreateRandomCode(4);语境。会话[“验证代码”]=验证代码;//将验证码保存到会议中CreateCodeImage(validateCode,context);} public bool IsReuse { get { return false;} } ///摘要///生成验证码////summary ///param验证码个数/param /返回验证码字符串/返回公共字符串CreateRandomCode(int n){ string[]CharArray=char code .拆分(',');//将字符串转换为字符数组字符串randomCode=int temp=-1;rand rand=new Random();for(int I=0;I n;i ) { if (temp!=-1){ rand=new Random(I * temp *(int)DateTime .现在。

刻度));} int t=rand .下一个(CharArray .长度-1);if (temp!=-1 temp==t){ return CreateRandomCode(n);} temp=t;随机码=CharArray[t];}返回randomCode } public void CreateCodeImage(字符串检查代码,HttpContext上下文){ int iwidth=(int)(checkCode .长度* 13);系统。绘图。位图图像=新系统。绘图。位图(iwidth,20);图形g=图形FromImage(图像);字体f=新系统。绘图。字体(' Arial ',12,(系统。绘图。字体样式。斜体|系统绘图。字体样式。粗体));//前景色画笔b=新系统。绘图。SolidBrush(颜色。黑色);//背景色透明(颜色。白色);//填充文字g。拉绳(checkCode,f,b,0,1);//随机线条钢笔线钢笔=新钢笔(颜色。灰色,0);rand rand=new Random();for(int I=0;i5;i ) { int x1=rand .下一张(图片。

宽度);int y1=兰特。下一张(图片。身高);int x2=兰特。下一张(图片。宽度);int y2=兰特。下一张(图片。身高);g。画线(linePen,x1,y1,x2,y2);} //随机点for(int I=0;i 30i ) { int x=rand .下一张(图片。宽度);int y=兰特。下一张(图片。身高);图像。设置像素(x,y,颜色。灰色);} //边框画矩形(新钢笔(颜色。灰色),0,0,图像。宽度- 1,图像。身高-1);//输出图片系统。内存流=新系统IO。内存流();图像。保存(毫秒,系统绘图。成像。imageformat。JPEG);语境回应。ClearContent();语境回应。content type=' image/JPEG ';语境回应。binary write(ms . to array());g。处置();图像dispose();}}封装成类库:ValidateNumber.cs

使用系统;使用系统。集合。通用;使用系统Linq .使用系统网络.使用系统。绘图;使用系统网络。用户界面使用系统。绘图。绘图2D;使用系统IO;使用系统。绘图。成像;///摘要///有效数字生成验证码////summarypublic类ValidateNumber{ //产生验证码的字符集(易混淆的字符去掉)私有字符串charcode='2,3,4,5,6,8,9,A,B,C,D,E,F,G,H,J,K,M,N,P,R,S,U,W,X,Y,A,B,C,D,E,F,G,H,J,K,M,N,P,Rasp验证码,S,U,W,X,Y ';///摘要///验证码的最大长度////summary public int MaxLength { get { return 10;} } ///摘要///验证码的最小长度////summary public int minLength { get { return 1;} } ///摘要///生成验证码////summary///param指定验证码的长度/param /返回/返回公共字符串createvalidatennumber(int length){ string[]CharArray=charcode .拆分(',');//将字符串转换为字符数组字符串randomCode=int temp=-1;rand rand=new Random();for(int I=0;一、长度;i ) { if (temp!=-1){ rand=new Random(I * temp *(int)DateTime .现在。

刻度));} int t=rand .下一个(CharArray .长度-1);if (temp!=-1 temp==t){返回CreateValidateNumber(长度);} temp=t;随机码=CharArray[t];}返回random code }////摘要///创建验证码的图片////summary///param上下文对象/param///param验证码/param public void CreateValidateGraphic(HttpContext上下文,字符串验证编号){ int iwidth=(int)(验证编号.长度* 14);位图图像=新位图(iwidth,22);图形g=图形FromImage(图像);尝试{ //生成随机生成器Random Random=new Random();//清空图片背景色透明(颜色。白色);//画图片的干扰线for(int I=0;i 25i ) { int x1=random .下一张(图片。宽度);int x2=随机。下一张(图片。宽度);int y1=随机。下一张(图片。身高);int y2=随机。

下一张(图片。身高);画线(新钢笔(颜色。银)、x1、y1、x2、y2);} Font font=新字体(' Arial ',12,(FontStyle .粗体| FontStyle .斜体));线性渐变画笔=新线性渐变画笔(新矩形(0,0,图像。宽度,图像。高度)、颜色。蓝色,彩色暗红色,1.2f,真);g。拉绳(有效日期,字体,画笔,3,2);//画图片的前景干扰点for(int I=0;i 100i ) { int x=random .下一张(图片。宽度);int y=随机。下一张(图片。身高);图像。设置像素(x,y,颜色FromArgb(随机. next()));} //画图片的边框线画矩形(新钢笔(颜色。银色),0,0,图像。宽度- 1,图像。身高-1);//保存图片数据记忆流流=新内存流();图像。保存(流,图像格式. JPEG);//输出图片语境。响应。clear();语境回应。content type=' image/JPEG ';语境。响应. BinaryWrite(流. to array());}最后{ g . Dispose();图像dispose();} } ///摘要///得到验证码图片的长度////summary///param验证码的长度/param///returns/returns public static int GetImageWidth(int validateNumLength){ return(int)(validateNumLength * 14);} ///摘要///得到验证码图片的高度////summary////returns/returns public static double GetImageHeight(){ return 22;}}附:完整实例代码点击此处本站下载。

更多关于ASP。网相关内容感兴趣的读者可查看本站专题: 《asp.net操作json技巧总结》 、 《asp.net字符串操作技巧汇总》 、 《asp.net操作XML技巧总结》 、 《asp.net文件操作技巧汇总》 、 《asp.net ajax技巧总结专题》 及《asp.net缓存操作技巧总结》 。

希望本文所述对大家ASP。网程序设计有所帮助。

(编辑:航空爱好网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!