gckmac Posted April 28, 2009 Share Posted April 28, 2009 I am trying to add a captcha from reCaptcha.net (Carnegie Mellon project) to an error submission form. I have succeeded in getting the captcha input form to show. However, I cannot get the captcha process code to work. Can someone point out WHERE on this form it would go? (You will see the captcha input code, which is fine). <?php require_once("../scripts/dbinfo.php"); $tplpath = "../scripts/tpl"; $link = mysql_connect($server, $userid, $password); mysql_select_db($db, $link); if (isset($_GET['id'])) { $id = $_GET['id']; $type = $_GET['type']; if ($type == "event") { $checkquery = "select title from maine_festivals where id = '$id'"; $title = "Report Update"; } else { $checkquery = "select name from maine_hotels where id = '$id'"; $title = "Report Error"; } $checkresult = mysql_query($checkquery, $link); $row = mysql_fetch_array($checkresult); $propertyname = $row[0]; $from_url = $_SERVER['HTTP_REFERER']; } if (isset($_POST['signup']) && $_POST['signup'] == "Submit") { $msg = quote_smart($_POST['msg']); $email = quote_smart($_POST['email']); $from_url = $_POST['from_url']; $propertyname = $_POST['propertyname']; $subject = "Error Report about $propertyname"; $body = $msg; if ($email != "") { $body .= "\n Reported by $email"; } $body .= "\nURL: $from_url"; $headers = 'From: report.error@maine.info' . "\r\n"; mail("gckorn@gmail.com", $subject, $body, $headers); header("Location: $from_url"); } function tpl_head() { global $tplpath; global $title; echo <<<tpl <title>Maine.info - $title</title> <!-- PUT THIS TAG IN THE head SECTION --> <script type="text/javascript" src="http://partner.googleadservices.com/gampad/google_service.js"> </script> <script type="text/javascript"> GS_googleAddAdSenseService("ca-pub-xxx"); GS_googleEnableAllServices(); </script> <script type="text/javascript"> GA_googleAddSlot("ca-pub-xxx", "Maine_General_LHS_120x60"); GA_googleAddSlot("ca-pub-xxx", "Maine_General_LHS_120x600_1st"); GA_googleAddSlot("ca-pub-xxx", "Maine_General_LHS_120x600_2nd"); GA_googleAddSlot("ca-pub-xxx", "Maine_General_LHS_120x90"); GA_googleAddSlot("ca-pub-xxx", "Maine_General_RHS_300x250_1st"); GA_googleAddSlot("ca-pub-xxx", "Maine_General_RHS_300x250_2nd"); GA_googleAddSlot("ca-pub-xxx", "Maine_General_TOP_468x60"); </script> <script type="text/javascript"> GA_googleFetchAds(); </script> <!-- END OF TAG FOR head SECTION --> <link rel="stylesheet" type="text/css" media="screen" href="$tplpath/cmxforms/cmxform.css" /> <link rel="stylesheet" type="text/css" media="screen" href="$tplpath/cmxforms/cmxformTemplate.css" /> <script src="$tplpath/jquery/jquery.pack.js" type="text/javascript"></script> <script src="$tplpath/cmxforms/cmxforms.js" type="text/javascript"></script> <script src="$tplpath/jquery/jquery.validate.pack.js" type="text/javascript"></script> <script src="$tplpath/jquery/jquery.metadata.js" type="text/javascript"></script> <script type="text/javascript"> /* $().ready(function() { // validate the comment form when it is submitted $("#signupform").validate({ rules: { email: { required: true, email: true } }, messages: { email: "Please enter a valid email address" } }); }); */ </script> <style type="text/css"> #signupform { width: 90%; margin: 25px; } #signupform label { width: 100%; /* text-align: right; */ display:block; } /*#signupform input.submit { margin-left: 183px; }*/ #signupform label.error { margin-left: 155px; width: auto; text-align: left; /* display: inline;*/ } body { min-width: 1000px; } </style> tpl; } include($tplpath . "/header.inc"); ?> <div id="LHSAd"> <!-- PUT THIS TAG IN DESIRED LOCATION OF SLOT Maine_General_LHS_120x60 --> <script type="text/javascript"> GA_googleFillSlot("Maine_General_LHS_120x60"); </script> <!-- END OF TAG FOR SLOT Maine_General_LHS_120x60 --> <!-- PUT THIS TAG IN DESIRED LOCATION OF SLOT Maine_General_LHS_120x90 --> <script type="text/javascript"> GA_googleFillSlot("Maine_General_LHS_120x90"); </script> <!-- END OF TAG FOR SLOT Maine_General_LHS_120x90 --> <!-- PUT THIS TAG IN DESIRED LOCATION OF SLOT Maine_General_LHS_120x600_1st --> <script type="text/javascript"> GA_googleFillSlot("Maine_General_LHS_120x600_1st"); </script> <!-- END OF TAG FOR SLOT Maine_General_LHS_120x600_1st --> <!-- PUT THIS TAG IN DESIRED LOCATION OF SLOT Maine_General_LHS_120x600_2nd --> <script type="text/javascript"> GA_googleFillSlot("Maine_General_LHS_120x600_2nd"); </script> <!-- END OF TAG FOR SLOT Maine_General_LHS_120x600_2nd --> </div> <div id="map"> <!-- PUT THIS TAG IN DESIRED LOCATION OF SLOT Maine_General_TOP_468x60 --> <script type="text/javascript"> GA_googleFillSlot("Maine_General_TOP_468x60"); </script> <!-- END OF TAG FOR SLOT Maine_General_TOP_468x60 --> <h1 align="center"><?=$title?></h1> <?php if ($type == "event") { $msg = "Thank you for updating our listing for <strong>$propertyname</strong>. We appreciate your time. Other folks will too."; } else { $msg = "Thank you for reporting an error in our listing for <strong>$propertyname</strong>. We appreciate your time. Other folks will too."; } ?> <p><?=$msg?></p> <form class="cmxform" id="signupform" method="post" action="reporterror.php"> <fieldset> <legend></legend> <p> <label for="msg">Describe Problem</label> <textarea id="msg" name="msg" cols="40" rows="10"></textarea> </p> <p> <label for="email">Email (Optional) </label> <input type="text" name="email" id="email" type="text" class="" /> <?php require_once("../captcha/recaptchalib.php"); $publickey = "6Le_LAYAAAAAAOuWVFAZzv-zRO_jN7km48LHHYEq"; // you got this from the signup page echo recaptcha_get_html($publickey); ?> <input type="submit" value="Submit" class="submit" id="signup" name="signup" /> </p> </fieldset> <input type = "hidden" id = "from_url" name = "from_url" value = "<?=$from_url ?>" /> <input type = "hidden" id = "propertyname" name = "propertyname" value = "<?=$propertyname ?>" /> </form> <?php ?> </div> <div id="sidebar"> <div id="ads"> <!-- PUT THIS TAG IN DESIRED LOCATION OF SLOT Maine_General_RHS_300x250_1st --> <script type="text/javascript"> GA_googleFillSlot("Maine_General_RHS_300x250_1st"); </script> <!-- END OF TAG FOR SLOT Maine_General_RHS_300x250_1st --> <!-- PUT THIS TAG IN DESIRED LOCATION OF SLOT Maine_General_RHS_300x250_2nd --> <script type="text/javascript"> GA_googleFillSlot("Maine_General_RHS_300x250_2nd"); </script> <!-- END OF TAG FOR SLOT Maine_General_RHS_300x250_2nd --> </div> </div> <?php include($tplpath . "/footer.inc"); ?> Quote Link to comment https://forums.phpfreaks.com/topic/155971-php-captcha-within-javascript-problem/ Share on other sites More sharing options...
ignace Posted April 28, 2009 Share Posted April 28, 2009 You are missing the recaptcha_check_answer() function call which returns you a response object on which you can check if the response was valid as part of your form validation. <?php $response = recaptcha_check_answer('your-secret-key', $_SERVER['REMOTE_ADDR'], $_POST['recaptcha_challenge_field'], $_POST['recaptcha_response_field']); if ($response->is_valid) { // valid captcha response } ?> The full explanation can be found on http://recaptcha.net/plugins/php/ Quote Link to comment https://forums.phpfreaks.com/topic/155971-php-captcha-within-javascript-problem/#findComment-821114 Share on other sites More sharing options...
gckmac Posted April 28, 2009 Author Share Posted April 28, 2009 Yes, I've added the process code (didn't show it before). I made progress rearranging the code. The remaining issue is that when wrong captcha is entered, the form forgets the event ID that went with it ... see code below ... <?php if ($type == "event") { $msg = "Thank you for updating our listing for <strong>$propertyname</strong>. We appreciate your time. Other folks will too."; } else { $msg = "Thank you for reporting an error in our listing for <strong>$propertyname</strong>. We appreciate your time. Other folks will too."; } ?> <p><?=$msg?></p> <form class="cmxform" id="signupform" method="post" action="reporterror.php"> <fieldset> <legend></legend> <p> <label for="msg">Describe Problem</label> <textarea id="msg" name="msg" cols="40" rows="10"></textarea> </p> <p> <label for="email">Email (Optional) </label> <input type="text" name="email" id="email" type="text" class="" /> <?php require_once("../captcha/recaptchalib.php"); $publickey = "6Le_LAYAAAAAAOuWVFAZzv-zRO_jN7km48LHHYEq"; // you got this from the signup page echo recaptcha_get_html($publickey); ?> <input type="submit" value="Submit" class="submit" id="signup" name="signup" /> </p> </fieldset> <input type = "hidden" id = "from_url" name = "from_url" value = "<?=$from_url ?>" /> <input type = "hidden" id = "propertyname" name = "propertyname" value = "<?=$propertyname ?>" /> </form> <?php if (isset($_POST['signup']) && $_POST['signup'] == "Submit") { require_once("../captcha/recaptchalib.php"); $privatekey = "xxxxxx"; $resp = recaptcha_check_answer ($privatekey, $_SERVER["REMOTE_ADDR"], $_POST["recaptcha_challenge_field"], $_POST["recaptcha_response_field"]); if (!$resp->is_valid) { die ("The reCAPTCHA wasn't entered correctly. Go back and try it again." . "(reCAPTCHA said: " . $resp->error . ")"); } ?> <?php $msg = quote_smart($_POST['msg']); $email = quote_smart($_POST['email']); $from_url = $_POST['from_url']; $propertyname = $_POST['propertyname']; $subject = "Error Report about $propertyname"; $body = $msg; if ($email != "") { $body .= "\n Reported by $email"; } $body .= "\nURL: $from_url"; $headers = 'From: report.error@maine.info' . "\r\n"; mail("gckorn@gmail.com", $subject, $body, $headers); header("Location: $from_url"); } ?> Quote Link to comment https://forums.phpfreaks.com/topic/155971-php-captcha-within-javascript-problem/#findComment-821135 Share on other sites More sharing options...
gckmac Posted April 28, 2009 Author Share Posted April 28, 2009 So the problem is basically a failure to properly loop ... 1. If captcha is correct, I come back to the captcha form and dont' tell anyone AOK (though it does submit with correct database id). 2. If captcha is incorrect, I come back to the captcha form and lose the database event ID. So if user submits again, the event it applies to is unknown. I am learning php ... but too slowly. thx, gckmac Quote Link to comment https://forums.phpfreaks.com/topic/155971-php-captcha-within-javascript-problem/#findComment-821157 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.