Неверная рекапча Sol — perl

#perl #cgi #md5 #captcha

#perl #cgi #md5 #captcha

Вопрос:

Я работал над регистрационной формой для игры, которую я разрабатываю, все работает нормально, кроме captcha. Он продолжает указывать неверный sol, хотя я правильно ввожу ответ. Я пробовал отладку с помощью 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. Попробуйте сузить проблему.

2. Я пытался в течение последних 2 часов, я не могу понять это, я знаю, что делаю что-то не так, но я не уверен, где.

3. «сузить» здесь означает удалить как можно больше кода, сохраняя при этом проблему; вы этого не сделали, и это, скорее всего, приведет к обнаружению вашей проблемы быстрее, чем что-либо еще.

4. Теперь он работает отлично. Я попробовал то, что вы мне сказали. Спасибо @ysth, что исправил это.

5. что ж, это хорошо. изменил мой комментарий на ответ.

Ответ №1:

Если вы запустите это в mod_perl или аналогичном, $html, используемый в checkAndRegister, будет отдельной переменной от $ html, используемого везде после первого запроса; передайте его в checkAndRegister, чтобы исправить это.

Если вы включите предупреждения, вы увидите «Переменную … не останется общедоступным» предупреждение об этом. Вы можете прочитать об этом здесь .

Комментарии:

1. Хорошо выведено, да. 1