Трудно сказать, где у вас возникла проблема.Ваш текущий код всегда будет echo
своего рода сообщением (хотя, возможно, вам требуется, чтобы сообщение отображалось, успех или неудача).
Если вы говорите, что не можете if($responseData->success){
правильно отобразитьподтвердите флажок, я бы порекомендовал вам взглянуть на данные ответа с помощью var_dump($responseData)
и посмотреть, если Google пытается вам что-то сказать (неверный секретный ключ, имя домена и т. д.).
В качестве альтернативного подхода вы можете использовать библиотеку Google PHP reCaptcha в качестве более простого метода для решения этой ситуации - мой код, например:
function validateRecaptcha(?String $gRecaptchaResponse) {
/* API source from: https://github.com/google/recaptcha */
$recaptcha = new ReCaptcha\ReCaptcha(***SECRET HERE***);
$resp = $recaptcha->verify($gRecaptchaResponse, $_SERVER['REMOTE_ADDR']);
return $resp->isSuccess();
}
PS: будьте осторожны, используя empty
для проверки ввода пользователя.Если пользователь решил отправить сообщение, содержащее только 0
, проверка if(...|| empty($message)){
не удалась бы.
См .: https://www.php.net/manual/en/function.empty.php