LLMS_Google_Recaptcha::validate( $valid )
Contents
Source Source
File: includes/spam/class-llms-recaptcha.php
public function validate( $valid ) {
if ( ! $this->is_enabled() ) {
return $valid;
}
// If $valid is already a truthy, return early since something else already encountered a validation issue.
if ( $valid ) {
return $valid;
}
$token = isset( $_POST['g-recaptcha-response'] )
? sanitize_text_field( wp_unslash( $_POST['g-recaptcha-response'] ) )
: '';
if ( ! $token ) {
if ( apply_filters( 'llms_enable_recaptcha_logs', false ) ) {
error_log( 'LifterLMS form blocked due to missing captcha' );
}
llms_add_notice( __( 'CAPTCHA token missing, please refresh and try again.', 'lifterlms' ), 'error' );
return true;
}
$response = wp_remote_post(
'https://www.google.com/recaptcha/api/siteverify',
array(
'body' => array(
'secret' => $this->secret_key,
'response' => $token,
'remoteip' => $_SERVER['REMOTE_ADDR'] ?? '',
),
'timeout' => 15,
)
);
$body = ! is_wp_error( $response ) ? json_decode( wp_remote_retrieve_body( $response ), true ) : null;
$passed = $body
&& ! empty( $body['success'] )
&& $body['score'] >= $this->min_score
&& ( empty( $body['action'] ) || $body['action'] === $this->action ); // action check is optional but recommended
if ( ! $passed ) {
if ( apply_filters( 'llms_enable_spam_logs', false ) ) {
error_log( 'LLMS_Google_Recaptcha verification failed: ' . ( $body ? print_r( $body, true ) : '' ) );
}
llms_add_notice( __( 'CAPTCHA validation failed — please try again.', 'lifterlms' ), 'error' );
return true;
}
// We're okay to proceed.
return $valid;
}
Expand full source code Collapse full source code View on GitHub