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.
- 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”.
- 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;
Font objFont = new Font("Arial", 8, FontStyle.Bold);
string randomStr="";
int[] myIntArray = new int[5] ;
int x;
Random autoRand = new Random();
for (x=0;x<5;x++)
{
myIntArray[x] = System.Convert.ToInt32 (autoRand.Next(0,9));
randomStr+= (myIntArray[x].ToString ());
}
Session.Add("randomStr",randomStr);
objGraphics.DrawString(randomStr, objFont, Brushes.White, 3, 3);
Response.ContentType = "image/GIF";
objBMP.Save(Response.OutputStream, ImageFormat.Gif);
objFont.Dispose();
objGraphics.Dispose();
objBMP.Dispose();
}
}
- 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 ()))
{
}
else
{
Label1.Text ="Please enter info correctly";
}
}