Utilizzo di reCAPTCHA con PHP

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

La libreria PHP di reCAPTCHA offre un modo semplice per inserire un CAPTCHA su il tuo sito web PHP, in modo da impedire ai bot di utilizzarlo in modo illecito. La libreria aggrega API reCAPTCHA.

Per utilizzare reCAPTCHA con PHP, puoi scaricare reCAPTCHA PHP libreria di Google. Sarà sufficiente utilizzare un solo file (recaptchalib.php). Gli altri file sono file leggibili e informazioni legali: non influiscono sulla funzionalità.

Avvio rapido

Dopo aver effettuato la registrazione per le chiavi API, di seguito sono riportate le istruzioni di base per installare reCAPTCHA sul tuo sito. Un guida di riferimento per il plug-in PHP è disponibile di seguito.

Lato client (come visualizzare l'immagine CAPTCHA)

Se vuoi utilizzare la libreria PHP per visualizzare il widget reCAPTCHA, dovrai inserire questo snippet di codice all'interno di <form> in cui verrà creato il widget reCAPTCHA posizionato:

  require_once('recaptchalib.php');
  $publickey = "your_public_key"; // you got this from the signup page
  echo recaptcha_get_html($publickey);

Con il codice, il modulo potrebbe avere un aspetto simile al seguente:

  <html>
    <body> <!-- the body tag is required or the CAPTCHA may not show on some browsers -->
      <!-- your HTML content -->

      <form method="post" action="verify.php">
        <?php
          require_once('recaptchalib.php');
          $publickey = "your_public_key"; // you got this from the signup page
          echo recaptcha_get_html($publickey);
        ?>
        <input type="submit" />
      </form>

      <!-- more of your HTML content -->
    </body>
  </html>

Non dimenticare di impostare $publickey sostituendo your_public_key con la chiave pubblica dell'API.

Tieni presente che il valore dell'"azione" è "verify.php". Ora, verify.php è il file file di destinazione in cui vengono inviati i valori di questo modulo. Avrai quindi bisogno di un file verifica.php nella stessa posizione del codice HTML del client.

La funzione request_once dell'esempio precedente prevede che recaptchalib.php sia nello stesso come file del modulo. Se si trova in un'altra directory, devi collegarla in modo appropriato. Ad esempio, se il file recaptchalib.php si trova nella directory "captcha" che corrisponde livello come il file del modulo, la funzione sarà simile a questa: require_once('captcha/recaptchalib.php').

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

Posiziona il seguente codice nella parte superiore del file verify.php:

  <?php
  require_once('recaptchalib.php');
  $privatekey = "your_private_key";
  $resp = recaptcha_check_answer ($privatekey,
                                $_SERVER["REMOTE_ADDR"],
                                $_POST["recaptcha_challenge_field"],
                                $_POST["recaptcha_response_field"]);

  if (!$resp->is_valid) {
    // What happens when the CAPTCHA was entered incorrectly
    die ("The reCAPTCHA wasn't entered correctly. Go back and try it again." .
         "(reCAPTCHA said: " . $resp->error . ")");
  } else {
    // Your code here to handle a successful verification
  }
  ?>

Nel codice riportato sopra:

  • recaptcha_check_answer restituisce un oggetto che rappresenta se l'utente ha completato correttamente la sfida.
  • Se il valore $resp->is_valid è true, la verifica captcha è stata completata correttamente e devi continuare con l'elaborazione del modulo.
  • Se $resp->is_valid è false, l'utente non è riuscito a fornire il captcha corretto e devi visualizzare di nuovo il modulo per consentire un altro tentativo. In questo caso $resp->error sarà un codice di errore che può essere fornito a recaptcha_get_html. Se passi il codice di errore, il controllo reCAPTCHA mostrerà un messaggio che spiega che l'utente non è stato inserito correttamente e dovrebbe riprovare.
  • Tieni presente che questo codice richiede la chiave privata, cosa che non deve essere confuso. con la chiave pubblica. che si trovano nella stessa pagina della chiave pubblica.

    Inoltre, assicurati che il modulo sia impostato in modo da ottenere le variabili del modulo utilizzando $_POST anziché $_REQUEST e che il modulo stesso utilizzi il metodo POST.

    È tutto. reCAPTCHA dovrebbe funzionare sul tuo sito.

    Per approfondire

  • Personalizzazione di aspetto e design
  • Suggerimenti e linee guida
  • Risoluzione dei problemi
  • Guida di riferimento dei plug-in PHP

    Di seguito è riportato un elenco completo di tutti i metodi del plug-in PHP di reCAPTCHA.

    La funzione recaptcha_get_html

    La funzione recaptcha_get_html visualizza il codice HTML che presenta reCAPTCHA a il utente.

    recaptcha_get_html
    Parametro
    $pubkey -- stringa. obbligatorio. La chiave pubblica reCAPTCHA, dalla pagina di registrazione all'API.
    $error -- stringa. facoltativo (nullo è il valore predefinito) Se questa stringa è impostata, l'area reCAPTCHA mostrerà il codice di errore fornite. Questo codice di errore proviene da ReCaptchaResponse->$error
    $use_ssl -- boolean. facoltativo (il valore predefinito è false) Dovrebbe essere utilizzata l'API basata su SSL? Se mostri una pagina al utente tramite SSL, assicurati di impostarlo su true in modo che non venga visualizzata una finestra di dialogo di errore vengono visualizzati nel browser dell'utente.
    Valore restituito Una stringa contenente HTML da inserire nella pagina web.

    La funzione recaptcha_check_answer

    Dopo che l'utente ha compilato il modulo HTML, inclusa la risposta per il CAPTCHA, quando inviano il modulo utilizzando Funzione recaptcha_check_answer. La risposta dell'utente sarà compilata in due campi: recaptcha_challenge_field e recaptcha_response_field. La La libreria reCAPTCHA invia una richiesta HTTP al server reCAPTCHA e verifica la proprietà risposta.

    recaptcha_check_answer
    Parametro
    $privkey -- stringa. obbligatorio. La chiave privata reCAPTCHA, dalla pagina di registrazione API.
    $remoteip -- stringa. obbligatorio. L'indirizzo IP dell'utente, nel formato 192.168.0.1
    $challenge -- stringa. obbligatorio.
    Il valore del campo del modulo recaptcha_challenge_field
    $response -- stringa. obbligatorio Il valore del campo del modulo recaptcha_response_field
    Valore restituito Un'istanza della classe ReCaptchaResponse

    ReCaptchaResponse
    Campo
    $is_valid -- boolean reCAPTCHA ritiene che la risposta fosse valida?
    $error -- stringa Se la risposta non era valida, qual era il problema? Questo codice di errore può essere utilizzato in recaptcha_get_html
    Valore restituito HTML o URL non elaborato per decodificare l'indirizzo email, a seconda dell'attività che svolgi chiamato.

    Mailhide

    La libreria PHP di reCAPTCHA include le associazioni per l'API Mailhide. Questo L'API consente di aggregare un'email in un reCAPTCHA per impedire agli spammer di vederla: esame...@example.com.

    La parte Mailhide della libreria PHP richiede il modulo mcrypt di PHP.

    L'API Mailhide è composta da due funzioni recaptcha_mailhide_html e recaptcha_mailhide_url. Le funzioni hanno gli stessi parametri. La versione _html restituisce HTML che possono essere inseriti direttamente sulla tua pagina web. La parte del nome utente dell'email che viene passata viene troncato e sostituito con un link che chiama Mailhide. La versione _url fornisce l'URL decodificare l'email, rimanendo a te la responsabilità di inserire l'email in HTML.

    recaptcha_mailhide_url / recaptcha_mailhide_html
    Parametro
    $pubkey -- stringa La chiave pubblica Mailhide dalla pagina di registrazione
    $privkey -- stringa La chiave privata Mailhide dalla pagina di registrazione
    $email -- stringa L'indirizzo email che vuoi nascondere.

    Nell'esempio seguente viene illustrato come utilizzare Mailhide:

    <html><body>
    <?
    require_once ("recaptchalib.php");
    // get a key at http://www.google.com/recaptcha/mailhide/apikey
    $mailhide_pubkey = '';
    $mailhide_privkey = '';
    ?>
    The Mailhide encoding of example@example.com is
    <?
    echo recaptcha_mailhide_html ($mailhide_pubkey,
                                  $mailhide_privkey,
                                  "example@example.com");
    ?>.
    <br>
    The url for the email is:
    <?
    echo recaptcha_mailhide_url ($mailhide_pubkey,
                                 $mailhide_privkey,
                                 "example@example.com");
    ?>
    <br>
    </body></html>