PluginProbe
Contact Forms by Cimatti / 2.3.0
Contact Forms by Cimatti v2.3.0
2.3.6 2.3.5 2.3.0 2.2.32 2.2.4 2.2.0 2.1.2 2.1.1 trunk 1.0 1.1 1.2 1.2.1 1.3 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.3.7 1.3.8 1.3.9 1.4.0 1.4.1 All 62 releases
contact-forms / classes / Validation / Captcha2b.php

Captcha2b.php in Contact Forms by Cimatti 2.3.0, at classes/Validation/Captcha2b.php

58 lines 1.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * reCAPTCHA v2 Validation
4 *
5 * Extends AccuaForm_Validation_CaptchaSpam: a failed verification follows the
6 * per-form spam action (reject with a visible error, or accept silently and
7 * flag the submission as spam — see the base class for the contract).
8 *
9 * @package Contact Forms
10 */
11
12 // phpcs:disable WordPress.Security.NonceVerification, WordPress.Security.ValidatedSanitizedInput -- Server-side CAPTCHA validation requires POST data
13
14 class AccuaForm_Validation_Captcha2b extends AccuaForm_Validation_CaptchaSpam {
15 protected $message = 'Error: The reCAPTCHA response provided was incorrect. Please retry.';
16
17 public function isValid( $value ) {
18 if ( ! isset( $_POST['g-recaptcha-response'] ) ) {
19 return $this->failed();
20 }
21
22 $response = stripslashes_deep( $_POST['g-recaptcha-response'] );
23
24 if ( '' === $response ) {
25 return $this->failed();
26 }
27
28 $verify_url = 'https://www.google.com/recaptcha/api/siteverify';
29
30 $verify_data = array(
31 'secret' => $this->privateKey,
32 'response' => $response,
33 'remoteip' => isset( $_SERVER['REMOTE_ADDR'] ) ? sanitize_text_field( wp_unslash( $_SERVER['REMOTE_ADDR'] ) ) : '',
34 );
35
36 $response_obj = wp_remote_post(
37 $verify_url,
38 array(
39 'body' => $verify_data,
40 'timeout' => 20,
41 )
42 );
43
44 if ( is_wp_error( $response_obj ) ) {
45 return $this->failed();
46 }
47
48 $body = wp_remote_retrieve_body( $response_obj );
49 $result = json_decode( $body, true );
50
51 if ( ! empty( $result['success'] ) ) {
52 return true;
53 }
54
55 return $this->failed();
56 }
57 }
58