




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
A 实现验证码功能的 Web控件 A的设计方式和设计理念和其他的如 Asp,Jsp,Php,Perl等都不一样,几乎是完全的 面向对象设计!代码的复用就是其中差异较大的特点之一,A 除了可以用 Include以 外,还提供了比较有特点的 Web控件,包括:Ascx 形式和带设计时支持的控件本文属于后 者,为了熟悉这些新概念,我自己写了个 Web控件。 在实际项目中运行使用良好,以后,要有时间,我还将不断改进。 ValidateCode控件的使用方法: 第一步: 编译我提供的原代码, 然后,在 S 2003工具栏上, 选择“添加/移除项“, 选中编译 好的 dll文件。 第二步: 工具栏上就会多一个 Web控件 ValidateCode,做好一个 Web窗体,在 S 2003开发 界面上,直接把控件拖到 WebForm上,就 OK! 第三步: 在该控件的 GraphicOK事件中获取,验证码的字符信息,用于和用户录入做比较! 最后一步: 在网站的根目录下,建一个 temp目录(也可以自己指定目录) ,用于存放验证码 图片,不用担心,代码会自动删除无用的图片! 原代码如下: using System; using System.Web.UI; using System.Web.UI.WebControls; using System.ComponentModel; using System.IO; using System.Drawing; using System.Drawing.Drawing2D; using System.Drawing.Imaging; namespace WebValidateCode / / ValidateCode 的摘要说明。 / 设计者:王海波 2004-11-20 / / public enum GraphicType Jpg = 0, Gif = 1, Png = 2, Bmp = 3, /ToolboxBitmap(“D:DotnetAppValidateCodeValidateCode.bmp“) /设置控件在工 具箱上的图标 public class ValidateCode : System.Web.UI.WebControls.WebControl ,INamingContainer private int pCodelen=5; private int pChartWidth=100; private int pChartHeight=20; private GraphicType pChartType; private string pAuthenCode; private string pTempImageURLPath=“/temp“; private string pAuthenImageFullname; private string pAuthenImageFullURL; /生成校验码的变量 start private Bitmap validateImage; private Graphics g; /生成校验码的变量 End private TextBox txt=new TextBox(); private System.Web.UI.WebControls.Image img= new System.Web.UI.WebControls.Image(); #region 定义控件事件 public delegate void GraphicCreated(object sender, EventArgs e); public event EventHandler GraphicOK; /在校验图片生成结束以后触发 protected virtual void OnGraphicOK(object sender, EventArgs e) if (GraphicOK != null) /Invokes the delegates. GraphicOK(sender, e); #endregion #region 控件属性 /生成校验码的长度 Bindable(true),Browsable(true),Category(“Appearance“),DefaultValue(true),Descri ption(“需要验证码的长度,建议在 58位之间!“) public int CodeLength get return pCodelen; set pCodelen = value; /生成校验码的长度 Bindable(true),Browsable(true),Category(“Appearance“),DefaultValue(true),Descri ption(“生成验证码图片的临时存放路径,要求必须是网站下的虚拟目录!“) public string TempImageURLPath get return pTempImageURLPath; set pTempImageURLPath = value; Bindable(true),Browsable(true),Category(“Appearance“),DefaultValue(GraphicType. Jpg),Description(“选择生成校验图文件的类型(Jpg;Gif;Png;Bmp)!“) public GraphicType ChartType get return pChartType; set pChartType = value; /生成校验码图片的宽度 public int ChartWidth get return pChartWidth; set pChartWidth = value; /生成校验码图片的高度 public int ChartHeight get return pChartHeight; set pChartHeight = value; /需要生成的校验码 public string AuthenCode get return pAuthenCode; set pAuthenCode = value; #endregion / / 将此控件呈现给指定的输出参数。 / / 要写出到的 HTML 编写器 protected override void Render(HtmlTextWriter output) System.Web.UI.WebControls.Image objImage; /TextBox objTxt; /绘制包含的控件 objImage = (System.Web.UI.WebControls.Image) Controls0; /objTxt = (TextBox) Controls1; if(pAuthenCode=null) pAuthenCode=GetValidateCode(); OnGraphicOK(this,EventArgs.Empty ); GetRandomImage(pAuthenCode); objImage.ImageUrl=pAuthenImageFullURL; objImage.RenderControl(output); / / 给控件添加子控件 / protected override void CreateChildControls( ) /Controls.Add(btn); Controls.Add(img); /Controls.Add(txt); / / 控件 Load时候属性的初始化 / / protected override void OnLoad(System.EventArgs e) EraseOldGraphic(); /删除过期的图片 / / 生成随机的 / private void MakeRandomFileName() string strRandName=DateTime.Now.Ticks.ToString()+“.jpg“; pAuthenImageFullname=this.Page.MapPath(TempImageURLPath)+“+strRandName; pAuthenImageFullURL=TempImageURLPath+“/“+strRandName; private void GetRandomImage(string strValidateCode) /生成随即图片的全名,和全 URL MakeRandomFileName(); validateImage = new Bitmap(pChartWidth, pChartHeight, PixelFormat.Format24bppRgb); / .Format24bppRgb); g = Graphics.FromImage(validateImage); g.Clear(Color.LightGray) ; /g.DrawString(strValidateCode , new Font(“宋体“,16,FontStyle.Bold),new SolidBrush(Color.DarkRed),new PointF(2,2); for(int i=0;i / 动态从数字和字母组成的元素中动态选择生成校验码 / private string GetValidateCode() char s = new char0,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; string num = “; Random r = new Random(); /根据用户需要的长度来定义验证码的位数 for(int i = 0; i / 清除时间超过 20秒的临时图片记录 / / 成功返回 true,失败返回 false public bool EraseOldGraphic() try DirectoryInfo Dinfo=new DirectoryInfo(this.Page.MapPath(pTempImageURLPath); FileInfo FileSet; if(Dinfo.Exists) switch(pChartType) case GraphicType.Jpg: FileSet=Dinfo.GetFiles(“*.jpg“); break; case GraphicType.Gif: FileSet=Dinfo.GetFiles(“*.gif“); break; case GraphicType.Png: FileSet=Dinfo.GetFiles(“*.png“); break; case GraphicType.Bmp: FileSet=Dinfo.GetFiles(“*.bmp“); break; default: FileSet=Dinfo.GetFiles
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高科技行业职位招聘面试试题及答案精 选
- 平塘县安全知识培训课件
- 2026届云南省砚山县第二中学化学高三第一学期期中考试模拟试题含解析
- 2025-2030中国无线城市商业模式与未来发展方向预测报告
- 2025-2030中国新电改产业运营模式及营销创新投资现状分析报告
- 考研护理考试题库及答案
- 放射证考试题库及答案
- 重庆市四区联考2026届化学高三第一学期期中监测模拟试题含解析
- 2026届黑龙江省佳木斯市第一中学化学高一第一学期期中学业水平测试模拟试题含解析
- 河南省驻马店市西平县2024-2025学年八年级下学期6月期末英语试题(含答案无听力音频及原文)
- 共青团中央所属事业单位2024年度社会公开招聘笔试备考题库参考答案详解
- 2025年《分级护理制度》考试试题(及答案)
- 大学生创新创业基础(创新创业课程)完整全套教学课件
- 楼板下加钢梁加固施工方案
- (完整)医疗器械设计和开发一般过程-配全套表格模板
- 智能渔业养殖系统开发合同
- 组织行为学复习纲要冬课件
- TGDMDMA 0026-2023 牙科种植用导板
- 医院发生火灾的应急预案及处理流程
- LY/T 1828-2009黄连木栽培技术规程
- X射线衍射课件(XRD)
评论
0/150
提交评论