'; } elseif (OC_CAPTCHA_service == 'reCAPTCHA') { print '
'; } } // verify CAPTCH - returns false if verifies OK, otherwise error string function mod_captcha_verifyCAPTCHA() { if (OC_CAPTCHA_service == 'hCaptcha') { $mod_captcha_var = 'h-captcha-response'; $mod_catpcha_url = 'https://hcaptcha.com/siteverify'; } elseif (OC_CAPTCHA_service == 'reCAPTCHA') { $mod_captch_var = 'g-captcha-response'; $mod_catpcha_url = 'https://www.google.com/recaptcha/api/siteverify'; } else { err('invalid CAPTCHA'); } if (isset($_POST[$mod_captcha_var]) && !empty($_POST[$mod_captcha_var])) { $mod_catpcha_url .= '?secret=' . urlencode(OC_CAPTCHA_private_key) . '&response=' . urlencode($_POST['h-captcha-response']) . '&remoteip=' . urlencode($_SERVER['REMOTE_ADDR']); if ($response = file_get_contents($mod_catpcha_url)) { if ($responseAR = json_decode($response, true)) { if (trim($responseAR['success']) == true) { return(false); // OK } elseif (isset($responseAR['error-codes'])) { $mod_captcha_err = (is_array($responseAR['error-codes']) ? implode(',', $responseAR['error-codes']) : $responseAR['error-codes']); } else { $mod_captcha_err = 3; } } else { $mod_captcha_err = 4; } } else { $mod_captcha_err = 5; } } return( oc_('CAPTCHA verification failed') . (empty($mod_captcha_err) ? '' : (' (' . $mod_captcha_err . ')')) ); }