Utilizzo di reCAPTCHA con Perl

Importante: la versione 1.0 dell'API reCAPTCHA non è più supportata, esegui l'upgrade alla versione 2.0. Scopri di più

Il modulo reCAPTCHA Perl fornisce un modo semplice per inserire un CAPTCHA sul tuo sito web, aiutandoti a impedire ai bot di utilizzarlo in modo illecito. Il modulo esegue il wrapping dell'API reCAPTCHA.

Per utilizzare reCAPTCHA con Perl, puoi scaricare il modulo Perl reCAPTCHA (di Andy Armstrong). Dovrai installare questo modulo sulla tua macchina (server web). Il modulo dipende dai moduli LWP::UserAgent e HTML::Tiny, che dovranno essere anche installati. Ecco alcune istruzioni di base sull'installazione dei moduli Perl.

Avvio rapido

Dopo aver effettuato la registrazione per le chiavi API e scaricato il modulo reCAPTCHA Perl, di seguito sono riportate le istruzioni di base per installare reCAPTCHA sul tuo sito.

Lato client (come visualizzare l'immagine del CAPTCHA)

Se vuoi utilizzare il modulo Perl per visualizzare il widget reCAPTCHA, devi inserire questa riga nella parte superiore del file con l'elemento modulo in cui verrà visualizzato il widget reCAPTCHA:

    use Captcha::reCAPTCHA;

Quindi, devi creare un'istanza di reCAPTCHA:

    my $c = Captcha::reCAPTCHA->new;

Infine, per visualizzare il widget reCAPTCHA, devi inserire la seguente riga all'interno del tag <form>:

    print $c->get_html("your_public_key");

Di conseguenza, il codice potrebbe avere il seguente aspetto:

    use Captcha::reCAPTCHA;

    my $c = Captcha::reCAPTCHA->new;

    print <<EOT;
    <html>
      <body>
        <form action="" method="post">
    EOT

    print $c->get_html("your_public_key");

    print <<EOT;
        <input type="submit" value="submit" />
        </form>
      </body>
    </html>
    EOT

Non dimenticare di sostituire your_public_key con il valore della tua chiave API.

Lato server (come verificare se l'utente ha inserito la risposta corretta)

Di seguito è riportata una bozza di come verificare la risposta reCAPTCHA:

    use Captcha::reCAPTCHA;

    my $c = Captcha::reCAPTCHA->new;

    my $challenge = param 'recaptcha_challenge_field';
    my $response = param 'recaptcha_response_field';

    # Verify submission
    my $result = $c->check_answer(
        "your_private_key", $ENV{'REMOTE_ADDR'},
        $challenge, $response
    );

    if ( $result->{is_valid} ) {
        print "Yes!";
    }
    else {
        # Error
        print "No";
    }

Per approfondire

  • Personalizzazione di aspetto e design
  • Suggerimenti e linee guida
  • Risoluzione dei problemi