Проверка прохождения капчи Гугла (Google reCAPTCHA)

12 марта 2018
Гугловская капча: https://developers.google.com/recaptcha/
API: https://developers.google.com/recaptcha/docs/verify

/**
 * Проверяет прохождение защиты от ботов Google Recaptcha
 * Описание API https://developers.google.com/recaptcha/docs/verify
 *
 * @param string $recaptcha_secret - секретный код сайта, выдаваемый при подключении сайта к сервису капчи
 * @param string $recaptcha_response - ответный код капчи
 *
 * @return bool - вернёт 'true', если проверка выполнена успешно и 'false' - в противном случае
 */
function vb_google_captcha_verif($recaptcha_secret, $recaptcha_response)
{
	$post_params = array(
		'secret' => $recaptcha_secret,
		'response' => $recaptcha_response,
	);

	$ch = curl_init();
	curl_setopt($ch, CURLOPT_URL, 'https://www.google.com/recaptcha/api/siteverify');
	curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3');
	curl_setopt($ch, CURLOPT_HEADER, false);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
	curl_setopt($ch, CURLOPT_POST, true);
	curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post_params));
	curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
	curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
	curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);  /* количество секунд ожидания при попытке соединения */
	$str_result = curl_exec($ch);
	curl_close($str_result);
	$ar_res = json_decode($str_result, true);
	if(is_array($ar_res)==false) $ar_res = array();

	if(isset($ar_res['success']) && $ar_res['success']=='true') return true;
	else return false;
}