Недавно клиент сказал мне, что reCAPTCHA его сайта больше не работает. После расследования я узнал, что Google изменил его. Я обновил их сайт, используя новую документацию от 19 ноября 2014 года, но она всегда выдает ошибку 403. Я попытался отправить только секретный ключ, и это вернуло JSON-результат с ошибкой и ошибкой. Я сделал то же самое, просто отправив ответ из поля g-recaptcha-response, и он также вернул JSON-результат с ошибкой. Как только я помещаю их в строку, используя http_build_query, я получаю 403 запрета от Google.
Я использую новый http://www.google.com/recaptcha/api/siteverify URL. Я отправляю на него, используя PHP cURL, используя следующий код:
$post_data = array('response'=>$response, 'secret'=>$privatekey);
$curlPost = http_build_query($post_data, '', '&');
$ch = curl_init();
//Set the URL of the page or file to download.
$url = 'http://www.google.com/recaptcha/api/siteverify';
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
$data_json = curl_exec($ch);
Любая помощь будет принята с благодарностью.
Вы должны использовать https, поэтому правильный URL-адрес:
$url = 'https://www.google.com/recaptcha/api/siteverify';
Это должно исправить ошибку 403.
Других решений пока нет …