Я установил ReCaptcha, настроил свой общедоступный и закрытый ключ, и все в порядке, пока я не наберу на нем никакого ответа, независимо от того, хорошо это или нет, он даже не реагирует на возникшую ошибку.
Вот мой код:
require_once('recaptchalib.php'); $resp = recaptcha_check_answer ($config->privkey, $_SERVER["REMOTE_ADDR"], $_POST["recaptcha_challenge_field"], $_POST["recaptcha_response_field"]); if (!$resp->is_valid) { echo $resp->error; }
Я нашел ответ после нескольких дней поиска …
Вот решение, если у кого-то есть аналогичная проблема:
В вашем изменении rechaptchalib.php
:
define("RECAPTCHA_API_SERVER", "http://api.recaptcha.net"); define("RECAPTCHA_API_SECURE_SERVER", "https://api-secure.recaptcha.net"); define("RECAPTCHA_VERIFY_SERVER", gethostbyname('api-verify.recaptcha.net'));
К:
define("RECAPTCHA_API_SERVER", "http://www.google.com/recaptcha/api"); define("RECAPTCHA_API_SECURE_SERVER", "https://www.google.com/recaptcha/api"); define("RECAPTCHA_VERIFY_SERVER", "www.google.com");
Вероятно, это вызвано устаревшей библиотекой PHP, поэтому вам будет лучше загрузить последнюю библиотеку:
http://code.google.com/p/recaptcha/downloads/list?q=label:phplib-Latest
Всем спасибо.
Вы должны иметь открытый ключ в файле формы и закрытый ключ в файле конфигурации:
<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>
Это ваш файл, куда отправляется запрос формы:
<?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 } ?>
Дополнительную помощь можно найти по адресу : http://code.google.com/apis/recaptcha/docs/php.html.