我一直在为我正在开发的游戏注册表单,除了验证码之外,一切正常。即使我正确输入答案,它仍然会说错误的解决方案。我尝试使用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);
}
非常感谢帮助!
答案 0 :(得分:2)
如果你在mod_perl或类似的情况下运行它,checkAndRegister中使用的$ html将是第一个请求之后其他地方使用的$ html的单独变量;将它传递给checkAndRegister以解决此问题。
如果启用警告,您将看到“变量...不会保持共享”警告。你可以阅读它here。