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 to prosty sposób na umieszczenie kodu CAPTCHA w swojej witrynie w języku PHP, pomagając Ci powstrzymać boty przed jego nadużywaniem. W bibliotece znajduje się interfejs reCAPTCHA API.
Aby używać reCAPTCHA w języku PHP, możesz pobrać bibliotekę PHP reCAPTCHA. Potrzebujesz tylko jednego pliku (recaptchalib.php). Pozostałe pliki to przykłady, pliki Readme i informacje prawne – nie wpływają one na funkcjonalność.
Szybki start
Po zarejestrowaniu kluczy interfejsu API poniżej znajdziesz podstawowe instrukcje instalowania reCAPTCHA w swojej witrynie. Pełny przewodnik po wtyczce PHP znajdziesz poniżej.
Po stronie klienta (jak wyświetlić obraz CAPTCHA)
Jeśli chcesz użyć biblioteki PHP do wyświetlania widżetu reCAPTCHA, musisz wstawić ten fragment kodu w elemencie <form>, w którym zostanie umieszczony widżet reCAPTCHA:
require_once('recaptchalib.php'); $publickey = "your_public_key"; // you got this from the signup page echo recaptcha_get_html($publickey);
Twój formularz z kodem 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ć $publickey, zastępując your_public_key
swoim kluczem publicznym interfejsu API.
Zwróć uwagę, że wartość atrybutu „action” to „verify.php”. Zweryfikuj.php to plik docelowy, w którym przesyłane są wartości tego formularza. Musisz więc mieć plik verify.php w tym samym miejscu co kod HTML klienta.
Funkcja required_once w przykładzie powyżej wymaga, aby plik recaptchalib.php znajdował się w tym samym katalogu co plik formularza. Jeśli znajduje się on w innym katalogu, musisz połączyć go z odpowiednim katalogiem.
Jeśli na przykład plik recaptchalib.php znajduje się w katalogu o nazwie „captcha”, który znajduje się na tym samym poziomie co plik formularza, funkcja będzie wyglądać tak: require_once('captcha/recaptchalib.php')
.
Po stronie serwera (jak sprawdzić, czy użytkownik wpisał poprawną odpowiedź)
Ten kod należy umieścić u góry pliku weryfikacyjnego.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 } ?>
W tym kodzie:
recaptcha_check_answer
zwraca obiekt, który wskazuje, czy użytkownik wykonał zadanie.$resp->is_valid
ma wartość prawda, test captcha został poprawnie wykonany i należy kontynuować przetwarzanie formularza.$resp->is_valid
ma wartość false (fałsz), użytkownik nie podał poprawnego tekstu z obrazka captcha. Musisz ponownie wyświetlić formularz, aby umożliwić mu kolejną próbę. W tym przypadku
$resp->error
jest kodem błędu, który można przekazać do recaptcha_get_html
.
Po przekazaniu kodu błędu element sterujący reCAPTCHA wyświetla komunikat z wyjaśnieniem, że użytkownik wpisał tekst nieprawidłowo i powinien spróbować ponownie.Zwróć uwagę, że ten kod prosi o klucz prywatny, którego nie należy mylić z kluczem publicznym. Znajdziesz go na tej samej stronie co klucz publiczny.
Sprawdź też, czy formularz jest ustawiony tak, aby pobierał zmienne formularza za pomocą metody $_POST zamiast $_REQUEST, oraz czy sam formularz korzysta z metody POST.
To wszystko! reCAPTCHA powinno już działać w Twojej witrynie.
Dalsza lektura
Przewodnik po wtyczce PHP
Poniżej znajdziesz wyczerpującą listę wszystkich metod wtyczki reCAPTCHA PHP.
Funkcja recaptcha_get_html
Funkcja recaptcha_get_html
wyświetla kod HTML przedstawiający reCAPTCHA użytkownikowi.
recaptcha_get_html | |
Parametr | |
$pubkey -- string. required. | Twój klucz publiczny reCAPTCHA ze strony rejestracji interfejsu API, |
$error -- string. optional (wartość domyślna to wartość null) | Jeśli ten ciąg znaków jest ustawiony, w obszarze reCAPTCHA będzie wyświetlany kod błędu. Ten kod błędu pochodzi z ReCaptchaResponse->$error |
$use_ssl – wartość logiczna. opcjonalnie (wartość domyślna to fałsz) | Czy należy używać interfejsu API opartego na protokole SSL? Jeśli wyświetlasz stronę przez SSL, pamiętaj, aby ustawić wartość Prawda, aby w przeglądarce użytkownika nie było wyświetlane okno błędu. |
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, w tym odpowiedź na zadanie CAPTCHA, musimy sprawdzić jego odpowiedź w przesłanym formularzu za pomocą funkcji recaptcha_check_answer
. Odpowiedź użytkownika pojawi się w 2 polach formularza: recaptcha_challenge_field
i recaptcha_response_field
. Biblioteka reCAPTCHA wyśle żądanie HTTP do serwera reCAPTCHA i sprawdzi odpowiedź użytkownika.
recaptcha_check_answer | |
Parametr | |
$privkey -- string. wymagany. | Twój klucz prywatny reCAPTCHA ze strony rejestracji interfejsu API. |
$remoteip – ciąg znaków. wymagany. | Adres IP użytkownika w formacie 192.168.0.1 |
$challenge -- ciąg. wymagany. |
Wartość pola formularza recaptcha_challenge_field |
$response -- string. required | Wartość pola formularza recaptcha_response_field; |
Zwracana wartość | Instancja klasy ReCaptchaResponse |
ReCaptchaResponse | |
Pole | |
$is_valid – wartość logiczna | Czy reCAPTCHA uważał, że odpowiedź jest poprawna? |
$error – ciąg znaków | Jeśli odpowiedź była nieprawidłowa, jaki był problem? Tego kodu błędu można użyć w żądaniu recaptcha_get_html. |
Zwracana wartość | Kod HTML lub nieprzetworzony adres URL do zdekodowania adresu e-mail w zależności od wywołanej funkcji. |
Mailhide
Biblioteka PHP reCAPTCHA zawiera powiązania interfejsu API Mailhide. Ten interfejs API pozwala opakować adres e-mail w reCAPTCHA, aby uniemożliwić spamerom jego wyświetlenie: egzamin...@example.com.
Część Mailhide biblioteki PHP wymaga modułu mcrypt PHP.
Interfejs Mailhide API składa się z 2 funkcji recaptcha_mailhide_html
i recaptcha_mailhide_url
. Funkcje mają te same parametry. Wersja _html zwraca kod HTML,
który możesz umieścić bezpośrednio na stronie. Przekazywana część e-maila z nazwą użytkownika jest obcięta i zastępowana linkiem wywołującym Mailhide. Wersja z zastosowaniem _url udostępnia adres URL do zdekodowania e-maila i pozostawia tylko możliwość umieszczenia go w kodzie HTML.
recaptcha_mailhide_url / recaptcha_mailhide_html; | |
Parametr | |
$pubkey – ciąg znaków | Klucz publiczny Mailhide ze strony rejestracji |
$privkey -- ciąg | Klucz prywatny Mailhide ze strony rejestracji |
$email – ciąg | Adres e-mail, który chcesz ukryć. |
Ten przykład pokazuje, jak korzystać z 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>