宝哥软件园

asp.net使用ashx生成图形验证码的方法示例

编辑:宝哥软件园 来源:互联网 时间:2021-09-04

本文实例讲述了ASP。网使用ashx生成图形验证码的方法。分享给大家供大家参考,具体如下:

验证码的好处不用我多说,你们都懂的。我在网上看到有人把验证码直接写在aspx页面里,也就是说这种方式请求验证码等于请求一个页面,这样做很不科学。如下所示

表单ID=' form 1 ' runat=' server ' div ASP :图像ID=' Image1 ' runat=' server ' ImageUrl=' default。aspx/br/ASP : textbox ID=' textbox 1 ' runat=' server '/ASP : textbox ASP 3360 Button ID=' Button 1 ' runat=' server ' onclick=' Button 1 _ Click ' Text=' Button '/div/form这个代码看着就觉得写代码的人比较欠揍,代码写成这样子着实郁闷。验证吗也不写点脚本做下切换。

下面我介绍一种方式来实现这样的功能

1.写个ashx生成图形验证码

使用系统;使用系统。收藏品;使用系统。数据;使用系统Linq .使用系统网络.使用系统。网络服务;使用系统。网络服务协议;使用系统Xml。Linq使用系统网络。会话状态使用系统。绘图;命名空间usechecknum。ashx {///summary///$ codebehind类名$的摘要说明////摘要[WebServiCe(NameSpace=' http://tempuri。org/')][WebServiceBinding(CONFOrmSTO=WSiprofiles .base cprofile 1 _ 1)])公共类doCreateNum : IHttpHandler,irequissessionstate { public void ProcessRequest(HttpContext context){ context .响应。content TYPe=' text/html ';string CheckCode=GetValidation(5);//产生5位随机验证码字符语境。会话['代码']=检查代码;//将字符串保存到会议中,以便需要时进行验证系统。绘图。位图图像=新系统。绘图。位图(70,22);图形g=图形FromImage(图像);尝试{ //生成随机生成器Random Random=new Random();//清空图片背景色透明(颜色。白色);//画图片的背景噪音线int I;for(I=0;i 25i ) { int x1=random .下一张(图片。宽度);int x2=随机。下一张(图片。宽度);int y1=随机。下一张(图片。身高);int y2=随机。下一张(图片。身高);画线(新钢笔(颜色。银)、x1、y1、x2、y2);}字体字体=新系统。绘图。字体(' Arial ',12,(系统绘图。字体样式。粗体));系统。绘图。绘图2D .线性渐变画笔=新系统绘图。2d图纸。linegradientbrush(新矩形(0,0,图像。宽度,图像。高度)、颜色。蓝色,彩色。暗红色,1.2F,真);g。拉绳(检查代码,字体,画笔,2,2);//画图片的前景噪音点画矩形(新钢笔(颜色。银色),0,0,图像。宽度- 1,图像。身高-1);系统。内存流=新系统IO。内存流();图像。保存(毫秒,系统绘图。成像。imageformat。gif);语境回应。ClearContent();语境回应。content type=' image/Gif ';语境回应。binary write(ms . to array());}最后{ g . Dispose();图像dispose();} }公共字符串GetValidation(int num){ string str=' 0123456789 abcdefghijklmnopqrstuvwxyz ';//'或者写汉字也行字符串validate code=Random rd=new Random();for(int I=0;i numi ) { validatecode=str .子串(rd .下一个(0,字符串。长度),1);}返回validate code } public bool is use { get { return false;} } }}2.在页面上显示验证码,因为我们生成的是图形,所以可以直接写在img/标签里,我们只要写段简单的脚本就可以点击鼠标切换验证码了

% @ Page Language=' c# ' AutoEventWireup=' true '代码在=' index '之前。aspx。cs ' Inherits=' usechecknum ' ._默认"%!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN ' ' http://www .w3。org/TR/XHTML 1/DTD/XHTML 1-Transitional。DTD ' html xmlns=' http://www .w3。org/1999/XHTML ' head runat=' server ' title验证码的使用/title/head脚本语言=' JavaScript ' type=' text/JavaScript '函数更改代码(){ var imgNode=document。getelementbyid(' vimg ');imgnode。src=' ashx/DoCreateNum。阿什克斯。t='(新日期())。()的值;//这里加个时间的参数是为了防止浏览器缓存的问题} /scriptbody表单id='form1' runat='server '请输入验证码:输入类型=' text ' name=' check num '/img src=' http : ashx/docreate num。ashx ' id=' vimg ' onclick=' change code()'//form/body/html说了半天,该是时候看看生成的验证码长什么样了

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

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

更多资讯
游戏推荐
更多+