★★★★★FireGrass★★★★★

※※※※※ΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞジ
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

终于把验证码搞定了

Posted on 2006-11-27 16:22  火草  阅读(573)  评论(6)    收藏  举报

 经过艰辛万苦终于把验证码弄出点人样来了(其实还是在别人的基础上改过来的,呵呵)
这个验证码有两种使用方式,下面就分别介绍下:
(一)当作控件使用:
         第一步:
  
        编译我提供的原代码, 然后,在Studio.net 2003工具栏上, 选择"添加/移除项", 选中编译好的dll文件。
  
  第二步:
  
        工具栏上就会多一个Web控件ValidateCode,做好一个Web窗体(我是做了个WEB用户控件),在Studio.net 2003开发界面上,直接把控件拖到WebForm上,就OK!
  
  第三步:
  
        在该控件的GraphicOK事件中获取,验证码的字符信息,用于和用户录入做比较!

         第四步:
               
               在网站的根目录下,建一个temp目录(也可以自己指定目录),用于存放验证码
  
  最后一步:
  
         在登陆页面你需要显示验证码的地方把第二步做好的那个WEB窗体或WEB用户控件嵌套进去就行了;

(二)当做一个类来调用: 
         为什么要做出这个用处呢,是因为我发现用上面的那种方法显示验证码时图片的位置会有点偏差。
         第一步:
  
        编译我提供的原代码, 然后,在Studio.net 2003工具栏上, 选择"添加/移除项", 选中编译好的dll文件。

         第二步:
               
               在登陆页面需要显示验证码的地方放个文本框,设置成只读型。

         第三步:
         
               在后台的Page_Load中添加下面的代码:

ValidateCode validatecode = new ValidateCode();
validatecode.TempImageURLPath = @"/WebApp/temp";         //虚拟路径
validatecode.TempImagePath = this.Page.MapPath(validatecode.TempImageURLPath);        //绝对路径
validatecode.ChartType = GraphicType.Jpg;               //图片类型
validatecode.ImageName = "ss.jpg";                              //图片名称
validatecode.ChartWidth = 80;                                        //图片宽度
validatecode.ChartHeight = 18;                                       //图片高度
validatecode.GraphicImg();                                             //生成图片
   this.ViewState["validatecode"] = validatecode.AuthenCode.ToString().Trim();         //获得验证码放到VIEWSTATE中用来验证,也可以放在session中
this.txt_validatecode.Attributes.Add("style","BACKGROUND-IMAGE: url("+ validatecode.TempImageURLPath + "/" + validatecode.ImageName +");width:80px;");
               发现一个问题,如果照着红色代码写的话,后退时验证码不变,只有换种方式了,把前台的代码:              
<asp:textbox id="txt_validatecode" Runat="server" CssClass="TextBox" style="width:60px" ReadOnly="True"></asp:textbox>
               改成:    
<IMG id='ValidImage'  align='absBottom' border='0' alt="请按图片上的字母输入验证码src='checknum.jsp'"><SCRIPT>document.Form1.ValidImage.src='temp/ss.jpg?'+Math.random()</SCRIPT>
               这样就可以了,不过你的图片名字也就固定死了,不过没关系,每次生成图片时会把相同的图片删掉的
         第四步:

               通过ValidateCode的属性AuthenCode可以获得具体的验证码,用于和用户录入做比较!

         第五步:
   
               当然还要建个文件夹用来存放图片。

两种方法都有了,想怎么用就怎么用,当然你也可以自己再添加些效果,比如现在里面就有个方法TwistImage()是用来产生正弦曲线Wave扭曲图片,不过还没用上。
  图片,不用担心,代码会自动删除无用的图片!

控件类:ValidateCode

如果觉得可以的话,就多多支持啊!:)