ASP.NET Hosting

Using ASP.NET to Create Captcha Code

We must first comprehend “What is a Captcha code?” and “Why do we use them?” before moving on to the issue. The majority of websites include a Captcha validation.

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, new PointF(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!!

ASP.NET Core 10.0 Hosting Recommendation

HostForLIFE.eu
HostForLIFE.eu is a popular recommendation that offers various hosting choices. Starting from shared hosting to dedicated servers, you will find options fit for beginners and popular websites. It offers various hosting choices if you want to scale up. Also, you get flexible billing plans where you can choose to purchase a subscription even for one or six months.