在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
验证码在很多需要用户登陆或发表言论的网页上都可以见到。传统的一般是用代表各种不同数字或字符的图片来进行组合,从而实现效果。但是,很明显这种方式的灵活性不高,而且需要准备大量的图片作素材。 目前,一般就是采用全自动生成,整个验证码为一张图片,而不是多张图片的组合。在.Net中,可以通过GDI+来实现,可能你会觉得很麻烦,但只要跟着我操作一遍,你就会发现其实很简单。
length)
{ string strValidateString=""; Random rnd = new Random(); string strValidateStringSource; switch (style) { case RandomGeneratorStyle.Number: strValidateStringSource = "0123456789"; break; case RandomGeneratorStyle.NumberAndChar: strValidateStringSource = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; break; case RandomGeneratorStyle.NumberAndCharIgnoreCase: strValidateStringSource = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; break; default: strValidateStringSource = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; break; } for (int i = 0; i < length; i++) { strValidateString += strValidateStringSource[rnd.Next(strValidateStringSource.Length - 1)]; } return strValidateString; } 上面有一个RandomGeneratorStyle,这个是我自己写的一个枚举,用于表示需要生成哪种验证码。
RandomGeneratorStyle
{ /// <summary> /// 只有数字 /// </summary> Number, /// <summary> /// 包含数字和大小写字符 /// </summary> NumberAndChar, /// <summary> /// 包含数字和大写字符 /// </summary> NumberAndCharIgnoreCase }
length,Page curPage)
{ Bitmap bmp = new Bitmap((int)Math.Ceiling(length * 12.5), 20);//新建一个图片对象 Graphics g = Graphics.FromImage(bmp);//利用该图片对象生成“画板” string strCode = RandomGenerator.Generate(style, length);//生成随机数 curPage.Session["yzmCode"] = strCode;//保存到Session中,为验证服务.你也可以存放在其它地方,只要在需要验证的时候你能取到 Font font = new Font("Arial", 12, FontStyle.Bold | FontStyle.Italic);//设置字体颜色 SolidBrush brush = new SolidBrush(Color.White);//新建一个画刷,到这里为止,我们已经准备好了画板、画刷、和数据 g.DrawString(strCode, font, brush, 0, 0);//关键的一步,进行绘制。 bmp.Save(curPage.Response.OutputStream, ImageFormat.Jpeg);//保存为输出流,否则页面上显示不出来 g.Dispose();//释放掉该资源 } 现在,就可以来测试下它的效果了。想要调用上面的方法,我们必须要传入一个当前的Page对象,为此我们可以新建一个页面命名为yzm.aspx。然后,在PageLoad中调用该方法。这样,我们便可以看到它了。如下图1所示: 如果,你需要在img元素中显示,那也很简单,只需要把src设置为yzm.aspx就可以了。<img src="yzm.aspx" alt="" />
codeToBeValidate,Page curPage)
{ if (curPage.Session["yzmCode"] != null) { return curPage.Session["yzmCode"].ToString() == codeToBeValidate; } else return false; }
作者:stg609
出处:http://stg609.cnblogs.com/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 |
请发表评论