封装的一个asp.net验证码类

第一个反映是验证码的这些属性是否可以设置(也就是说是封装成一个类,然后以暴露公有属性和方法的方式来使用的,还是在直接在一般处理程序中实现了验证码的生成到输出),结果比较可惜,是后者...... 里面的算法感觉挺不错,至少对于我这种对算法几乎是不懂的人来说是这样,于是想到去封装一下她然后无耻地纳入自己的类库中去^^
old原文件如下:点击下载

首先分析一下这份代码中的不足(自己觉得的):
1、面向过程式的编程,如果要修改验证码的属性,例如修改字体的大小、背景颜色等细节的东西,需要去一般处理程序中找到相关的代码,修改之。不过这份代码比较好,把生成验证码字符串和生成图片用不同的方法分开,很容易找到要修改的地方。
2、如果我想把这个功能应用到其他地方,例如winform程序中,那么这份代码没办以一个组件(一个dll)形式被复用,而是被复制粘贴然后修改...
3、没有发现验证码生成之后有存起来(- -!)

当然,所谓的不足是相对而言的,就是有时间来思考然后慢慢设计一个验证码类的话肯定能作出一个比较不错的类出来的,但如果是在做项目并且项目很紧急的话,这样的代码其实是比较给力的,那些所谓的面向对象设计模式代码解耦啥的都是浮云~~~

接下来是我对这份代码的修改,首先确定自己要什么样的效果,就是说封装起来后我希望怎样来使用他。首先我希望在使用的时候只需要new一个验证码实例(需要的话可以对验证码的各个属性可以任意设置),然后可以调用这个实例的某些方法分别以字符串、流、位图对象、byte数组的形式获取到这个验证码(说明,这个验证码类不包括把验证码存进上下文的功能,个人觉得生成验证码和把验证码存到上下文是两种不同的功能,没必要把这功能做到验证码类中去)。这样的话在一般处理程序中代码就变得异常简单了,首先只要new出一个验证码,然后调用方法以字符串的形式获取到这个验证码,然后存到上下午中,至于存在Session中或者Cookie中就按照需要来了,验证码类不管这些的;然后是调用另外一个方法以byte数组的形式获取到这个验证码,这样通过context.Response.BinaryWrite()方法就可以输出图片了,也就是说一般处理程序中只有三句代码。调用的代码大致如下:


复制代码 代码如下:

/// <summary>
/// 获取验证码(一般处理程序入口函数)
/// </summary>
/// <param name="context">当前上下文</param>
public void ProcessRequest(HttpContext context)
{
// 创建验证码
ValidateCode validateCode = new ValidateCode();
// 获取验证码(字符串),写入Session
context.Session["SomeValidateCode"] = validateCode.GetString();
// 输出验证码(图片)
context.Response.BinaryWrite(validateCode.GetByteArray());
}

这里附上验证类的源码(VS2010),里面提供的属性并不全面,另外图片的输出以BMP的格式输出,比原来的那份代码输出的要清晰很多,一定程度上对功能进行封装但不一定封装得很好,供交流学习用:点击下载new

PS:记得刚出来工作的时候代码写得很差(比现在差),一般拿到一份代码都是直接用,从来没有想过是否要把代码进行修改或者封装,那时候被我的师傅教导了一次印象很深刻。个人感觉其实用别人的代码没什么不好的,一来别人用过至少证明代码的可用性,另外智商有限,有些东西自己想破头皮也没有别人想的好,但是用别人的代码一定不要盲目地拿了就用,最好根据自己的实际情况进行必要的修改或者封装,哪怕是简单的隔一层也好。当然了,还是那句话,如果项目紧急的话这样做明显是浪费时间的,总之就是不要不思考,拿了就用,至少看把关键的代码或者代码的整体结构弄清楚。

我们直接都给打包了。上面是old文件夹,下面的是new文件夹的内容。下载地址 /201012/yuanma/yanzhengma.rar

时间: 2010-12-25

ASP.NET MVC验证码功能实现代码

前台 复制代码 代码如下: <img id="vcodeimg" src="/Home/VCode" width="70"                                    height="25" />                                 <span                                    style="cursor: p

asp.net 验证码生成和刷新及验证

验证码技术是为了防止暴力破解等而设定的.现在一般的网站注册等都提供验证码功能,特别是腾讯更是长长的一串.文中参考了别人的代码.有了就没有必要再写了.可以读一下.不过我测试时发现了两次PageLoad的问题.注释了两句即可.同时修改了namespaces.同时提供完整的验证说明:1 新建VerifyCode.aspx cs文件代码如下: 复制代码 代码如下: using System; using System.Collections; using System.ComponentModel; u

asp.net 简单验证码验证实现代码

首先是新建一个验证码页面 ValidateCode.aspx 定义变量 这样有利于后期的修改了 复制代码 代码如下: private int codeLen = 4;//验证码长度 private int fineness = 85;//图片清晰度 private int imgWidth = 48;//图片宽度 private int imgHeight = 24;//图片高度 private string fontFamily = "Times New Roman";//字体名称

asp.net 图片验证码的HtmlHelper

