This project is read-only.

Below is an example of the Captcha Control

Captcha Control added to ASP.NET Page.


//Captcha Control
<cc1:CaptchaControl ID="myCaptchaControl" ClientIDMode="Static"
		RefreshButtonPath="~/Images/refresh.png"  runat="server" />

<asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>

Please enter characters displayed above&nbsp;

<asp:TextBox ID="CaptchaCharacters" ClientIDMode="Static" Text="" Width="100" ToolTip="Enter characters displayed above" runat="server">

<asp:RequiredFieldValidator runat="server" ValidationGroup="RegisterGroup" ontrolToValidate="CaptchaCharacters" CssClass="field-validation-error" ErrorMessage="*Required" />


Captcha Control will render out a HTML image element (image displaying characters) and a HTML input element of type button (refresh button - retrieving a new set of display characters).

Below the Capthca Control, I added a Textbox, which is where the user would type the Captcha characters and will be verified once the form is submitted.

Code Behind - Verifing Captcha Characters

Note: Captcha control had been place within a CreateUserWizard control. Referencing Captcha Control, I must FindControl within CreateUserWizard control (ID="RegisterUserWizardStep").


 //CreatingUser is raised before the Memebership Provider's CreateUser. Setting LoginCancelEventArgs Cancel property equal to true, the user will not be created.
protected void RegisterUser_CreatingUser(object sender, LoginCancelEventArgs e)
    var err = ((Literal)GetControl("ErrorMessage"));
    var parent = err.Parent;
    err.Text = "";

    if (!Page.IsValid)
       err.Text = "Required fields are empty or incorrect information was entered.";
       e.Cancel = true;
       //Initiate the EncodeCaptcha class
       var ec = new EncodeCaptcha(GetCaptchaKey());

       //GetCaptchaCharacters returns clear Captcha characters represented in the displayed image.
       //Test they must be equal
       if (ec.characters != GetCaptchaCharacters())
          err.Text = "Characters incorrectly entered. Please reenter correct characters displayed";
          e.Cancel = true;


//Return submited Captcha characters. the characters that the user had entered.
string GetCaptchaCharacters()
    return ((TextBox)GetControl("CaptchaCharacters")).Text;

//Return encrypted Captcha character string. The encrypted string had be UrlEncode, so the return
//string is UrlDecoded.
string GetCaptchaKey()
    var cc = GetControl("myCaptchaControl");
    var captchaCharacters = (HiddenField)cc.FindControl("Captcha-Key");

    return HttpUtility.UrlDecode(Request[captchaCharacters.UniqueID]);

//Abstracted findng fields within CreateUserWizard.
Control GetControl(string value)
    return RegisterUserWizardStep.ContentTemplateContainer.FindControl(value);

Last edited Aug 13, 2012 at 6:35 PM by dedogs, version 3


No comments yet.