Важно ! Версия 1.0 API reCAPTCHA больше не поддерживается, обновите ее до версии 2.0. Узнать больше
PHP-библиотека reCAPTCHA предоставляет простой способ разместить CAPTCHA на вашем веб-сайте PHP, помогая вам не дать ботам злоупотреблять ею. Библиотека является оберткой API reCAPTCHA .
Чтобы использовать reCAPTCHA с PHP, вы можете скачать PHP-библиотеку reCAPTCHA . Вам понадобится только один файл оттуда (recaptchalib.php). Остальные файлы представляют собой примеры, файлы readme и юридическую информацию — они не влияют на функциональность.
Быстрый старт
После того как вы подписались на получение ключей API, ниже приведены основные инструкции по установке reCAPTCHA на ваш сайт. Полное справочное руководство по плагину PHP можно найти ниже.
Клиентская часть (Как сделать так, чтобы изображение CAPTCHA отображалось)
Если вы хотите использовать библиотеку PHP для отображения виджета reCAPTCHA, вам необходимо вставить этот фрагмент кода внутри элемента <form>, где будет размещен виджет reCAPTCHA:
require_once('recaptchalib.php'); $publickey = "your_public_key"; // you got this from the signup page echo recaptcha_get_html($publickey);
С кодом ваша форма может выглядеть примерно так:
<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>
Не забудьте установить $publickey, заменив your_public_key
открытым ключом API.
Обратите внимание, что значение атрибута «action» — «verify.php». Теперьverify.php — это целевой файл, в который передаются значения этой формы. Поэтому вам понадобится файлverify.phpв том же месте, где находится клиентский html.
Функция require_once в приведенном выше примере ожидает, что recaptchalib.php будет находиться в том же каталоге, что и ваш файл формы. Если он находится в другом каталоге, вы должны связать его соответствующим образом. Например, если ваш recaptchalib.php находится в каталоге с именем «captcha», который находится на том же уровне, что и ваш файл формы, функция будет выглядеть так: require_once('captcha/recaptchalib.php')
.
Серверная часть (Как проверить, ввел ли пользователь правильный ответ)
Следующий код должен быть размещен в верхней части файла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 } ?>
В приведенном выше коде:
recaptcha_check_answer
возвращает объект, который показывает, успешно ли пользователь выполнил задание.$resp->is_valid
имеет значение true, значит, запрос капчи был выполнен правильно, и вам следует продолжить обработку формы.$resp->is_valid
имеет значение false, значит, пользователю не удалось предоставить правильный текст капчи, и вам следует повторно отобразить форму, чтобы дать ему еще одну попытку. В этом случае $resp->error
будет кодом ошибки, который можно передать в recaptcha_get_html
. При передаче кода ошибки элемент управления reCAPTCHA отображает сообщение, объясняющее, что пользователь ввел текст неправильно и должен повторить попытку.Обратите внимание, что этот код запрашивает закрытый ключ, который не следует путать с открытым ключом. Вы получаете это с той же страницы, что и открытый ключ.
Также убедитесь, что ваша форма настроена на получение переменных формы с использованием $_POST вместо $_REQUEST и что сама форма использует метод POST.
Вот и все! reCAPTCHA теперь должна работать на вашем сайте.
Дальнейшее чтение
Справочное руководство по плагинам PHP
Ниже приведен полный список всех методов PHP-плагина reCAPTCHA.
Функция recaptcha_get_html
Функция recaptcha_get_html
отображает HTML-код, который представляет пользователю reCAPTCHA.
recaptcha_get_html | |
Параметр | |
$pubkey -- строка. необходимый. | Ваш открытый ключ reCAPTCHA со страницы регистрации API . |
$ошибка -- строка. необязательно (по умолчанию установлено значение null) | Если эта строка установлена, в области reCAPTCHA будет отображаться указанный код ошибки. Этот код ошибки получен из ReCaptchaResponse->$error. |
$use_ssl -- логическое значение. необязательно (по умолчанию установлено значение false) | Следует ли использовать API на основе SSL? Если вы отображаете страницу пользователю через SSL, обязательно установите для этого параметра значение true, чтобы в браузере пользователя не появлялось диалоговое окно с ошибкой. |
Возвращаемое значение | Строка, содержащая HTML для размещения на веб-странице. |
Функция recaptcha_check_ответ
После того, как пользователь заполнил HTML-форму, включая ответ на CAPTCHA, мы хотим проверить его ответ при отправке формы с помощью функции recaptcha_check_answer
. Ответ пользователя будет в двух полях формы: recaptcha_challenge_field
и recaptcha_response_field
. Библиотека reCAPTCHA отправит HTTP-запрос серверу reCAPTCHA и проверит ответ пользователя.
recaptcha_check_ответ | |
Параметр | |
$privkey -- строка. необходимый. | Ваш закрытый ключ reCAPTCHA со страницы регистрации API . |
$remoteip -- строка. необходимый. | IP-адрес пользователя в формате 192.168.0.1. |
$вызов -- строка. необходимый. | Значение поля формы recaptcha_challenge_field |
$ответ -- строка. необходимый | Значение поля формы recaptcha_response_field |
Возвращаемое значение | Экземпляр класса ReCaptchaResponse. |
РеКапчаОтвет | |
Поле | |
$is_valid -- логическое значение | Считает ли reCAPTCHA ответ действительным? |
$ошибка -- строка | Если ответ неверный, в чем проблема? Этот код ошибки можно использовать в recaptcha_get_html. |
Возвращаемое значение | HTML-код или необработанный URL-адрес для декодирования адреса электронной почты, в зависимости от того, какую функцию вы вызвали. |
Мейлхайд
PHP-библиотека reCAPTCHA включает привязки для Mailhide API. Этот API позволяет вам поместить электронное письмо в reCAPTCHA, чтобы его не увидели спамеры: экзамен ... @example.com.
Для части библиотеки PHP Mailhide требуется модуль PHP mcrypt .
API Mailhide состоит из двух функций recaptcha_mailhide_html
и recaptcha_mailhide_url
. Функции имеют одинаковые параметры. Версия _html возвращает HTML, который можно разместить непосредственно на вашей веб-странице. Часть передаваемого электронного письма с именем пользователя усекается и заменяется ссылкой, вызывающей Mailhide. Версия _url дает вам URL-адрес для декодирования электронного письма и оставляет за вами право поместить электронное письмо в HTML.
recaptcha_mailhide_url / recaptcha_mailhide_html | |
Параметр | |
$pubkey -- строка | Открытый ключ Mailhide со страницы регистрации. |
$privkey -- строка | Закрытый ключ Mailhide со страницы регистрации. |
$email -- строка | Адрес электронной почты, который вы хотите скрыть. |
В следующем примере показано, как использовать 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>