reCAPTCHA mit PHP verwenden

Wichtig: Version 1.0 der reCAPTCHA API wird nicht mehr unterstützt. Führen Sie ein Upgrade auf Version 2.0 aus. Weitere Informationen

Die reCAPTCHA PHP-Bibliothek bietet eine einfache Möglichkeit, ein CAPTCHA auf einem Ihrer PHP-Website, um den Missbrauch durch Bots zu verhindern. Die Bibliothek umfasst die reCAPTCHA API.

Wenn Sie reCAPTCHA mit PHP verwenden möchten, können Sie reCAPTCHA PHP herunterladen Bibliothek. Sie benötigen von dort nur eine Datei (recaptchalib.php). Die anderen Dateien sind -Beispiele, Readme und rechtliche Hinweise. Sie haben keinen Einfluss auf die Funktionalität.

Schnellstart

Nachdem Sie sich für Ihre API-Schlüssel registriert haben, finden Sie im Folgenden eine grundlegende Anleitung zur Installation von reCAPTCHA auf Ihrer Website. Eine vollständige für das PHP-Plug-in finden Sie unten.

Clientseitig (Anleitung zum Anzeigen des CAPTCHA-Bildes)

Wenn Sie die PHP-Bibliothek zur Anzeige des reCAPTCHA-Widgets verwenden möchten, müssen Sie dieses Code-Snippet im <form>-Tag -Element, in dem sich das reCAPTCHA-Widget befindet platziert:

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

Mit dem Code könnte Ihr Formular in etwa so aussehen:

  <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>

Vergessen Sie nicht, $publickey festzulegen, indem Sie your_public_key durch Ihren öffentlichen API-Schlüssel.

Beachten Sie, dass der Wert der Aktion ist "verify.php". Jetzt ist „verify.php“ die Zieldatei, an die die Werte dieses Formulars gesendet werden. Sie benötigen also eine Datei, sich am selben Speicherort wie die Client-HTML befindet.

Für die Funktion „require_once“ im obigen Beispiel wird erwartet, dass sich „recaptchalib.php“ im selben als Formulardatei verwenden. Wenn sie sich in einem anderen Verzeichnis befindet, müssen Sie sie entsprechend verknüpfen. Beispiel: Die Datei „recaptchalib.php“ befindet sich im Verzeichnis „captcha“. auf demselben als Ihre Formulardatei festlegen, sieht die Funktion so aus: require_once('captcha/recaptchalib.php')

Serverseitig (So können Sie testen, ob der Nutzer die richtige Antwort eingegeben hat)

Der folgende Code sollte ganz oben in der Datei „verify.php“ platziert werden:

  <?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
  }
  ?>

