Captcha Validation no working

2 posts, 0 answers
  1. Bryan Hughes
    Bryan Hughes avatar
    130 posts
    Member since:
    Oct 2005

    Posted 28 Feb 2013 Link to this post

    I have form that uses validation summary, textbox (with required validator and custom validator), captcha and submit button.  All validators, including captcha are using group.  EnableClientScript=False.  The custom validator does a sever side check to see if email is in system.

    If the custom validator is false the Capthca validator also works, but if custom validator is true then captcha never validates.  I am assuming I need to fire server side validation for Captcha, but not sure how I should do it.

    Here is page
    <%@ Page Language="VB" Title="Password Recovery" MasterPageFile="~/Default.master" Theme="Default" AutoEventWireup="false" CodeFile="PasswordRecovery.aspx.vb" Inherits="PasswordRecovery" %>
    <asp:Content ID="Content1" ContentPlaceHolderID="navigationcontent" Runat="Server">
        <a class="navigationitem" href="default.aspx">Home</a>
    </asp:Content>
    <asp:Content ID="Content2" ContentPlaceHolderID="body" Runat="Server">
        <div class="contentbox1" style="width: 350px;">
            <h2>Password Recovery</h2>
            <div class="contentbox2">
                <asp:literal ID="litins" runat="server" Text="Enter your email to receive password recover information.<br /><br />" />
                <div class="contentbox3">
                    <asp:Panel ID="pan1" runat="server">
                    <div>
                        <asp:ValidationSummary ID="ValidationSummary1" runat="server" ValidationGroup="SubmitInfo" EnableClientScript="False" HeaderText="Please correct the following errors:" />
                    </div>
                    <table border="0" cellpadding="2" cellspacing="2">
                        <tr>
                            <td>Email:</td>
                            <td>
                                <asp:TextBox ID="txtemail" runat="server" Width="200px" />
                                <asp:RequiredFieldValidator ID="rfv1" runat="server" EnableClientScript="false" ValidationGroup="SubmitInfo" ControlToValidate="txtemail" ErrorMessage="Please fill in email."
                                Display="Dynamic" Text="*"/><asp:CustomValidator ID="cvEmail" runat="server"
                                    ErrorMessage="Email does not exist in the system." Display="Static" ControlToValidate="txtEmail" Text="*" ValidationGroup="SubmitInfo" ValidateEmptyText="false"
                                    EnableClientScript="false"></asp:CustomValidator>
                            </td>
                        </tr>
                        <tr>
                            <td> </td>
                            <td> </td>
                        </tr>
                        <tr>
                            <td> </td>
                            <td>
                                <telerik:RadCaptcha ID="radc1" runat="server"
                                    CaptchaImage-BackgroundNoise="Medium" 
                                    CaptchaImage-FontWarp="Medium"
                                    CaptchaImage-LineNoise="Low"
                                    CaptchaImage-TextLength="6"
                                    Enabled="true"
                                    CssClass="captcha"
                                    EnableRefreshImage="true" IgnoreCase="true" Visible="true" ToolTip="Code is not case sensitive"
                                     
                                    CaptchaTextBoxLabel="<br />Type the code from the image<br />(not case sensitive)<br />"
                                    CaptchaImage-TextChars="Letters" BorderStyle="Solid" BorderWidth="1"
                                    BorderColor="#0099CC"                                            
                                    CaptchaImage-CharSet="ABCDEFGHJKLMNOPQRSTUVWXYZ"
                                    CaptchaImage-UseRandomFont="False" ValidationGroup="SubmitInfo"
                                    ErrorMessage="The code you entered is not valid." Display="None"/>
                            </td>
                        </tr>
                        <tr>
                            <td colspan="2" align="right">
                                <asp:Button ID="btnsubmit" runat="server" text="Send" ValidationGroup="SubmitInfo" CausesValidation="true" />
                            </td>
                        </tr>
                    </table>
                    </asp:Panel>
                    <asp:Panel ID="pan2" runat="server" Visible="false">
                        <div style="padding:20px 0px 20px 0px;">
                        An email has been sent.  Please follow the instructions in the email to recover your password.
                        </div>
                    </asp:Panel>
                </div>
            </div>
        </div>
        <div style="clear: both;"></div>
        <!-- Begin DigiCert/ClickID site seal HTML and JavaScript -->
    <div id="DigiCertClickID_OzSLC-hR" data-language="en_US" style="width: 100px; margin: 5px 5px 5px auto;">
        <a href="http://www.digicert.com/ev-ssl-certification.htm">SSL Certificates</a>
    </div>
    <script type="text/javascript">
        var __dcid = __dcid || []; __dcid.push(["DigiCertClickID_OzSLC-hR", "7", "m", "black", "OzSLC-hR"]); (function () { var cid = document.createElement("script"); cid.async = true; cid.src = "//seal.digicert.com/seals/cascade/seal.min.js"; var s = document.getElementsByTagName("script"); var ls = s[(s.length - 1)]; ls.parentNode.insertBefore(cid, ls.nextSibling); } ());
    </script>
    <!-- End DigiCert/ClickID site seal HTML and JavaScript -->
        <div style="clear: both;"></div>
    </asp:Content>

    Here is code behind
    Partial Class PasswordRecovery
        Inherits System.Web.UI.Page
     
        Sub clickhere(ByVal sender As Object, ByVal e As EventArgs) Handles btnsubmit.Click
            Dim mm As Net.Mail.MailMessage = New Net.Mail.MailMessage()
            Dim smtpClient As Net.Mail.SmtpClient = New Net.Mail.SmtpClient()
            Dim body As String = ""
            Dim group As String = ""
            Dim toadd As Net.Mail.MailAddress
            Dim catchaText
            Try
                toadd = New Net.Mail.MailAddress(txtemail.Text)
                cvEmail.IsValid = True
            Catch ex As Exception
                cvEmail.IsValid = False
                'lblerror.Visible = True
                'lblerror.Text = "Invalid Email"
                Exit Sub
            End Try
     
            Dim mu As MembershipUser
            Dim userName As String = ""
            Try
                userName = Membership.GetUserNameByEmail(txtemail.Text)
                mu = Membership.GetUser(userName)
                cvEmail.IsValid = True
            Catch ex As Exception
                cvEmail.IsValid = False
                'lblerror.Visible = True
                Exit Sub
            End Try
     
     
            Dim ut As New UserToken
            ut.UserID = mu.ProviderUserKey
            ut.DateIssued = Now
            ut.Token = Guid.NewGuid
            ut.AddUserToken()
     
            Dim expdate As DateTime = ut.DateIssued.AddHours(48)
     
            Dim fromadd As New Net.Mail.MailAddress("Password-Recovery@wishfamilyjournal.org")
            Dim fromaddress As String = ConfigurationManager.AppSettings("ServerSendAddress").ToString
            mm = New Net.Mail.MailMessage(fromadd, toadd)
            mm.Subject = "WISH Family Journal Password Recovery"
            mm.Body = "A request to change your password has been issued.<br/><br/>" & _
              "Please <a href='" & ConfigurationManager.AppSettings("SiteUrl").ToString & "passwordreset.aspx?token=" & ut.Token.ToString & "'>CLICK HERE TO CHANGE YOUR PASSWORD</a><br/><br/>" & _
              "This link is only valid for 48 hours (" & expdate.ToShortDateString & " " & expdate.ToShortTimeString & ").  If you did not request a password change please ignore this email<br/><br/>" & _
              "If you have any problems or questions please respond to this email.<br/><br/>" & _
              "Thank you<br/>" & _
              "WISH Family Journal Administrator"
            mm.IsBodyHtml = True
            smtpClient.Timeout = 5000
            smtpClient.Send(mm)
            mm.Dispose()
     
            pan1.Visible = False
            pan2.Visible = True
            litins.Visible = False
        End Sub
         
     
    End Class


    How can I check if captcha is also valid?

    Thank you,
    Bryan

  2. Bryan Hughes
    Bryan Hughes avatar
    130 posts
    Member since:
    Oct 2005

    Posted 01 Mar 2013 Link to this post

    I figured it out

    I just added
    radcaptcha1.Validate()
    Page.Validate("SubmitInfo")
    If Not radcaptcha1.IsValid Then
        Exit Sub
    End If

    Works Great.
  3. UI for ASP.NET Ajax is Ready for VS 2017
Back to Top