All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
C#教程:通过注册表优化系统
XMLHTTP 对象及其方法简介_[XML教程]
[delphi语法6]delphi中Repeat语句的使用实例
ASP.NET,MVC+LINQ开发一个图书销售站点(7)-图书分类管理_[Asp.Net教程]
浅谈SQL,Server数据类型最大值_[SQL,Server教程]
c#中接口的概念,定义,继承
在ExcuteReader中使用输出参数的问题_[Asp.Net教程]
ASP.NET,MVC,Framework与WCSF中MVP模式之小小比较_[Asp.Net教程]
什么是.net的接口和抽象类_[Asp.Net教程]
ASP.NET常见错误提示_[Asp.Net教程]
Reading number is top 10 pictures
治疗多发性骨髓瘤的特效药,一万二一支
Look for from human art net, is good--2
美女和狗狗2
美女浴室写真2
你是左脑型还是右脑型
Fierce! China's special forces training the devil1
俞敏洪在清华终于说了实话
Entered the goddess in the AD1
So beauty, will let you spray blood8
NeedWallpaper11
Download software ranking
Proficient in JavaScript
Sora aoi's film--cangkong_Blue.Sky
Call Of Duty2
C++编程教程第三版
变速齿轮3.26
网页特效实例大全
Boxer vs Yellow3
WebService在.NET中的实战应用教学视频 → 第2集
jdk1.5
matrix3
归海一刀 published in(发表于) 2014/1/30 1:00:42 Edit(编辑)
asp.net验证码控件_[Asp.Net教程]

asp.net验证码控件_[Asp.Net教程]

asp.net验证码控件_[Asp.Net教程]

雕虫小技--自定义“验证码”控件


“验证码”在登录的时候,经常用到,如果把“她”封装成控件,是不是很爽呢?但是,我一般不喜欢封装得太厉害的“她”,因为什么都看不到,亦或看起来比较朦胧:)
切入点
利用IHttpHandler接口,动态生成验证码


图一(直接看效果吧)



看代码吧


步骤一(新建一类库)



Code
using System;
using System.Collections.Generic;
using System.Text;
using System.Web;


using System.Web.SessionState;
using System.Web.UI;
using System.Drawing;


namespace ControlValidater
{
public class CValidater:IHttpHandler,IRequiresSessionState
{
HttpResponse response = null;
HttpSessionState sessionState = null;


public void ProcessRequest(HttpContext context)
{
response = context.Response;
sessionState = context.Session;


this.GenImg(this.GenCode(4));
}

bool System.Web.IHttpHandler.IsReusable
{
get { return true; }
}


//产生随机字符串
private string GenCode(int num)
{
string[] source ={"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"};
string code = "";
Random rd = new Random();
for (int i = 0; i < num; i++)
{
code += source[rd.Next(0, source.Length)];
}
return code;
}


//生成图片
private void GenImg(string code)
{
Bitmap myPalette = new Bitmap(60, 20);//定义一个画板


Graphics gh = Graphics.FromImage(myPalette);//在画板上定义绘图的实例


Rectangle rc = new Rectangle(0, 0, 60, 20);//定义一个矩形


gh.FillRectangle(new SolidBrush(Color.Silver), rc);//填充矩形


gh.DrawString(code, new Font("宋体", 16), new SolidBrush(Color.Gray), rc);//在矩形内画出字符串


myPalette.Save(response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);//将图片显示出来


sessionState["ValidateCode"] = code;//将字符串保存到Session中,以便需要时进行验证


gh.Dispose();
myPalette.Dispose();
}
}
}



步骤二(使用方法)
直接引用编译后的dll文件
在web.config的web节点,加入元素,
例如



Code




当然,如果直接把类库作为一个普通类,放在使用的Website的App_Data目录的话,就不需要配置了:)


步骤三(使用方法)
在需要使用验证码的页面,扔一个image标记,然后把他的url指向"类名.aspx"
例如
Code

到此配置完成,是不是很简单呢:)
哎...
还是把最后一个步骤代码贴出来吧.
Code
protected void Button1_Click(object sender, EventArgs e)
{
string strIn = this.TextBox1.Text;
string strSess = Session["ValidateCode"].ToString();
if (strIn == strSess)
Button1.Text = "ok";
else
Button1.Text = "error";
}
需要注意的几个地方:)
一,记得要实现IRequiresSessionState接口,虽然她只是一个标记,没有她,Session状态无法使用.
二,HttpSessionState的对象是通过上下文获得的.
三,配制config的时候,不要忘记path="CValidater.aspx",如果path="*.aspx",那你所有的页面都将被CValidater处理,这不是我们所要的.


最后
什么也不说了,如果觉得对您有用,请给点鼓励...


来源:http://www.cnblogs.com/wmj







添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.