Friday, June 19, 2009

Simple Captcha 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";
}
}

Popular Posts