Check out this link: https://developers.google.com/recaptcha/docs/verify
In a few words you should make a request
https://www.google.com/recaptcha/api/siteverify?secret=YOUR_SECRET&response=RESPONSE_CAME_FROM_YOUR_FORM&remoteip=USER_IP_ADDRESS
If YOUR_SECRET is the secret key that you received on the ReCAPTCHA website, USER_IP_ADDRESS can be obtained through the $_SERVER , and RESPONSE_CAME_FROM_YOUR_FORM is the line submitted with your form. It is stored in $_POST['g-recaptcha-response'] .
You can do this via file_get_contents($url) , e.g.
$data = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=YOUR_SECRET&response=RESPONSE_CAME_FROM_YOUR_FORM&remoteip=USER_IP_ADDRESS");
In $data you will get a JSON object containing the success field you are looking for. If success is incorrect, then this is not a person, and you must exit() . I suggest you check this out at the beginning of your program.
Update
Decoding a JSON object looks like this:
$data = json_decode($data); // This will decode JSON to object if(!$data->success) exit();
Update
Sometimes file_get_contents($url) will not be able to configure a secure https connection. Instead, you can use open_https_url($url) Make your code look like this:
<?php $your_secret = "<secret_key_you_received_from_recaptcha_site>"; $client_captcha_response = $_POST['g-recaptcha-response']; $user_ip = $_SERVER['REMOTE_ADDR']; $captcha_verify = open_https_url("https://www.google.com/recaptcha/api/siteverify?secret=$your_secret&response=$client_captcha_response&remoteip=$user_ip"); $captcha_verify_decoded = json_decode($captcha_verify); if(!$captcha_verify_decoded->success) die('DIRTY ROBOT'); $name = $_POST['name']; $email = $_POST['email']; $message = $_POST['message']; $human = $_POST['human']; $from = 'From: My Website'; $to = ' myemail@gmail.com '; $subject = 'Request Form'; $body = "Name: $name \n E-Mail: $email \nMessage:\n$message"; if ($_POST['submit']) { if ($email != '') { if ($human == '4') { if (mail ($to, $subject, $body, $from)) { echo '<p>You have successfully submitted your information to PS4RS. Subscribers to our mailing list will begin to periodically receive updates.</p>'; } else { echo '<p>Something went wrong, go back and try again!</p><p><input type="button" value="Go Back" onclick="history.back(-1)" class="goback" /></p>'; } } else if ($_POST['submit'] && $human != '4') { echo '<p>You answered the anti-spam question incorrectly!</p><p><input type="button" value="Go Back" onclick="history.back(-1)" class="goback" /></p>'; } } else { echo '<p>You need to fill in all required fields!!</p><p><input type="button" value="Go Back" onclick="history.back(-1)" class="goback" /></p>'; } } ?>
source share