zoukankan      html  css  js  c++  java
  • asp.net 验证码

    Before proceeding with the topic first we must understand "What is a Captcha code?" and "Why do we use them?". Most web sites have a Captcha validation in their sites.

    What is the Captcha code?

    A Captcha code is simply a combination of some characters and numbers like "Alk13" or "aTu2eP" etc.

    Why do we use them?

    We use them for validating that the client browser window really has a human typing into it.

    Ok, let's get to the topic i.e. creating your own Captcha code in ASP.Net.

    Step 1

    Go to Visual Studio and create a new project (web site or web application) say "CaptchCode".

    Step 2

    Now add a new page into your application say "ShowCaptcha.aspx" and add this code into the source for the page:

    <div>
    <table>
      <tr>
        <td>
          <asp:Image ID="imgCaptcha" runat="server" ImageUrl="~/CreateCaptcha.aspx?New=1"/>
         </td>
       </tr>
       <tr>
        <td>
          <asp:TextBox ID="txtCaptcha" runat="server"></asp:TextBox>
         </td>
        </tr>
        <tr>
         <td>
           <asp:Label ID="lblMessage" runat="server"></asp:Label>
          </td>
         </tr>
         <tr>
          <td>
     <asp:Button ID="btnCaptcha" runat="server" Text="Validate Cpatcha Code"                              onclick="btnCaptcha_Click" />
          </td>
           </tr>
         </table>
        </div>

    Note: Here I am given the ImageUrl="~/CreateCaptcha.aspx?New=1" of the image control. In CreateCaptcha.aspx we will write the code for creating the Captcha code.

    Step 3

    Now add a new page into your application "CreateCaptcha.aspx" and create the following methods in its .cs file:

    /// <summary>
    
    /// method for create captcha image
    
    /// </summary>
    
     private void CreateCaptchaImage()
    
    { 
    
     code = GetRandomText();
    
     Bitmap bitmap = new Bitmap(200, 60, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
    
     Graphics g = Graphics.FromImage(bitmap);
    
     Pen pen = new Pen(Color.Yellow);
    
     Rectangle rect = new Rectangle(0, 0, 200, 60);
    
     SolidBrush blue = new SolidBrush(Color.CornflowerBlue);
    
     SolidBrush black = new SolidBrush(Color.Black);
    
     int counter = 0;
    
     g.DrawRectangle(pen, rect);
    
     g.FillRectangle(blue, rect);
    
     
    
     for (int i = 0; i < code.Length; i++)
    
     {
    
        g.DrawString(code[i].ToString(), new Font("Tahoma", 10 + rand.Next(15, 20), FontStyle.Italic), black, newPointF(10 + counter, 10));
    
       counter += 28;
    
     }
    
     DrawRandomLines(g);          
    
     bitmap.Save(Response.OutputStream, ImageFormat.Gif);
    
     g.Dispose();
    
     bitmap.Dispose();
    
     
    
    }
    
     
    
    /// <summary>
    
    /// Method for drawing lines
    
    /// </summary>
    
    /// <param name="g"></param>
    
    private void DrawRandomLines(Graphics g)
    
    {
    
       SolidBrush yellow = new SolidBrush(Color.Yellow);
    
       for (int i = 0; i < 20; i++)
    
       {g.DrawLines(new Pen(yellow, 1), GetRandomPoints());}
    
     
    
    }
    
     
    
    /// <summary>
    
    /// method for gettting random point position
    
    /// </summary>
    
    /// <returns></returns>
    
    private Point[] GetRandomPoints()
    
    {
    
      Point[] points = { new Point(rand.Next(0, 150), rand.Next(1, 150)), new    Point(rand.Next(0, 200), rand.Next(1, 190)) };
    
      return points;
    
    }
    
      
    
    /// <summary>
    
    /// Method for generating random text of 5 cahrecters as captcha code
    
    /// </summary>
    
    /// <returns></returns>
    
    private string GetRandomText()
    
    {
    
      StringBuilder randomText = new StringBuilder();          
    
      string alphabets = "012345679ACEFGHKLMNPRSWXZabcdefghijkhlmnopqrstuvwxyz";
    
      Random r = new Random();
    
      for (int j = 0; j <= 5; j++)
    
      {randomText.Append(alphabets[r.Next(alphabets.Length)]);}
    
        Session["CaptchaCode"] = randomText.ToString();
    
         return Session["CaptchaCode"] as String;
    
      }


    Step 4 

    To validate the Captcha code in the "ShowCaptcha.aspx.cs" page:
     

    protected void btnCaptcha_Click(object sender, EventArgs e)
    
    {
    
       //imgCaptcha.ImageUrl = "~/CreateCaptcha.aspx?New=0";
    
      if (Session["CaptchaCode"] != null && txtCaptcha.Text == Session["CaptchaCode"].ToString())
    
      {
    
         lblMessage.ForeColor = Color.Green;
    
         lblMessage.Text = "Captcha code validated successfully!!";
    
      }
    
      else
    
      {
    
       lblMessage.ForeColor = Color.Red;
    
       lblMessage.Text = "Captcha code is wrong!!";
    
      }
    
    }


    I hope this article will be helpful for you.

    Happy Coding!!

    附代码:下载

  • 相关阅读:
    Win10 UWP Tile Generator
    Win10 BackgroundTask
    UWP Tiles
    UWP Ad
    Win10 build package error collections
    Win10 八步打通 Nuget 发布打包
    Win10 UI入门 pivot multiable DataTemplate
    Win10 UI入门 导航滑动条 求UWP工作
    UWP Control Toolkit Collections 求UWP工作
    Win10 UI入门 SliderRectangle
  • 原文地址:https://www.cnblogs.com/shuaixf/p/3504616.html
Copyright © 2011-2022 走看看