首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

怎么判断校验码输入项TEXTBOX与形成的验证码图象生成的内容一致

2012-01-22 
如何判断校验码输入项TEXTBOX与形成的验证码图象生成的内容一致?验证码类:CheckCode.aspx.csusingSystemu

如何判断校验码输入项TEXTBOX与形成的验证码图象生成的内容一致?
验证码类:CheckCode.aspx.cs
using   System;
using   System.IO;
using   System.Drawing;
using   System.Drawing.Imaging;
using   System.Text;
using   System.Data;
using   System.Configuration;
using   System.Collections;
using   System.Web;
using   System.Web.Security;
using   System.Web.UI;
using   System.Web.UI.WebControls;
using   System.Web.UI.WebControls.WebParts;
using   System.Web.UI.HtmlControls;

public   partial   class   VCode   :   System.Web.UI.Page
{
        protected   void   Page_Load(object   sender,   EventArgs   e)
        {
                string   chkCode   =   string.Empty;
                //颜色列表,用于验证码、噪线、噪点    
                Color[]   color   ={   Color.Black,   Color.Red,   Color.Blue,   Color.Green,   Color.Orange,   Color.Brown,   Color.Brown,   Color.DarkBlue   };
                //字体列表,用于验证码    
                string[]   font   ={   "Times   New   Roman ",   "MS   Mincho ",   "Book   Antiqua ",   "Gungsuh ",   "PMingLiU ",   "Impact "   };
                //验证码的字符集,去掉了一些容易混淆的字符    
                char[]   character   ={   '2 ',   '3 ',   '4 ',   '5 ',   '6 ',   '8 ',   '9 ',   'A ',   'B ',   'C ',   'D ',   'E ',   'F ',   'G ',   'H ',   'J ',   'K ',   'L ',   'M ',   'N ',   'P ',   'R ',   'S ',   'T ',   'W ',   'X ',   'Y '   };
                Random   rnd   =   new   Random();
                //生成验证码字符串    
                for   (int   i   =   0;   i   <   4;   i++)
                {
                        chkCode   +=   character[rnd.Next(character.Length)];
                }
                Bitmap   bmp   =   new   Bitmap(100,   40);
                Graphics   g   =   Graphics.FromImage(bmp);
                g.Clear(Color.White);
                //画噪线    
                for   (int   i   =   0;   i   <   10;   i++)
                {
                        int   x1   =   rnd.Next(100);


                        int   y1   =   rnd.Next(40);
                        int   x2   =   rnd.Next(100);
                        int   y2   =   rnd.Next(40);
                        Color   clr   =   color[rnd.Next(color.Length)];
                        g.DrawLine(new   Pen(clr),   x1,   y1,   x2,   y2);
                }
                //画验证码字符串    
                for   (int   i   =   0;   i   <   chkCode.Length;   i++)
                {
                        string   fnt   =   font[rnd.Next(font.Length)];
                        Font   ft   =   new   Font(fnt,   18);
                        Color   clr   =   color[rnd.Next(color.Length)];
                        g.DrawString(chkCode[i].ToString(),   ft,   new   SolidBrush(clr),   (float)i   *   20   +   8,   (float)8);
                }
                //画噪点    
                for   (int   i   =   0;   i   <   100;   i++)
                {
                        int   x   =   rnd.Next(bmp.Width);
                        int   y   =   rnd.Next(bmp.Height);
                        Color   clr   =   color[rnd.Next(color.Length)];
                        bmp.SetPixel(x,   y,   clr);
                }
                //清除该页输出缓存,设置该页无缓存    
                Response.Buffer   =   true;
                Response.ExpiresAbsolute   =   System.DateTime.Now.AddMilliseconds(0);
                Response.Expires   =   0;
                Response.CacheControl   =   "no-cache ";
                Response.AppendHeader( "Pragma ",   "No-Cache ");
                //将验证码图片写入内存流,并将其以   "image/Png "   格式输出    
                MemoryStream   ms   =   new   MemoryStream();
                try


                {
                        bmp.Save(ms,   ImageFormat.Png);
                        Response.ClearContent();
                        Response.ContentType   =   "image/Png ";
                        Response.BinaryWrite(ms.ToArray());
                }
                finally
                {
                        //显式释放资源    
                        bmp.Dispose();
                        g.Dispose();
                }


        }
}
登陆项:
<td   style= "width:   100px "   align= "right ">
                                        校验码: </td>
                                <td   style= "width:   203px "   align= "left ">
                                        <asp:TextBox   ID= "txtCheckCode "   runat= "server "   Width= "88px "   OnTextChanged= "txtCheckCode_TextChanged "> </asp:TextBox>
                                        </td>

[解决办法]
Session( "CheckCode1 ") = CheckCode;

=========================
改为:Session[ "CheckCode1 "] = CheckCode;

还有if语句里面也写错了,应改为:
if (txtCheckCode.Text != Session( "CheckCode1 ").tostring())

热点排行