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

求求你们!求求你们帮帮小弟我!再次帮助小弟我这个纯种大初学者.多谢

2012-01-28 
求求你们!!求求你们帮帮我!!再次帮助我这个纯种大菜鸟...谢谢!我找到一个c#经典验证码源代码..但是不会使

求求你们!!求求你们帮帮我!!再次帮助我这个纯种大菜鸟...谢谢!
我找到一个   c#经典验证码源代码..但是不会使用...
我知道把生成的这个图片弄到页面上去.但不知道怎么对比...
求求你们再帮助我一次吧!!谢谢!!!
-----
ASP.net   验证码(C#)  
/*   Copyright   all(c)   2005   ZhongFeng,   http://blog.csdn.net/SW515   */
  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)
    {
      //
      //   CODEGEN:   该调用是   asp.NET   web   窗体设计器所必需的。
      //
      InitializeComponent();
      base.OnInit(e);
    }
   
    ///   <summary>
    ///   设计器支持所需的方法   -   不要使用代码编辑器修改
    ///   此方法的内容。
    ///   </summary>
    private   void   InitializeComponent()
    {        
      this.Load   +=   new   System.EventHandler(this.Page_Load);
    }
    #endregion

    private   string   GenerateCheckCode()
    {
      int   number;
      char   code;
      string   checkCode   =   String.Empty;

      System.Random   random   =   new   Random();

      for(int   i=0;   i <5;   i++)
      {
        number   =   random.Next();

        if(number   %   2   ==   0)
          code   =   (char)( '0 '   +   (char)(number   %   10));
        else
          code   =   (char)( 'A '   +   (char)(number   %   26));

        checkCode   +=   code.ToString();
      }

      Response.Cookies.Add(new   HttpCookie( "CheckCode ",   checkCode));

      return   checkCode;
    }

    private   void   CreateCheckCodeImage(string   checkCode)
    {
      if(checkCode   ==   null   ||   checkCode.Trim()   ==   String.Empty)
        return;

      System.Drawing.Bitmap   image   =   new   System.Drawing.Bitmap((int)Math.Ceiling((checkCode.Length   *   12.5)),   22);
      Graphics   g   =   Graphics.FromImage(image);

      try
      {
        //生成随机生成器
        Random   random   =   new   Random();

        //清空图片背景色
        g.Clear(Color.White);

        //画图片的背景噪音线
        for(int   i=0;   i <25;   i++)


        {
          int   x1   =   random.Next(image.Width);
          int   x2   =   random.Next(image.Width);
          int   y1   =   random.Next(image.Height);
          int   y2   =   random.Next(image.Height);

          g.DrawLine(new   Pen(Color.Silver),   x1,   y1,   x2,   y2);
        }

        Font   font   =   new   System.Drawing.Font( "Arial ",   12,   (System.Drawing.FontStyle.Bold   |   System.Drawing.FontStyle.Italic));
        System.Drawing.Drawing2D.LinearGradientBrush   brush   =   new   System.Drawing.Drawing2D.LinearGradientBrush(new   Rectangle(0,   0,   image.Width,   image.Height),   Color.Blue,   Color.DarkRed,   1.2f,   true);
        g.DrawString(checkCode,   font,   brush,   2,   2);

        //画图片的前景噪音点
        for(int   i=0;   i <100;   i++)
        {
          int   x   =   random.Next(image.Width);
          int   y   =   random.Next(image.Height);

          image.SetPixel(x,   y,   Color.FromArgb(random.Next()));
        }

        //画图片的边框线
        g.DrawRectangle(new   Pen(Color.Silver),   0,   0,   image.Width   -   1,   image.Height   -   1);

        System.IO.MemoryStream   ms   =   new   System.IO.MemoryStream();
        image.Save(ms,   System.Drawing.Imaging.ImageFormat.Gif);
        Response.ClearContent();
        Response.ContentType   =   "image/Gif ";
        Response.BinaryWrite(ms.ToArray());
      }
      finally
      {
        g.Dispose();
        image.Dispose();
      }
    }
  }



[解决办法]
楼主的标题和签名都很搞笑啊。呵呵!

你所贴的是验证的页面比如教 v.aspx
你在d.aspx要引用这个验证码。那就再d.aspx里面写一个 <img src= "v.aspx " alt= "验证码 "/> ;
这样图片就会显示验证码了。即src的值就是你验证码的页面!

你要读取那就很简单拉,验证码页面是把验证码码放入cookies的
Response.Cookies.Add(new HttpCookie( "CheckCode ", checkCode));
根据以上那句可以知道cookies的key为CheckCode,
那么你可以根据文本框内容和该cookies的值比较。如果一样则验证码正确!
[解决办法]
验证码 = Server.HtmlEncode(你的img控件);
[解决办法]
this.CreateCheckCodeImage(GenerateCheckCode());
拆成3句
string checkcode = GenerateCheckCode();
Session[ "CheckCode "] = checkcode ;
CreateCheckCodeImage(checkcode );


判断用:
if(文本框.Text == Session[ "CheckCode "].ToString())
{
//正确
}
else
{
//错误
}
------解决方案--------------------


告诉你一个办法,验证码是个死东西,你把验证码的例子在网上多找几个,然后把它们分别打包成DLL文件,之后你想用哪个直接拿出来用就是了,我就是这样,公司也不会勉强你话那么多时间去研究那个验证码吧,呵呵,况且你想弄懂那些,那还需要点时间

热点排行