一个图片验证码的HtmlHelper,原来的调用代码如下: 复制代码 代码如下: <img id="validateCode" mailto:src='@Url.Action(%22GetValidateCode%22)'/> <script language="javascript" type="text/javascript"> $(document).ready(function () { $("#vali

asp.net mvc验证码类使用

验证码类 namespace QJW.VerifyCode { //用法: //public FileContentResult CreateValidate() //{ // ValidateCode vCode = new ValidateCode(); // string code = vCode.CreateValidateCode(5); // Session["ValidateCode"] = code; // byte[] bytes = vCode.CreateVali

asp.net(C#) 生成随机验证码的代码

常用的生成验证码程序 ,图片效果如下:    源程序如下: 复制代码 代码如下: using System;  using System.IO;  using System.Drawing;  using System.Drawing.Imaging;  using System.Text;  using System.Collections;  using System.Web;  using System.Web.UI;  using System.Web.UI.WebControls; 

ASP.NET中的无刷新验证码的开发(完整代码)

复制代码 代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Login.aspx.cs" Inherits="Login" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtm

asp.net ajax实现无刷新验证码

1.首先是在后台验证码的aspx文件的Page_Load中的事件代码: 复制代码 代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Drawing; namespace 学生在线考试系统 { public partial class

Asp.net(C#)实现验证码功能代码

新建一个专门用来创建验证码图片的页面ValidateCode.aspx 它的后台cs文件代码如下: PageLoad 复制代码 代码如下: private void Page_Load(object sender, System.EventArgs e) { string checkCode = CreateRandomCode(4); Session["CheckCode"] = checkCode; CreateImage(checkCode); } 其中CreateRandomC

ASP.net 验证码实现代码(C#)

public class ValidateCode : System.Web.UI.Page {   private void Page_Load(object sender, System.EventArgs e)   {    this.CreateCheckCodeImage(GenerateCheckCode());   }   #region Web 窗体设计器生成的代码   override protected void OnInit(EventArgs e)   {    //  

一个简单的ASP.NET验证码

本文实例为大家分享了ASP.NET验证码的具体代码,供大家参考,具体内容如下 我主要是看到干扰线了,一个验证码里面要是没有干扰线什么的,至少得在噪点和随机码的排版上下工夫: /// <summary> /// 验证码生成类 /// </summary> public class verify_code : IHttpHandler, IRequiresSessionState { public void ProcessRequest(HttpContext context) { i

ASP.NET验证码实现(附源码)

首先看下效果实现(由于gif屏幕录制软件是即时找的,有些失祯) 代码主要就是绘制验证码类的实现 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Drawing; using System.IO; namespace SecurityCodePic { public class DrawingSecurityCode { /// <summary>

asp.net验证码的简单制作

实际上关于asp.net验证码制作的文章已经很多很多了,但是今天还是要和大家继续分享,亲,可以综合几篇实例,编写出适用于自己网站的ASP.NET验证码,大概也就两大部分: 先建立一个asp.net窗体ValidateCode.aspx:不写任何东西.直接在后台ValidateCode.aspx.cs中写如下代码: protected void Page_Load(object sender, EventArgs e) { string validateCode = CreateValidateC

详解ASP.NET验证码的生成方法

一般验证码的生成方法都是相同的,主要的步骤都有两步 第一步:随机出一系统验证码的数字或字母,顺便把随机生成的数字或字母写入Cookies 或者 Session. 第二步:用第一步随机出来的数字或字母来合成图片. 可以看出来验证码的复杂度主要是第二步来完成,你可以根据自己所要的复杂度来设定. 我们一起来看看:  第一步:随机生成数字或字母的方法 /// <summary> /// 生成验证码的随机数 /// </summary> /// <returns>返回五位随机数&

java生成图片验证码实例代码

关于java图片验证码的文章最近更新了不少,帮助大家掌握java验证码的生成技术,下文为大家分享了java生成图片验证码最简单的方法,供大家参考. 现在各行业在定制系统时都会考虑到机器注册,现在最有效的方式就是输入验证.现在的验证方式有很多种: 一.问题验证,其实也是图片验证,在图片上生成问题,然后输入框输入答案. 二.图片验证,输入图片上展示的文字信息. 三.短信验证,比较繁杂,用户也不怎么喜欢. 四.还有就是百度最新的验证方式.图片上生成文字,然后出现一个文字点击框,选择你在验证图片上看到的

javascript发送短信验证码实现代码

本文首先分析手机发送验证码的原理,再对javascript发送短信验证码予以实现,具体思路如下: 实现点击"发送验证码"按钮后,按钮依次显示为"59秒后重试"."58秒后重试"-直至倒计时至0秒时再恢复显示为"发送验证码".在倒计时期间按钮为禁用状态 . 第一步.获取按钮.绑定事件.设置定时器变量和计时变量 第二步.添加定时器,每隔1秒钟计时减 1,直至当计时小于等于 0 时清除定时器,按钮恢复为"发送验证码&quo

python生成验证码图片代码分享

本文实例为大家分享了python生成验证码图片代码,分享给大家供大家参考,具体内容如下 基本上大家使用每一种网络服务都会遇到验证码,一般是网站为了防止恶意注册.发帖而设置的验证手段.其生成原理是将一串随机产生的数字或符号,生成一幅图片,图片里加上一些干扰象素(防止OCR).下面就详细讲解如何生成验证码. 所需环境 除了配置好的python环境外,还需要配有python中的PIL库,这是python中专门用来处理图片的库.用传统的pip install 方法或者下载源码 python setup.

asp下载防盗链代码

asp下载防盗链代码第一种:  终于对下载系统做了个防盗链措施,在下载的页面头部做了如下代码,相关代码如下:   复制代码 代码如下: <%   From_url = Cstr(Request.ServerVariables("HTTP_REFERER"))   Serv_url = Cstr(Request.ServerVariables("SERVER_NAME"))   if mid(From_url,8,len(Serv_url)) <> 

JS验证码实现代码

废话不多说了,直接给大家贴代码了,具体代码如下所示: <script language="javascript"> var code; //在全局 定义验证码 function createCode() { //创建验证码函数 code = ""; var codeLength =4;//验证码的长度 var selectChar = new Array(0,1,2,3,4,5,6,7,8,9,'a','b','c','d','e','f','g','h