Simple ASP.NET CAPTCHA Tutorial

I will show you today how to create a ASP.NET Captcha control without using any HTTP HANDELRS or what so ever. you can easily plug it into your web pages.

All you need to do is Create a ASPX page, that ASPX page will have a content type of image/jpeg, then within the code-behind file of that asp page we will be using system.drawing namespace to create a dynamic image.

System will generate 2 Random numbers, and then it will store the result of these 2 numbers into a Session Variable.

For Example

a = 2 + 3 (where 2 and 3 are 2 random numbers)

Session("Answer") = 5

then we will create a image using System.drawing namespace with the text " 2+ 5 = " within it.
We will store the result into a session variable, so later on our webpage we can use this session variable to compare with what user types.

Lets see the code of Captcha.aspx:

Imports System.Drawing

Partial Class Captcha
    Inherits System.Web.UI.Page


    Private Sub returnNumer()

        Dim num1 As New Random
        Dim num2 As New Random

        Dim numQ1 As Integer
        Dim numQ2 As Integer
        Dim QString As String

        numQ1 = num1.Next(10, 15)
        numQ2 = num1.Next(17, 31)


        QString = numQ1.ToString + " + " + numQ2.ToString + " = "
        Session("answer") = numQ1 + numQ2

        Dim bitmap As New Bitmap(85, 35)
        Dim Grfx As Graphics = Graphics.FromImage(bitmap)
        Dim font As New Font("Arial", 18, FontStyle.Bold, GraphicsUnit.Pixel)
        Dim Rect As New Rectangle(0, 0, 100, 50)

        Grfx.FillRectangle(Brushes.Brown, Rect)
        Grfx.DrawRectangle(Pens.PeachPuff, Rect) ' Border
        Grfx.DrawString(QString, font, Brushes.Azure, 0, 0)


        Response.ContentType = "Image/jpeg"
        bitmap.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg)



    End Sub

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        Call Me.returnNumer()

    End Sub

End Class


So the Page_Load event Generates an Image.


now we can use this Page within any aspx page for verification. For Example here is form2.aspx

now you can create a TextBox, have users enter some text into it, and then create a ANSWER button, upon clicking of ANSWER button compare the value of textbox with the Session variable Session("answer"), if both are same then Verification passed.

if you have any questions, please reply to this post.

Thanks for reading

 - Saqib


Posted by:

Comments History

by: on
by: on
Thank you :]
by: on
very nice tutorial thank you
by: on
Thanks, not bad.
by: on
Great tutorial,but is it safe to store the answer in session?
by: on
You are simply storing the answer for current user. it cant not be hijacked so easily. if you are really concerned then have your Form hosted over HTTPS channel.
by: on
good work
by: on
Cool stuff, thanx
by: on
by: on
Iam dont know the asp language can you please send me the whole codes in the pages where it works please to my email. thanks daniel could be very helpfull
by: on
My dear friend I dont know asp please can you help me to download the whole page in a readymade winrar or winzip file and then i can read all the pages please let me know the url where i could get the complete pages. thanks, daniel
by: on
Samson, above the complete page code, just save it into a Class.
by: on
hi, i have created two files. but i am not getting image displayed. can you send me files, please? thx
by: on
@bmw,send me your code at saqi19(AT), i will see whats wrong with your code.
by: on
works fine
by: on
Great job!
by: on
how can I get the "Session variable Session("answer")" in the different page
by: on
Sessions are available in all the pages. this is the beauty of sessions.
by: on
will to let me know from where your codes starts and where it ends. I just a website designer and dont have any knowledge of codes. please help
by: on
Nice post & nice blog. I love both. a href=""Sears Parts/a
by: on
hello thks for the code.. but i do not have problem display the the captcha image. but when i insert the textbox n the button it cannot be seen? can someone help me with this error?? When i disable the pageload function the button and the textbox can be seen.. does anyone know ?? can help me pls??
by: on
by: on
This is so simply but effective. Im going to put it on my website:
by: on
good article
by: on
Here is the code in C# for anyone.. private void returnNumber() { Random num1 = new Random(); Random num2 = new Random(); int numQ1 = 0; int numQ2 = 0; string QString = null; numQ1 = num1.Next(10, 15); numQ2 = num1.Next(17, 31); QString = numQ1.ToString() + " + " + numQ2.ToString() + " = "; Session["answer"] = numQ1 + numQ2; Bitmap bitmap = new Bitmap(85, 35); Graphics Grfx = Graphics.FromImage(bitmap); Font font = new Font("Arial", 18, FontStyle.Bold, GraphicsUnit.Pixel); Rectangle Rect = new Rectangle(0, 0, 100, 50); Grfx.FillRectangle(Brushes.Brown, Rect); Grfx.DrawRectangle(Pens.PeachPuff, Rect); // Border Grfx.DrawString(QString, font, Brushes.Azure, 0, 0); Response.ContentType = "Image/jpeg"; bitmap.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg); bitmap.Dispose(); Grfx.Dispose(); }
by: on
hi there, what exactly you mean content type "image/jpeg"? great tut.

Name :  

Email :  

Comment Below