Używanie reCAPTCHA z PHP

Ważne: interfejs API reCAPTCHA w wersji 1.0 nie jest już obsługiwany, uaktualnij go do wersji 2.0. Więcej informacji

Biblioteka PHP reCAPTCHA pozwala w prosty sposób umieścić CAPTCHA w w Twojej witrynie w języku PHP, aby zapobiec nadużywaniu jej przez boty. Biblioteka obejmuje Interfejs API reCAPTCHA.

Aby korzystać z reCAPTCHA w PHP, pobierz plik reCAPTCHA PHP Biblioteka. Potrzebny będzie tylko jeden plik (recaptchalib.php). Pozostałe pliki są Przykłady, pliki Readme i informacje prawne – nie mają wpływu na funkcjonalność.

Szybki start

Gdy już zarejestrujesz klucze interfejsu API, poniżej znajdziesz podstawowe instrukcje instalowania reCAPTCHA w witrynie. Pełny przewodnik po wtyczce PHP znajdziesz poniżej.

Po stronie klienta (jak wyświetlić obraz CAPTCHA)

Jeśli chcesz wyświetlić widżet reCAPTCHA za pomocą biblioteki PHP, musisz wstawić ten fragment kodu w <form>. element, w którym będzie widżet reCAPTCHA umieszczone:

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

Z kodem Twój formularz może wyglądać mniej więcej tak:

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

Nie zapomnij ustawić parametru $publickey, zastępując your_public_key ciągiem klucz publiczny interfejsu API.

Zauważ, że wartość działania to „verify.php”. A teraz sprawdź poprawność pliku.php. plik docelowy, do którego przesyłane są wartości tego formularza. Potrzebujesz pliku Verify.php znajduje się w tej samej lokalizacji co plik html klienta.

Funkcja required_once w powyższym przykładzie wymaga, aby skrypt recaptchalib.php znajdował się w tej samej jako plik formularza. Jeśli znajduje się w innym katalogu, musisz połączyć go w odpowiedni sposób. Na przykład jeśli plik recaptchalib.php znajduje się w katalogu o nazwie „captcha” na tym samym na poziomie pliku formularza, funkcja będzie wyglądać tak: require_once('captcha/recaptchalib.php')

Po stronie serwera (jak sprawdzić, czy użytkownik wpisał poprawną odpowiedź)

Na początku pliku Verify.php należy umieścić następujący kod:

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

W powyższym kodzie:

  • recaptcha_check_answer zwraca obiekt wskazujący, czy użytkownik udało Ci się ukończyć wyzwanie.
  • Jeśli $resp->is_valid ma wartość prawda, test captcha został ukończony prawidłowo i należy kontynuować przetwarzanie formularza.
  • Jeśli $resp->is_valid ma wartość Fałsz, użytkownik nie podał poprawnego obrazu captcha. . Możesz spróbować ponownie wyświetlić formularz. W tym przypadku $resp->error będzie kodem błędu, który można przekazać do recaptcha_get_html. Po przekazaniu kodu błędu kontrolka reCAPTCHA wyświetli komunikat wyjaśniający, że użytkownik błędnie wpisali tekst. Spróbuj ponownie.
  • Zwróć uwagę, że ten kod wymaga podania klucza prywatnego, którego nie należy mylić. za pomocą klucza publicznego. Otrzymasz go z tej samej strony co klucz publiczny.

    Upewnij się też, że formularz jest ustawiony tak, aby uzyskiwać zmienne formularza za pomocą metody $_POST, a nie $_REQUEST, a sam formularz korzysta z metody POST.

    To wszystko. reCAPTCHA powinien już działać w Twojej witrynie.

    Dalsza lektura

  • Dostosowywanie wyglądu i stylu
  • Wskazówki i wytyczne
  • Rozwiązywanie problemów
  • Przewodnik po wtyczkach PHP

    Poniżej znajduje się pełna lista wszystkich metod używanych przez wtyczkę reCAPTCHA PHP.

    Funkcja recaptcha_get_html

    Funkcja recaptcha_get_html wyświetla kod HTML, który przedstawia reCAPTCHA użytkownika.

    recaptcha_get_html
    Parametr
    $pubkey -- ciąg. Twój klucz publiczny reCAPTCHA ze strony rejestracji interfejsu API.
    $error – ciąg. opcjonalnie (wartość domyślna to wartość null) Jeśli ten ciąg jest ustawiony, w obszarze reCAPTCHA będzie wyświetlany kod błędu danej wartości. Ten kod błędu pochodzi z ReCaptchaResponse->$error
    $use_ssl -- boolean. opcjonalnie (wartość domyślna: fałsz) Czy należy używać interfejsu API opartego na SSL? Jeśli wyświetlasz stronę w przez SSL, pamiętaj, aby wybrać dla tego ustawienia wartość Prawda, aby okno błędu nie było pojawi się w przeglądarce użytkownika.
    Zwracana wartość Ciąg tekstowy zawierający kod HTML do umieszczenia na stronie internetowej.

    Funkcja recaptcha_check_answer

    Gdy użytkownik wypełni formularz HTML (wraz z odpowiedzią na obraz CAPTCHA) chcą sprawdzić swoje odpowiedzi po przesłaniu formularza za pomocą recaptcha_check_answer. Odpowiedź użytkownika będzie podana w dwóch polach, recaptcha_challenge_field i recaptcha_response_field. Biblioteka reCAPTCHA wyśle żądanie HTTP do serwera reCAPTCHA i zweryfikuje .

    recaptcha_check_answer
    Parametr
    $privkey -- ciąg. Twój klucz prywatny reCAPTCHA ze strony rejestracji interfejsu API.
    $remoteip -- ciąg. Adres IP użytkownika w formacie 192.168.0.1
    $challenge -- string.
    Wartość w polu formularza: recaptcha_challenge_field
    $response – ciąg. wymagane Wartość w polu recaptcha_response_field
    Zwracana wartość Instancja klasy ReCaptchaResponse

    ReCaptchaResponse
    Pole
    $is_valid -- boolean Czy reCAPTCHA uznał, że odpowiedź jest prawidłowa?
    $error – ciąg Jeśli odpowiedź była nieprawidłowa, co było przyczyną problemu? Ten kod błędu może być używane w recaptcha_get_html
    Zwracana wartość Kod HTML lub nieprzetworzony URL do zdekodowania adresu e-mail – w zależności od funkcji .

    Kod pocztowy

    Biblioteka PHP reCAPTCHA zawiera powiązania dla interfejsu API Mailhide. Ten Interfejs API umożliwia zapakowanie e-maila do reCAPTCHA, aby spamerzy nie mogli go zobaczyć: egzamin...@example.com.

    Część Mailhide w bibliotece PHP wymaga modułu mcrypt PHP.

    Interfejs Mailhide API składa się z dwóch funkcji recaptcha_mailhide_html oraz recaptcha_mailhide_url Funkcje mają te same parametry. Wersja _html zwraca kod HTML które można umieścić bezpośrednio na stronie. Przekazywana część e-maila z nazwą użytkownika jest obcinany i zastępowany linkiem wywołującym Mailhide. Wersja _url udostępnia URL do zdekodowania e-maila, pozostawiając wyłącznie możliwość umieszczenia go w kodzie HTML.

    recaptcha_mailhide_url / recaptcha_mailhide_html
    Parametr
    $pubkey -- ciąg klucz publiczny Mailhide na stronie rejestracji;
    $privkey -- ciąg klucz prywatny Mailhide na stronie rejestracji;
    $email – ciąg Adres e-mail, który chcesz ukryć.

    Poniższy przykład pokazuje, jak używać 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>