|
I will show you 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)
bitmap.Dispose()
Grfx.Dispose()
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
<asp:image runat=server imgeurl="captcha.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
- Saqib
|