Friday, June 19, 2009

Simple Captcha with ASP.NET


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.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


//' 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);


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

Label1.Text ="Please enter info correctly";

No comments:

Popular Posts