/ Published in: PHP
I was asked to add Recaptcha' to an already existing form. I didn't want to interfere with the code so I decided to search for some sort of AJAX solution. Here's my implementation of DarkSideOfTheCarton.com. This form needs to have a form with
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
<script type="text/javascript" charset="utf-8" src="/location/to/jquery.1.3.1.min.js"></script> <script type="text/javascript" charset="utf-8"> //Validate the Recaptcha' Before continuing with POST ACTION function validateCaptcha() { challengeField = $("input#recaptcha_challenge_field").val(); responseField = $("input#recaptcha_response_field").val(); //console.log(challengeField); //console.log(responseField); //return false; var html = $.ajax({ type: "POST", url: "/location/to/ajax.recaptcha.php", data: "recaptcha_challenge_field=" + challengeField + "&recaptcha_response_field=" + responseField, async: false }).responseText; //console.log( html ); if(html == "success") { //Add the Action to the Form $("form").attr("action", "http://action/to/the/form_handler"); //Indicate a Successful Captcha $("#captchaStatus").html("Success!"); // Uncomment the following line in your application return true; } else { $("#captchaStatus").html("The security code you entered did not match. Please try again."); Recaptcha.reload(); return false; } } </script> <?php /* ** @Title: Recaptcha Validation ** @Date Modified: 6/01/09 ** Instructions: This code lives within the form. Generally above the <SUBMIT> button */ //A.This div notifies the user whether the Recaptcha was Successful or not echo "\n\t" . '<div id="captchaStatus" style="color:red;font-size:12px"></div>'; //B. This script provides Recaptcha with a Theme echo "\n\t" .'<script type="text/javascript" charset="utf-8">'; echo "\n\t" .'var RecaptchaOptions = { theme: "clean" };'; echo "\n\t" . '</script>' . "\n"; //C. Require the Recaptcha Library require_once('/location/to/recaptchalib.php'); //D. READ ME! $publickey = "RECAPTCHA_PUBLIC_KEY" recaptcha_get_html( $publickey ); ?> <?php /* ** @Title: Recaptcha Validation ** @Date Modified: 6/01/09 ** Instructions: Place this code in a file called "ajax.recaptcha.php" */ //A. Load the Recaptcha Libary require_once('/location/to/recaptchalib.php'); $privatekey = "RECAPTCHA_PRIVATE_KEY"; //B. Recaptcha Looks for the POST to confirm $resp = recaptcha_check_answer ($privatekey, $_SERVER["REMOTE_ADDR"], $_POST["recaptcha_challenge_field"], $_POST["recaptcha_response_field"]); //C. If if the User's authentication is valid, echo "success" to the Ajax if ($resp->is_valid) { echo "success"; } else { "(reCAPTCHA said: " . $resp->error . ")"); } ?>