Im obigen Code gilt Folgendes:

  • recaptcha_check_answer gibt ein Objekt zurück, das angibt, ob der Nutzer hat den Wettkampf erfolgreich abgeschlossen.
  • Wenn $resp->is_valid auf „true“ gesetzt ist, wurde die Captcha-Aufgabe korrekt ausgeführt und Sie sollten mit der Formularverarbeitung fortfahren.
  • Wenn $resp->is_valid „false“ ist, hat der Nutzer nicht das richtige Captcha eingegeben und Sie sollten das Formular erneut öffnen, um ihnen einen weiteren Versuch zu ermöglichen. In diesem Fall $resp->error ist ein Fehlercode, der recaptcha_get_html angegeben werden kann. Wird der Fehlercode übergeben, zeigt das reCAPTCHA-Steuerelement eine Meldung an, dass der Nutzer hat den Text falsch eingegeben. Versuchen Sie es erneut.
  • Dieser Code fragt nach dem Schlüssel private. Dies ist nicht zu verwechseln. mit dem öffentlichen Schlüssel. Sie erhalten ihn von derselben Seite wie den öffentlichen Schlüssel.

    Stellen Sie außerdem sicher, dass Ihr Formular so eingestellt ist, dass die Formularvariablen mit $_POST anstelle von $_REQUEST und dass für das Formular selbst die POST-Methode verwendet wird.

    Das war's! reCAPTCHA sollte jetzt auf Ihrer Website funktionieren.

    Weiterführende Literatur

  • Design anpassen
  • Tipps und Richtlinien
  • Fehlerbehebung
  • Referenzhandbuch für PHP-Plug-ins

    Nachfolgend finden Sie eine umfassende Liste aller Methoden des reCAPTCHA-PHP-Plug-ins.

    Die Funktion "recaptcha_get_html"

    Mit der Funktion recaptcha_get_html wird der HTML-Code angezeigt, der reCAPTCHA dem Nutzer präsentiert. die Nutzer.

    recaptcha_get_html
    Parameter
    $pubkey -- String. erforderlich. Ihr öffentlicher reCAPTCHA-Schlüssel von der API-Anmeldeseite
    $error -- Zeichenfolge. optional (Null ist die Standardeinstellung) Wenn dieser String festgelegt ist, wird im reCAPTCHA-Bereich der Fehlercode angezeigt gegeben ist. Dieser Fehlercode stammt von „reCaptchaResponse->$error“.
    $use_ssl -- boolean. optional (falsch ist die Standardeinstellung) Sollte die SSL-basierte API verwendet werden? Wenn Sie eine Seite für die über SSL verwenden, setzen Sie diese Einstellung auf "true", damit ein Fehlerdialogfeld die im Browser der Nutzenden angezeigt werden.
    Rückgabewert Ein String mit HTML, der in die Webseite eingefügt werden soll.

    Die Funktion „recaptcha_check_answer“

    Nachdem der Nutzer das HTML-Formular einschließlich seiner Antwort für das CAPTCHA ausgefüllt hat, möchten ihre Antwort überprüfen, wenn sie das Formular über die recaptcha_check_answer. Die Antwort wird in zwei Formularfeldern angezeigt: recaptcha_challenge_field und recaptcha_response_field. Die Die reCAPTCHA-Bibliothek sendet eine HTTP-Anfrage an den reCAPTCHA-Server und überprüft die Antwort.

    recaptcha_check_answer
    Parameter
    $privkey - Zeichenfolge. erforderlich. Ihr privater reCAPTCHA-Schlüssel von der API-Anmeldeseite
    $remoteip -- String. erforderlich. Die IP-Adresse des Nutzers im Format 192.168.0.1
    $challenge -- string erforderlich.
    Der Wert des Formularfelds „recaptcha_challenge_field“
    $response -- String. erforderlich Der Wert des Formularfelds „recaptcha_response_field“
    Rückgabewert Instanz der ReCaptchaResponse-Klasse

    ReCaptchaResponse
    Feld
    $is_valid -- boolean Gab es reCAPTCHA, dass die Antwort gültig war?
    $error -- Zeichenfolge Falls die Antwort ungültig war, was war das Problem? Dieser Fehlercode kann verwendet in reCAPTCHA_get_html
    Rückgabewert Die HTML- oder Raw-URL zur Decodierung der E-Mail-Adresse, je nachdem, welche Funktion Sie verwenden. aufgerufen.

    Mailhide

    Die reCAPTCHA-PHP-Bibliothek enthält Bindungen für die Mailhide-API. Dieses Mit der API können Sie eine E-Mail in ein reCAPTCHA einbetten, um zu verhindern, dass Spammer sie sehen: prüfung...@beispiel.de.

    Für den Mailhide-Teil der PHP-Bibliothek ist das PHP-Modul mcrypt erforderlich.

    Die Mailhide-API besteht aus den beiden Funktionen recaptcha_mailhide_html und recaptcha_mailhide_url. Die Funktionen haben die gleichen Parameter. Die _html-Version gibt HTML zurück die Sie direkt auf Ihrer Webseite einfügen können. Der Nutzername der E-Mail, der übergeben wird wird abgeschnitten und durch einen Link ersetzt, über den Mailhide aufgerufen wird. Die _url-Version gibt die URL an. um die E-Mail zu decodieren. Es bleibt Ihnen überlassen, die E-Mail im HTML-Format zu platzieren.

    reCAPTCHA_mailhide_url / recaptcha_mailhide_html
    Parameter
    $pubkey – String Den öffentlichen Mailhide-Schlüssel von der Anmeldeseite
    $privkey - Zeichenfolge Den privaten Mailhide-Schlüssel von der Anmeldeseite
    $email -- Zeichenfolge Die E-Mail-Adresse, die Sie ausblenden möchten.

    Das folgende Beispiel zeigt, wie Mailhide verwendet wird:

    <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>