ReCaptcha不正确的Sol - perl

时间:2014-06-20 08:05:58

标签: perl cgi md5 captcha

我一直在为我正在开发的游戏注册表单,除了验证码之外,一切正常。即使我正确输入答案,它仍然会说错误的解决方案。我尝试使用Data::Dumper进行调试,看起来它每次都会返回false。

http://s15.postimg.org/vy5kt6zaz/x_REuan_W.png

这是我的代码

use strict;
use warnings;

use CGI;
use Captcha::reCAPTCHA;
use Data::Dumper;

my $captcha = Captcha::reCAPTCHA->new();
my $html = CGI->new();
my $public_key = "6Ldbc9cSAAAAACYGs9FWEemI_A4Atx20sOtk6YA-";
my $private_key = "6Ldbc9cSAAAAAHs88TTzyytdrIlkbVx3h5x55t8j";

sub checkAndRegister {

    my $result = $captcha->check_answer($private_key, 
                                        $ENV{'REMOTE_ADDR'}, 
                                        $html->param("recaptcha_challenge_field"), 
                                        $html->param("recaptcha_response_field")
                                    );

    print Dumper($result);

    if ($result->{is_valid}) {
        #do stuff here

    } else {

        die ($result->{error});

    }
}


sub output_form {
    print $captcha->get_html($public_key);
}

非常感谢帮助!

1 个答案:

答案 0 :(得分:2)

如果你在mod_perl或类似的情况下运行它,checkAndRegister中使用的$ html将是第一个请求之后其他地方使用的$ html的单独变量;将它传递给checkAndRegister以解决此问题。

如果启用警告,您将看到“变量...不会保持共享”警告。你可以阅读它here