首先声明,此博文为博主原创。本人非常提倡资源共享,如有转载请写明作者和出处,谢谢合作。
在最初决定搞Web开发的时候就思考过网站上的验证码是怎么实现的,后来在一些专业书籍上也看过一些介绍,但并没有自己去实现过。在www.51aspx.com上下载了一些源码研究过,感觉都不是很满意,一直都想找一个可以直接从工具箱拖出来用的验证码控件,点击可刷新换图的那种,那样多方便啊。
最近在完善我的毕业设计——ASP.NET(C#)实现的三层构架的二手交易系统,觉得有必要加上验证码,这样网站的安全性会提升一些。于是利用百度、谷歌反复搜索,终于找到了一款比较牛叉的验证码控件。原作者不详,这里附上一个地址>>>。程序我做了一些小小的修改。
按原文所说的操作,根本编译不了。原文的用法可以查看上面的链接地址,这里我贴出我自己的用法。我将两个类整合到一个.cs文件中了(这里命名为AuthCode.cs),程序如下:(下半部分,在后一篇文章“[原创]共享一款ASP.NET验证码控件(附详细用法)中”里已全部列出)
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using System.Web;
using System.Web.UI.WebControls;
using System.Web.UI;
using System.Web.SessionState;
using System.Drawing;
using System.IO;
namespace AuthCode
{
[ToolboxData("<{0}:AuthCode runat=server></{0}:AuthCode>")]
public class AuthCode : WebControl
{
/// 〈summary>
/// 获得验证码的值
/// 〈/summary>
/// 〈returns>验证码〈/returns>
public string GetValue()
{
return HttpContext.Current.Session["value"].ToString();
}
[Bindable(true)]
[Category("Appearance")]
[Description("验证码字符长度")]
[DefaultValue("ss")]
[Localizable(true)]
//长度
internal static int mySize;
public int MySize
{
get { return AuthCode.mySize; }
set
{
AuthCode.mySize = value;
}
}
public AuthCode()
: base(HtmlTextWriterTag.Img)//重写父类的构造(输出流的HTML标记)
{ }
protected override void AddAttributesToRender(HtmlTextWriter writer)
{
base.AddAttributesToRender(writer);//将要输出的的HTML标签的属性和样式添加到指定的 HtmlTextWriter中
writer.AddStyleAttribute(HtmlTextWriterStyle.Cursor, "pointer");//添加样式
writer.AddAttribute("onclick", "this.src='img.jd?id='+Math.random()");//添加js VerifyImg.jd
writer.AddAttribute(HtmlTextWriterAttribute.Src, "img.jd");
writer.AddAttribute("alt", "点击刷新");
}
}
更多内容见我的新浪博客的另两篇。
http://blog.sina.com.cn/s/blog_4c59c08a0100ck7r.html