65.9K
CodeProject is changing. Read more.
Home

Simple Captcha with ASP.NET

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.68/5 (13 votes)

Aug 5, 2005

viewsIcon

74385

Simple text to image generator to block spammers inserting data to your database, with ASP.NET.

Introduction

I was trying to find a solution to block spammers adding data to the database, using C#. This is the quick solution I found.

  1. First create an image tag in the webform that has the submit form.
    <IMG height="30" alt="" src="Turing.aspx" width="80">

    As you see, the source for the picture will be a file called “Turing.aspx”.

  2. Later, create the webform “Turing.aspx” with the code below:
    public class Turing1 : System.Web.UI.Page
    {
        private void Page_Load(object sender, System.EventArgs e)
        {
            Bitmap objBMP =new System.Drawing.Bitmap(60,20);
            Graphics objGraphics = System.Drawing.Graphics.FromImage(objBMP);
            objGraphics.Clear(Color.Green);
    
            objGraphics.TextRenderingHint = TextRenderingHint.AntiAlias;
    
            //' Configure font to use for text
            Font objFont = new  Font("Arial", 8, FontStyle.Bold);
            string randomStr="";
            int[] myIntArray = new int[5] ;
            int x;
    
            //That is to create the random # and add it to our string
            Random autoRand = new Random();
    
            for (x=0;x<5;x++)
            {
                myIntArray[x] =  System.Convert.ToInt32 (autoRand.Next(0,9));
                randomStr+= (myIntArray[x].ToString ());
            }
    
            //This is to add the string to session cookie, to be compared later
            Session.Add("randomStr",randomStr);
    
            //' Write out the text
            objGraphics.DrawString(randomStr, objFont, Brushes.White,  3, 3);
    
            //' Set the content type and return the image
            Response.ContentType = "image/GIF";
            objBMP.Save(Response.OutputStream, ImageFormat.Gif);
    
            objFont.Dispose();
            objGraphics.Dispose();
            objBMP.Dispose();
       }
    }
  3. And this is the code for the Submit button on the main form:
    private void btnSubmit_ServerClick(object sender, System.EventArgs e)
    {
        if (Page.IsValid && (txtTuring.Value.ToString () == 
                                Session["randomStr"].ToString ())) 
        {
             // The Code to insert data
        }
        else
        {
            Label1.Text ="Please enter info correctly";
        }
    }