Recaptcha не работает в приложении asp.net - PullRequest
0 голосов
/ 14 августа 2011

Я пытаюсь использовать контроль рекапчи в моем приложении.По какой-то причине это все время действует.Независимо от того, какие значения я поместил в поле recaptcha, оно всегда действует.Есть идеи, что мне не хватает?

вот мой код

<%@ Control Language="C#" CodeBehind="RegisterControl.ascx.cs" AutoEventWireup="true"
    Inherits="UserControls.RegisterControl" %>
<%@ Register TagPrefix="recaptcha" Namespace="Recaptcha" Assembly="Recaptcha" %>
<asp:Panel ID="PlReg" runat="server" DefaultButton="CreateUserButton">
    <div class="Reg_Wrapper">
        <span class="failureNotification">

            <asp:Literal ID="ErrorMessage" runat="server"></asp:Literal>
        </span>
        <div class="Clear">
        </div>
        <div class="Reg_ControlName">
            <asp:Label ID="UserNameLabel" runat="server" AssociatedControlID="UserName">Username:</asp:Label></div>
        <div class="Reg_Control">
            <asp:TextBox ID="TxtUserName" runat="server" CssClass="textEntry"></asp:TextBox>
            <asp:RequiredFieldValidator Display="Dynamic" ID="UserNameRequired" runat="server"
                ControlToValidate="TxtUserName" CssClass="failureNotification" ErrorMessage="User Name is required."
                ToolTip="User Name is required." ValidationGroup="RegisterUserValidationGroup"><img src="/Images/required.png" alt="Required" /></asp:RequiredFieldValidator>
        </div>
        <div class="Clear">
        </div>
        <div class="Reg_ControlName">
            <asp:Label ID="EmailLabel" runat="server" AssociatedControlID="Email">E-mail:</asp:Label></div>
        <div class="Reg_Control">
            <asp:TextBox ID="TxtEmail" runat="server" CssClass="textEntry"></asp:TextBox>
            <asp:RequiredFieldValidator Display="Dynamic" ID="EmailRequired" runat="server" ControlToValidate="TxtEmail"
                CssClass="failureNotification" ErrorMessage="E-mail is required." ToolTip="E-mail is required."
                ValidationGroup="RegisterUserValidationGroup"><img src="/Images/required.png" alt="Required" /></asp:RequiredFieldValidator>
            <asp:RegularExpressionValidator ID="RevEmail" ControlToValidate="TxtEmail" runat="server"
                ErrorMessage="*" Display="Dynamic" ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*">
            <img src="/Images/required.png" alt="Required" />
            </asp:RegularExpressionValidator>
        </div>
        <div class="Clear">
        </div>
        <div class="Reg_ControlName">
            <asp:Label ID="PasswordLabel" runat="server" AssociatedControlID="Password">Password:</asp:Label></div>
        <div class="Reg_Control">
            <asp:TextBox ID="TxtPassword" runat="server" CssClass="passwordEntry" TextMode="Password"></asp:TextBox>
            <asp:RequiredFieldValidator Display="Dynamic" ID="PasswordRequired" runat="server"
                ControlToValidate="TxtPassword" CssClass="failureNotification" ErrorMessage="Password is required."
                ToolTip="Password is required." ValidationGroup="RegisterUserValidationGroup"><img src="/Images/required.png" alt="Required" /></asp:RequiredFieldValidator>
        </div>
        <div class="Clear">
        </div>
        <div class="Reg_ControlName">
            <asp:Label ID="ConfirmPasswordLabel" runat="server" AssociatedControlID="ConfirmPassword">Conf. Password:</asp:Label></div>
        <div class="Reg_Control">
            <asp:TextBox ID="TxtConfirmPassword" runat="server" CssClass="passwordEntry" TextMode="Password"></asp:TextBox>
            <asp:RequiredFieldValidator ControlToValidate="TxtConfirmPassword" CssClass="failureNotification"
                Display="Dynamic" ErrorMessage="Confirm Password is required." ID="ConfirmPasswordRequired"
                runat="server" ToolTip="Confirm Password is required." ValidationGroup="RegisterUserValidationGroup"><img src="/Images/required.png" alt="Required" /></asp:RequiredFieldValidator>
            <asp:CompareValidator ID="PasswordCompare" runat="server" ControlToCompare="TxtPassword"
                ControlToValidate="TxtConfirmPassword" CssClass="failureNotification" Display="Dynamic"
                ErrorMessage="The Password and Confirmation Password must match." ValidationGroup="RegisterUserValidationGroup"><img src="/Images/required.png" alt="Required" /></asp:CompareValidator>
        </div>
        <div class="Clear">
        </div>
        <div class="Reg_ControlName">
            &nbsp;</div>
        <div class="Reg_Control">
            <recaptcha:RecaptchaControl ID="recaptcha" runat="server" PublicKey="my public key"
                PrivateKey="my private key" Theme="white" />
        </div>
        <div class="Clear">
        </div>
        <div class="Reg_ControlName">
            &nbsp;</div>
        <div class="Reg_Control">
            <asp:Button ID="CreateUserButton" role="button" runat="server" CommandName="MoveNext"
                Text="Create User" ValidationGroup="RegisterUserValidationGroup" CssClass="Reg_Button"
                OnClick="CreateUserButton_Click" /></div>
        <div class="Clear">
        </div>
    </div>
</asp:Panel>

сервер

protected void CreateUserButton_Click(object sender, EventArgs e)
{
    if(Page.IsValid)
    {
        ErrorMessage.Text = "page is valid";
    }
    else
    {
        ErrorMessage.Text = "page is not valid";
    }
}

Ответы [ 2 ]

0 голосов
/ 14 августа 2011

Я не думаю, что нужно проверить проверку кода при загрузке страницы, должна быть кнопка отправки, которую вы имеете, и вы проверяете ее в событии нажатия кнопки, вот как я использую. Я думаю, что вы должны проверить ссылки Blove ...

http://code.google.com/intl/tr-TR/apis/recaptcha/docs/aspnet.html

http://www.codeproject.com/KB/custom-controls/CaptchaControl.aspx

0 голосов
/ 14 августа 2011

Вот тот, который работает для меня.Обязательно вставьте правильные ключи на сервере:

<recaptcha:RecaptchaControl ID="recaptcha" Theme="clean" runat="server"
    PublicKey="hiddenxxx" TabIndex="7" ToolTip="Accessible CAPTCHA" 
        privateKey="hiddenxxx" />
<asp:Label CssClass="captchaLabel" ID="lblResult" runat="server" />

Как вы можете видеть, я обычно храню сообщение об ошибке CAPTCHA отдельно от других сообщений.

Кодовый код:

if(Page.IsValid)
{
    ...
}
else
{
    lblResult.Text = "Incorrect!";
    lblResult.ForeColor = System.Drawing.Color.Red;
}
...